diff --git a/images/docker-kimai/index.html b/images/docker-kimai/index.html index 0709fe579..4d3d3bee9 100644 --- a/images/docker-kimai/index.html +++ b/images/docker-kimai/index.html @@ -89,4 +89,4 @@ --pull \ -t lscr.io/linuxserver/kimai:latest .

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset
-

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

\ No newline at end of file +

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

\ No newline at end of file diff --git a/images/docker-series-troxide/index.html b/images/docker-series-troxide/index.html index a7de8b2cc..8a163b8c5 100644 --- a/images/docker-series-troxide/index.html +++ b/images/docker-series-troxide/index.html @@ -48,4 +48,4 @@ --pull \ -t lscr.io/linuxserver/series-troxide:latest .

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset
-

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

\ No newline at end of file +

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

\ No newline at end of file diff --git a/images/docker-unifi-network-application/index.html b/images/docker-unifi-network-application/index.html index 7354bf8eb..a6858b44a 100644 --- a/images/docker-unifi-network-application/index.html +++ b/images/docker-unifi-network-application/index.html @@ -89,4 +89,4 @@ --pull \ -t lscr.io/linuxserver/unifi-network-application:latest .

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset
-

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

\ No newline at end of file +

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

Versions

\ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json index fb1a8af31..4e587fd6b 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Introduction","text":"

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.

"},{"location":"#want-to-get-hold-of-the-team","title":"Want to get hold of the team?","text":"

The team resides primarily in our Discord server. We also have a forum if chat isn't your thing.

Where Link Discord https://discord.gg/YWrKVTn Forum https://discourse.linuxserver.io

For those interested in our CI environment via Jenkins: https://ci.linuxserver.io/

"},{"location":"FAQ/","title":"FAQ","text":"

Here resides some Frequently Asked Questions.

"},{"location":"FAQ/#jammy","title":"My host is incompatible with images based on Ubuntu Jammy","text":"

Some x86_64 hosts running older versions of the Docker engine are not compatible with some images based on Ubuntu Jammy.

"},{"location":"FAQ/#symptoms","title":"Symptoms","text":"

If your host is affected you may see errors in your containers such as:

ERROR - Unable to determine java version; make sure Java is installed and callable\n

Or

Failed to create CoreCLR, HRESULT: 0x80070008\n

Or

WARNING :: MAIN : webStart.py:initialize:249 : can't start new thread\n
"},{"location":"FAQ/#resolution","title":"Resolution","text":""},{"location":"FAQ/#long-term-fix","title":"Long-Term Fix","text":"

Upgrade your Docker engine to at least version 20.10.10. Refer to the official Docker docs for installation/update details.

"},{"location":"FAQ/#short-term-fix","title":"Short-Term Fix","text":"

For Docker CLI, run your container with:

--security-opt seccomp=unconfined

For Docker Compose, run your container with:

security_opt:\n    - seccomp=unconfined\n
"},{"location":"FAQ/#rdesktop","title":"My host is incompatible with images based on rdesktop","text":"

Some x86_64 hosts have issues running rdesktop based images even with the latest Docker version due to syscalls that are unknown to Docker.

"},{"location":"FAQ/#symptoms_1","title":"Symptoms","text":"

If your host is affected you may see errors in your containers such as:

Failed to close file descriptor for child process (Operation not permitted)\n
"},{"location":"FAQ/#resolution_1","title":"Resolution","text":"

For Docker CLI, run your container with:

--security-opt seccomp=unconfined

For Docker Compose, run your container with:

    security_opt:\n    - seccomp=unconfined\n
"},{"location":"FAQ/#libseccomp","title":"My host is incompatible with images based on Ubuntu Focal and Alpine 3.13 and later","text":"

This only affects 32 bit installs of distros based on Debian Buster.

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.

A GitHub issue tracking this

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).

"},{"location":"FAQ/#resolution_2","title":"Resolution","text":"

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.

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.

"},{"location":"FAQ/#manual-patch","title":"Manual patch","text":"

Manually install an updated version of the library with dpkg.

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

Info

This url may have been updated. Find the latest by browsing here.

"},{"location":"FAQ/#automatic-patch","title":"Automatic Patch","text":"

Add the backports repo for DebianBuster. As seen here.

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
"},{"location":"FAQ/#move-to-a-compatible-os","title":"Move to a compatible OS","text":"

Reinstall/update your OS to a version that still gets updates.

Info

RaspberryPI OS (formerly Raspbian) Can be upgraded to run with a 64bit kernel

"},{"location":"FAQ/#symptoms_2","title":"Symptoms","text":""},{"location":"FAQ/#storage","title":"My host filesystem is incompatible with my docker storage driver","text":"

Some host file systems types are not compatible with the default storage driver of docker (overlay2)

"},{"location":"FAQ/#symptoms_3","title":"Symptoms","text":"

If your host is affected you may see errors in your containers such as:

ERROR Found no accessible config files\n

or

Directory not empty. This directory contains an empty ignorecommands sub-directory\n
"},{"location":"FAQ/#resolution_3","title":"Resolution","text":"

As shown in Docker docs

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.

"},{"location":"FAQ/#lscr","title":"What is lscr.io","text":"

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).

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).

We have some blog posts related to how we utilize Scarf:

"},{"location":"FAQ/#lscr-no-connect","title":"I cannot connect to lscr.io","text":"

Due to the nature of Scarf as a Docker gateway which gathers usage metrics, some overzealous privacy-focused blocklists will include its domains.

If you want to help us in getting a better overview of how people use our containers, you should add gateway.scarf.sh to the allowlist in your blocklist solution.

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.

If Scarf is on the blocklist, you will get an error message like this when trying to pull an image:

Error response from daemon: Get \"https://lscr.io/v2/\": dial tcp: lookup lscr.io: no such host\n

This is, however, a generic message. To rule out a service-interruption, you should also see if you can resolve the backend provider.

Using dig:

dig ghcr.io +short\ndig lscr.io +short\n

Using nslookup:

nslookup ghcr.io\nnslookup lscr.io\n

If you only got a response from ghcr, chances are that Scarf is on the blocklist.

"},{"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":"

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.

Create a ServerTransport in your dynamic Traefik configuration; we are calling ours ignorecert.

    http:\n      serversTransports:\n        ignorecert:\n          insecureSkipVerify: true\n

Then on our foo service we tell it to use this rule, as well as telling Traefik the backend is running on https.

    - traefik.http.services.foo.loadbalancer.serverstransport=ignorecert\n    - traefik.http.services.foo.loadbalancer.server.scheme=https\n
"},{"location":"deprecated_images/docker-airsonic/","title":"airsonic","text":""},{"location":"deprecated_images/docker-airsonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-airsonic/#linuxserverairsonic","title":"linuxserver/airsonic","text":"

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.

"},{"location":"deprecated_images/docker-airsonic/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/airsonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-airsonic/#application-setup","title":"Application Setup","text":"

Access WebUI at <your-ip>:4040.

Default user/pass is admin/admin

Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\". For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes.

Note that if you want to use Airsonic's Java jukebox player, then PGID will need to match the group of your sound device (e.g. /dev/snd).

"},{"location":"deprecated_images/docker-airsonic/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-airsonic/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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=<URL_BASE> #optional\n      - JAVA_OPTS=<options> #optional\n    volumes:\n      - </path/to/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
"},{"location":"deprecated_images/docker-airsonic/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
docker run -d \\\n  --name=airsonic \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e CONTEXT_PATH=<URL_BASE> `#optional` \\\n  -e JAVA_OPTS=<options> `#optional` \\\n  -p 4040:4040 \\\n  -v </path/to/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\n
"},{"location":"deprecated_images/docker-airsonic/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-airsonic/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 WebUI"},{"location":"deprecated_images/docker-airsonic/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=<URL_BASE> For setting url-base in reverse proxy setups. JAVA_OPTS=<options> For passing additional java options."},{"location":"deprecated_images/docker-airsonic/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media."},{"location":"deprecated_images/docker-airsonic/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/snd 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-airsonic/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-airsonic/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-airsonic/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-airsonic/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-airsonic/#versions","title":"Versions","text":""},{"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":"

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

"},{"location":"deprecated_images/docker-baseimage-alpine-python/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Alpine linux, python2 and S6 overlay..

Featuring :-

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.\" }

"},{"location":"deprecated_images/docker-baseimage-cloud9/","title":"baseimage-cloud9","text":""},{"location":"deprecated_images/docker-baseimage-cloud9/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-baseimage-cloud9/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Ubuntu linux and Cloud9..

The following line is only in this repo for loop testing:

"},{"location":"deprecated_images/docker-baseimage-guacgui/","title":"baseimage-guacgui","text":""},{"location":"deprecated_images/docker-baseimage-guacgui/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-baseimage-guacgui/#contact-information","title":"Contact information:","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum"},{"location":"deprecated_images/docker-baseimage-guacgui/#linuxserverdocker-baseimage-guacgui","title":"linuxserver/docker-baseimage-guacgui","text":"

A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox * guacamole

"},{"location":"deprecated_images/docker-baseimage-guacgui/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/docker-baseimage-guacgui should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-baseimage-guacgui/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container.

"},{"location":"deprecated_images/docker-baseimage-guacgui/#docker","title":"docker","text":"
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 </path/to/appdata>:/config \\\n  --restart unless-stopped \\\n  linuxserver/docker-baseimage-guacgui\n
"},{"location":"deprecated_images/docker-baseimage-guacgui/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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      - </path/to/appdata>:/config\n    ports:\n      - 8080:8080\n      - 3389:3389\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-baseimage-guacgui/#parameters","title":"Parameters","text":"

Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

Parameter Function -p 8080 Allows HTTP access to the internal X server. -p 3389 Allows RDP access to the internal X server. -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London -e APPNAME=xclock Specify the graphical application name shown on RDP access. -e GUAC_USER=abc Specify the username for guacamole's web interface. -e GUAC_PASS=900150983cd24fb0d6963f7d28e17f72 Specify the password's md5 hash for guacamole's web interface. -e GUAC_KEYBOARD_LAYOUT=de-de-qwertz 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). -v /config Contains X user's home directory contents.

"},{"location":"deprecated_images/docker-baseimage-guacgui/#application-setup","title":"Application Setup","text":"

This is a baseimage meant to be used as base for graphical applications. Please refer to the example folder for usage. \u00a0 If GUAC_USER and GUAC_PASS are not set, there is no authentication. Passwords can be generated via the following:

echo -n password | openssl md5\n
printf '%s' password | md5sum\n
Please beware this image is not hardened for internet usage. Use a reverse ssl proxy to increase security.

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.\" }

"},{"location":"deprecated_images/docker-baseimage-gui/","title":"baseimage-gui","text":""},{"location":"deprecated_images/docker-baseimage-gui/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-baseimage-gui/#contact-information","title":"Contact information:","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum"},{"location":"deprecated_images/docker-baseimage-gui/#linuxserverdocker-baseimage-gui","title":"linuxserver/docker-baseimage-gui","text":"

A custom graphical base image built with: * Ubuntu cloud image * S6 overlay * xrdp * xorgxrdp * openbox

"},{"location":"deprecated_images/docker-baseimage-gui/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lsiobase/nginx should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-baseimage-gui/#usage","title":"Usage","text":"

Here is an example to help you get started creating a graphical container.

"},{"location":"deprecated_images/docker-baseimage-gui/#dockerfile","title":"Dockerfile","text":"
#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&& apt-get -y upgrade \\\n&& apt-get install -qy --no-install-recommends \\\n   firefox \\\n&& apt-get clean -y \\\n&& apt-get autoremove -y \\\n&& rm -rf /tmp/* /var/tmp/* \\\n&& rm -rf /var/lib/apt/lists/*\n\nCOPY root /\n
"},{"location":"deprecated_images/docker-baseimage-gui/#servicefile","title":"servicefile","text":"
#!/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
"},{"location":"deprecated_images/docker-baseimage-gui/#access-the-graphical-interface","title":"Access the Graphical Interface","text":"

Use an RDP client such as: * Remmina * Microsoft Remote Deskotp Client

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.\" }

"},{"location":"deprecated_images/docker-baseimage-mono/","title":"baseimage-mono","text":""},{"location":"deprecated_images/docker-baseimage-mono/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

See our Duplicati image for an example using mono: https://github.com/linuxserver/docker-duplicati

"},{"location":"deprecated_images/docker-baseimage-mono/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Ubuntu cloud image, mono and S6 overlay..

Featuring :-

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.\" }

"},{"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":"

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

"},{"location":"deprecated_images/docker-baseimage-rdesktop-web/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Ubuntu linux and xrdp

The following line is only in this repo for loop testing:

"},{"location":"deprecated_images/docker-baseimage-rdesktop/","title":"baseimage-rdesktop","text":""},{"location":"deprecated_images/docker-baseimage-rdesktop/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-baseimage-rdesktop/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord IRC freenode at #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Ubuntu linux and xrdp

The following line is only in this repo for loop testing:

"},{"location":"deprecated_images/docker-booksonic/","title":"booksonic","text":""},{"location":"deprecated_images/docker-booksonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-booksonic/#linuxserverbooksonic","title":"linuxserver/booksonic","text":"

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.

"},{"location":"deprecated_images/docker-booksonic/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/booksonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-booksonic/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

Tag Description latest Stable Booksonic releases prerelease Booksonic Pre-releases"},{"location":"deprecated_images/docker-booksonic/#application-setup","title":"Application Setup","text":"

Default user/pass is admin/admin

"},{"location":"deprecated_images/docker-booksonic/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-booksonic/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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      - </path/to/appdata/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
"},{"location":"deprecated_images/docker-booksonic/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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 </path/to/appdata/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\n
"},{"location":"deprecated_images/docker-booksonic/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-booksonic/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 Application WebUI"},{"location":"deprecated_images/docker-booksonic/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=url-base Base url for use with reverse proxies etc."},{"location":"deprecated_images/docker-booksonic/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /audiobooks Audiobooks. /podcasts Podcasts. /othermedia 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-booksonic/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-booksonic/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-booksonic/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-booksonic/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-booksonic/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-cardigann/","title":"cardigann","text":""},{"location":"deprecated_images/docker-cardigann/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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.

"},{"location":"deprecated_images/docker-cardigann/#linuxservercardigann","title":"linuxserver/cardigann","text":"

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.

"},{"location":"deprecated_images/docker-cardigann/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/cardigann should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-cardigann/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-cardigann/#docker","title":"docker","text":"
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 <path to data>:/config \\\n  --restart unless-stopped \\\n  linuxserver/cardigann\n
"},{"location":"deprecated_images/docker-cardigann/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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      - <path to data>:/config\n    ports:\n      - 5060:5060\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-cardigann/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-cardigann/#ports-p","title":"Ports (-p)","text":"Parameter Function 5060 The port for the Cardigann webinterface"},{"location":"deprecated_images/docker-cardigann/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation SOCKS_PROXY=IP:PORT for using a socks proxy (optional) HTTP_PROXY=IP:PORT for using a HTTP proxy (optional)"},{"location":"deprecated_images/docker-cardigann/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Cardigann config"},{"location":"deprecated_images/docker-cardigann/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-cardigann/#application-setup","title":"Application Setup","text":"

Access the webui at <your-ip>:5060, for more information check out Cardigann.

By adding a variable to the run command, SOCKS_PROXY or HTTP_PROXY cardigann can be used with a proxy, eg -e SOCKS_PROXY=localhost:1080

The folder /config/definitions can be used to add additional tracker definitions (for more info see Additional definitions ).

"},{"location":"deprecated_images/docker-cardigann/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-cardigann/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-chevereto/","title":"chevereto","text":""},{"location":"deprecated_images/docker-chevereto/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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/

"},{"location":"deprecated_images/docker-chevereto/#linuxserverchevereto","title":"linuxserver/chevereto","text":"

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.

"},{"location":"deprecated_images/docker-chevereto/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/chevereto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-chevereto/#application-setup","title":"Application Setup","text":"

Chevereto-Free now has a maintainer!

~~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.~~

Access the WebUI at :443. For more information, check out Chevereto Free.

Chevereto requires a MariaDB database, we have an image available here if you require it.

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 set_real_ip_from to match the IP address/address block of your proxy server(s).

"},{"location":"deprecated_images/docker-chevereto/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-chevereto/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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=<yourrootpass>\n      - MYSQL_DATABASE=chevereto\n      - MYSQL_USER=chevereto\n      - MYSQL_PASSWORD=<yourdbpass>\n    volumes:\n      - /path/to/config:/config\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-chevereto/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
docker run -d \\\n  --name=chevereto \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=<TZ> \\\n  -p 80:80 \\\n  -p 443:443 \\\n  -v <path to config on host>:/config \\\n  -v <path to data on host>:/data \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/chevereto:latest\n
"},{"location":"deprecated_images/docker-chevereto/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-chevereto/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"deprecated_images/docker-chevereto/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=<TZ> Timezone (i.e., America/New_York)"},{"location":"deprecated_images/docker-chevereto/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config config directory volume mapping /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-chevereto/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-chevereto/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-chevereto/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-chevereto/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-chevereto/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-clarkson/","title":"clarkson","text":""},{"location":"deprecated_images/docker-clarkson/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-clarkson/#linuxserverclarkson","title":"linuxserver/clarkson","text":"

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.

"},{"location":"deprecated_images/docker-clarkson/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/clarkson should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-clarkson/#application-setup","title":"Application Setup","text":"

Clarkson requires v5.7.* of MySQL and please ensure MySQL is running before starting this container.

It is preferred if you create the clarkson 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.

CREATE SCHEMA `clarkson`;\nCREATE USER 'clarkson_user' IDENTIFIED BY 'supersecretpassword';\nGRANT ALL ON `clarkson`.* TO 'clarkson_user';\n

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 ENABLE_REGISTRATIONS flag set to false. This will not hide the \"Register\" link, but will disable the functionality.

"},{"location":"deprecated_images/docker-clarkson/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-clarkson/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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=<mysql_host>\n      - MYSQL_USERNAME=<mysql_username>\n      - MYSQL_PASSWORD=<mysql_password>\n      - ENABLE_REGISTRATIONS=<true/false>\n      - TZ=Europe/London\n    ports:\n      - 3000:3000\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-clarkson/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
docker run -d \\\n  --name=clarkson \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e MYSQL_HOST=<mysql_host> \\\n  -e MYSQL_USERNAME=<mysql_username> \\\n  -e MYSQL_PASSWORD=<mysql_password> \\\n  -e ENABLE_REGISTRATIONS=<true/false> \\\n  -e TZ=Europe/London \\\n  -p 3000:3000 \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/clarkson\n
"},{"location":"deprecated_images/docker-clarkson/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-clarkson/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 WebUI"},{"location":"deprecated_images/docker-clarkson/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation MYSQL_HOST=<mysql_host> Points the backend to the MySQL database. This can be either a docker hostname or an IP. MYSQL_USERNAME=<mysql_username> The user with access to the clarkson schema. MYSQL_PASSWORD=<mysql_password> The password for the user. ENABLE_REGISTRATIONS=<true/false> Defaults to false. If set to true, allows new users to register. TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-clarkson/#volume-mappings-v","title":"Volume Mappings (-v)","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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-clarkson/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-clarkson/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-clarkson/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-clarkson/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-clarkson/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-cloud9/","title":"cloud9","text":""},{"location":"deprecated_images/docker-cloud9/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-cloud9/#linuxservercloud9","title":"linuxserver/cloud9","text":"

Cloud9 Cloud9 is a complete web based IDE with terminal access. This container is for running their core SDK locally and developing plugins.

"},{"location":"deprecated_images/docker-cloud9/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/cloud9:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-cloud9/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Access the webui at http://your-ip:8000, for more information check out here.

"},{"location":"deprecated_images/docker-cloud9/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-cloud9/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-cloud9/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-cloud9/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-cloud9/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 The port for the Cloud9 web interface"},{"location":"deprecated_images/docker-cloud9/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London GITURL=https://github.com/linuxserver/docker-cloud9.git Specify a git repo to checkout on first startup USERNAME= Optionally specify a username for http auth PASSWORD= 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 (-v)","text":"Volume Function /code Optionally if you want to mount up a local folder of code instead of checking out /var/run/docker.sock 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-cloud9/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-cloud9/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-cloud9/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-cloud9/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-cloud9/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-codiad/","title":"codiad","text":""},{"location":"deprecated_images/docker-codiad/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO CLOUD9 IF POSSIBLE linuxserver/cloud9

"},{"location":"deprecated_images/docker-codiad/#linuxservercodiad","title":"linuxserver/codiad","text":"

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.

"},{"location":"deprecated_images/docker-codiad/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/codiad should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-codiad/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-codiad/#docker","title":"docker","text":"
docker create \\\n  --name=codiad \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 80:80 \\\n  -v <path to data>:/config \\\n  --restart unless-stopped \\\n  linuxserver/codiad\n
"},{"location":"deprecated_images/docker-codiad/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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      - <path to data>:/config\n    ports:\n      - 80:80\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-codiad/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-codiad/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"deprecated_images/docker-codiad/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-codiad/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Codiad stores data."},{"location":"deprecated_images/docker-codiad/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-codiad/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-codiad/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-codimd/","title":"codimd","text":""},{"location":"deprecated_images/docker-codimd/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-codimd/#linuxservercodimd","title":"linuxserver/codimd","text":"

Codimd gives you access to all your files wherever you are.

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.

"},{"location":"deprecated_images/docker-codimd/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/codimd should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-codimd/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-codimd/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

Compatible with docker-compose v2 schemas.

version: \"3\"\nservices:\n  mariadb:\n    image: linuxserver/mariadb:latest\n    container_name: codimd_mariadb\n    restart: always\n    volumes:\n      - <path to mariadb data>:/config\n    environment:\n      - MYSQL_ROOT_PASSWORD=<secret password>\n      - MYSQL_DATABASE=codimd\n      - MYSQL_USER=codimd\n      - MYSQL_PASSWORD=<secret password>\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      - <path to config>:/config\n    environment:\n      - DB_HOST=mariadb\n      - DB_USER=codimd\n      - DB_PASS=<secret password>\n      - DB_NAME=codimd\n      - DB_PORT=3306\n      - PGID=1000\n      - PUID=1000\n      - TZ=Europe/London\n    ports:\n      - \"3000:3000\"\n
"},{"location":"deprecated_images/docker-codimd/#docker-cli","title":"docker cli","text":"
docker run -d \\\n  --name=codimd \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e DB_HOST=<hostname or ip> \\\n  -e DB_PORT=3306 \\\n  -e DB_USER=codimd \\\n  -e DB_PASS=<secret password> \\\n  -e DB_NAME=codimd \\\n  -e TZ=Europe/London \\\n  -p 3000:3000 \\\n  -v </path/to/appdata>:/config \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/codimd\n
"},{"location":"deprecated_images/docker-codimd/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-codimd/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 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 (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation DB_HOST=<hostname or ip> Host address of mysql database DB_PORT=3306 Port to access mysql database default is 3306 DB_USER=codimd Database user DB_PASS=<secret password> Database password DB_NAME=codimd Database name TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-codimd/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config CodiMD config and configurable files"},{"location":"deprecated_images/docker-codimd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-codimd/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-codimd/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-codimd/#application-setup","title":"Application Setup","text":"

THIS IMAGE IS DEPRECATED. CodiMD is rebranded as HedgeDoc and the new docker image is at linuxserver/hedgedoc.

CodiMD web interface can be accessed http://${IP}:3000/, 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)

Full list of CodiMD options

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.

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

"},{"location":"deprecated_images/docker-codimd/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-codimd/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-codimd/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-couchpotato/","title":"couchpotato","text":""},{"location":"deprecated_images/docker-couchpotato/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-couchpotato/#linuxservercouchpotato","title":"linuxserver/couchpotato","text":"

Couchpotato is an automatic NZB and torrent downloader. You can keep a movies I want 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.

"},{"location":"deprecated_images/docker-couchpotato/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/couchpotato should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-couchpotato/#application-setup","title":"Application Setup","text":"

Access the webui at <your-ip>:5050, for more information check out CouchPotato.

"},{"location":"deprecated_images/docker-couchpotato/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-couchpotato/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-couchpotato/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-couchpotato/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-couchpotato/#ports-p","title":"Ports (-p)","text":"Parameter Function 5050 http gui"},{"location":"deprecated_images/docker-couchpotato/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"deprecated_images/docker-couchpotato/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Couchpotato Application Data. /downloads Downloads Folder. /movies 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-couchpotato/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-couchpotato/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-couchpotato/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-couchpotato/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-couchpotato/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-dillinger/","title":"dillinger","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-dillinger/#linuxserverdillinger","title":"linuxserver/dillinger","text":"

Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.

"},{"location":"deprecated_images/docker-dillinger/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/dillinger:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"deprecated_images/docker-dillinger/#application-setup","title":"Application Setup","text":"

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.

"},{"location":"deprecated_images/docker-dillinger/#pdf-export","title":"PDF Export","text":"

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.

Download the pdf-export.json from this repo onto your docker host and start the container with --security-opt seccomp=/path/to/pdf-export.json. If you're using compose the format is:

    security_opt:\n      - seccomp=/path/to/pdf-export.json\n

The original source for this seccomp profile is here.

"},{"location":"deprecated_images/docker-dillinger/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-dillinger/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-dillinger/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-dillinger/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-dillinger/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 The port for the Dillinger web interface"},{"location":"deprecated_images/docker-dillinger/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"deprecated_images/docker-dillinger/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"deprecated_images/docker-dillinger/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-dillinger/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"deprecated_images/docker-dillinger/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-dillinger/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-dillinger/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"deprecated_images/docker-dillinger/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"deprecated_images/docker-dillinger/#via-docker-run","title":"Via Docker Run","text":""},{"location":"deprecated_images/docker-dillinger/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"deprecated_images/docker-dillinger/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"deprecated_images/docker-dillinger/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-docker-compose/","title":"docker-compose","text":""},{"location":"deprecated_images/docker-docker-compose/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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/

And also for direct download: https://github.com/docker/compose

The LinuxServer.io team brings you another container release featuring:

Find us at:

"},{"location":"deprecated_images/docker-docker-compose/#linuxserverdocker-compose","title":"linuxserver/docker-compose","text":"

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.

"},{"location":"deprecated_images/docker-docker-compose/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/docker-compose:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-docker-compose/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

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
You can replace the last line with any docker-compose command and argument, which will be passed to docker-compose inside the image.

"},{"location":"deprecated_images/docker-docker-compose/#recommended-method","title":"Recommended method","text":"

We provide a very convenient script that allows the docker-compose container to run as if it was installed natively:

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

Running these two commands on your docker host once will let you issue commands such as docker-compose up -d and the docker-compose container will do its job behind the scenes.

"},{"location":"deprecated_images/docker-docker-compose/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-docker-compose/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-docker-compose/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"deprecated_images/docker-docker-compose/#via-docker-run","title":"Via Docker Run","text":""},{"location":"deprecated_images/docker-docker-compose/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"deprecated_images/docker-docker-compose/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-endlessh/","title":"endlessh","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

We recommend looking at an alternative implementation such as: https://github.com/shizunge/endlessh-go/

"},{"location":"deprecated_images/docker-endlessh/#linuxserverendlessh","title":"linuxserver/endlessh","text":"

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.

"},{"location":"deprecated_images/docker-endlessh/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/endlessh:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"deprecated_images/docker-endlessh/#application-setup","title":"Application Setup","text":"

The app listens on the port mapped for ssh connections. To log to file, set the environment variable LOGFILE to true and map a volume for /config. The logs will be under /config/logs/endlessh.

"},{"location":"deprecated_images/docker-endlessh/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-endlessh/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-endlessh/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-endlessh/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-endlessh/#ports-p","title":"Ports (-p)","text":"Parameter Function 2222 ssh port"},{"location":"deprecated_images/docker-endlessh/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. MSDELAY=10000 The endless banner is sent one line at a time. This is the delay in milliseconds between individual lines. MAXLINES=32 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. MAXCLIENTS=4096 Maximum number of connections to accept at a time. Connections beyond this are not immediately rejected, but will wait in the queue. LOGFILE=false By default, the app logs to container log. If this is set to true, the log will be output to file under /config/logs/endlessh (/config needs to be mapped). BINDFAMILY= By default, the app binds to IPv4 and IPv6 addresses. Set it to 4 or 6 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 (-v)","text":"Volume Function /config Required if LOGFILE is set to true."},{"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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"deprecated_images/docker-endlessh/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-endlessh/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"deprecated_images/docker-endlessh/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-endlessh/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-endlessh/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"deprecated_images/docker-endlessh/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"deprecated_images/docker-endlessh/#via-docker-run","title":"Via Docker Run","text":""},{"location":"deprecated_images/docker-endlessh/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"deprecated_images/docker-endlessh/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"deprecated_images/docker-endlessh/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-gazee/","title":"gazee","text":""},{"location":"deprecated_images/docker-gazee/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-gazee/#linuxservergazee","title":"linuxserver/gazee","text":"

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.

"},{"location":"deprecated_images/docker-gazee/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/gazee should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v6-latest"},{"location":"deprecated_images/docker-gazee/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-gazee/#docker","title":"docker","text":"
docker create \\\n  --name=gazee \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -p 4242:4242 \\\n  -v </path/to/appdata/config>:/config \\\n  -v <path to comics>:/comics \\\n  -v <path to mylar data>:/mylar \\\n  -v <path to SSL certs>:/certs \\\n  --restart unless-stopped \\\n  linuxserver/gazee\n
"},{"location":"deprecated_images/docker-gazee/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\nversion: \"2\"\nservices:\n  gazee:\n    image: linuxserver/gazee\n    container_name: gazee\n    environment:\n      - PUID=1000\n      - PGID=1000\n    volumes:\n      - </path/to/appdata/config>:/config\n      - <path to comics>:/comics\n      - <path to mylar data>:/mylar\n      - <path to SSL certs>:/certs\n    ports:\n      - 4242:4242\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-gazee/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-gazee/#ports-p","title":"Ports (-p)","text":"Parameter Function 4242 WebUI"},{"location":"deprecated_images/docker-gazee/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation"},{"location":"deprecated_images/docker-gazee/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Gazee should store config files. /comics Path to comics folder. /mylar Path to Mylar DB. /certs Where SSL certs should be stored."},{"location":"deprecated_images/docker-gazee/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-gazee/#application-setup","title":"Application Setup","text":"

Webui can be found at your-ip:4242

Default username and password for the web interface:

Click the gear icon to go to the settings page.

Change the default admin password or add a new admin and remove the admin user altogether.

Comic path should be set to /comics

Optional Mylar DB path should be set to /mylar

Optional path for certificates and keys should be set to /certs

After you update the settings, Gazee will restart and begin an intial scan of your comic library.

Happy Reading!

"},{"location":"deprecated_images/docker-gazee/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-gazee/#versions","title":"Versions","text":""},{"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":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-gmail-order-bot/#lsiodevgmail-order-bot","title":"lsiodev/gmail-order-bot","text":"

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.

"},{"location":"deprecated_images/docker-gmail-order-bot/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/lsiodev/gmail-order-bot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"deprecated_images/docker-gmail-order-bot/#application-setup","title":"Application Setup","text":"

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.

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.

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.

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:

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 => {\n    const client = new Discord.Client();\n    client.login(discordtoken);\n    client.on('ready', async () => {\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

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.

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 Enable the Gmail API 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 /config 4. Run docker run --rm -it -u $(id -u ${USER}):$(id -g ${USER}) -v /path/to/data:/config --entrypoint /config.sh lsiodev/gmail-order-bot 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.

When the container starts if you are using a custom bot located in /config/bots 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.

From there the bot will loop in for your defined timeout and pull in emails and spit out orders to your destination.

"},{"location":"deprecated_images/docker-gmail-order-bot/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"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":"
---\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
"},{"location":"deprecated_images/docker-gmail-order-bot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-gmail-order-bot/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-gmail-order-bot/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"deprecated_images/docker-gmail-order-bot/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. BOT_NAME=discord On successful order receive send the order payload to this bot (default bots are located in root/defaults/bots) LOOP_TIME=60 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 (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-gmail-order-bot/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-gmail-order-bot/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-gmail-order-bot/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-gmail-order-bot/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-gmail-order-bot/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-guacd/","title":"guacd","text":""},{"location":"deprecated_images/docker-guacd/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-guacd/#linuxserverguacd","title":"linuxserver/guacd","text":"

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.

"},{"location":"deprecated_images/docker-guacd/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/guacd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-guacd/#application-setup","title":"Application Setup","text":"

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.

"},{"location":"deprecated_images/docker-guacd/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-guacd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-guacd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
docker run -d \\\n  --name=guacd \\\n  -p 4822:4822 \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/guacd:latest\n
"},{"location":"deprecated_images/docker-guacd/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-guacd/#ports-p","title":"Ports (-p)","text":"Parameter Function 4822 Port Guacamole server listens on"},{"location":"deprecated_images/docker-guacd/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function"},{"location":"deprecated_images/docker-guacd/#volume-mappings-v","title":"Volume Mappings (-v)","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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-guacd/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-guacd/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-guacd/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-guacd/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-hydra/","title":"hydra","text":""},{"location":"deprecated_images/docker-hydra/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-hydra/#linuxserverhydra","title":"linuxserver/hydra","text":"

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.

"},{"location":"deprecated_images/docker-hydra/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/hydra should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-hydra/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-hydra/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

Compatible with docker-compose v2 schemas.

---\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      - <path to data>:/config\n      - <nzb download>:/downloads\n    ports:\n      - 5075:5075\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-hydra/#docker-cli","title":"docker cli","text":"
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 <path to data>:/config \\\n  -v <nzb download>:/downloads \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/hydra\n
"},{"location":"deprecated_images/docker-hydra/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-hydra/#ports-p","title":"Ports (-p)","text":"Parameter Function 5075 WebUI"},{"location":"deprecated_images/docker-hydra/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-hydra/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where hydra should store config files. /downloads NZB download folder."},{"location":"deprecated_images/docker-hydra/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-hydra/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-hydra/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-hydra/#application-setup","title":"Application Setup","text":"

THIS IMAGE HAS BEEN DEPRECATED.

Please use linuxserver/nzbhydra2 instead.

The web interface is at <your ip>:5075 , to set up indexers and connections to your nzb download applications.

"},{"location":"deprecated_images/docker-hydra/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-hydra/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-hydra/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-hydra2/","title":"hydra2","text":""},{"location":"deprecated_images/docker-hydra2/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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.

"},{"location":"deprecated_images/docker-hydra2/#linuxserverhydra2","title":"linuxserver/hydra2","text":"

Hydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra.

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 linuxserver/hydra2:v2.10.2-ls49

"},{"location":"deprecated_images/docker-hydra2/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/hydra2 should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-hydra2/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

Tag Description latest Stable releases dev Prereleases from their GitHub"},{"location":"deprecated_images/docker-hydra2/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-hydra2/#docker","title":"docker","text":"
docker create \\\n  --name=hydra2 \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 5076:5076 \\\n  -v <path to data>:/config \\\n  -v <nzb download>:/downloads \\\n  --restart unless-stopped \\\n  linuxserver/hydra2\n
"},{"location":"deprecated_images/docker-hydra2/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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      - <path to data>:/config\n      - <nzb download>:/downloads\n    ports:\n      - 5076:5076\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-hydra2/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-hydra2/#ports-p","title":"Ports (-p)","text":"Parameter Function 5076 WebUI"},{"location":"deprecated_images/docker-hydra2/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-hydra2/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where hydra2 should store config files. /downloads NZB download folder."},{"location":"deprecated_images/docker-hydra2/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-hydra2/#application-setup","title":"Application Setup","text":"

The web interface is at <your ip>:5076 , to set up indexers and connections to your nzb download applications.

"},{"location":"deprecated_images/docker-hydra2/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-hydra2/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-hydra2/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-ipfs/","title":"ipfs","text":""},{"location":"deprecated_images/docker-ipfs/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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.

"},{"location":"deprecated_images/docker-ipfs/#linuxserveripfs","title":"linuxserver/ipfs","text":"

Ipfs - A peer-to-peer hypermedia protocol designed to make the web faster, safer, and more open.

"},{"location":"deprecated_images/docker-ipfs/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/ipfs should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-ipfs/#application-setup","title":"Application Setup","text":"

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.

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

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.

For more on using IPFS please read the docs here

"},{"location":"deprecated_images/docker-ipfs/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-ipfs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-ipfs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-ipfs/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-ipfs/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 The port for the IPFS web UI 4001 Peering port, this is the only port you should expose to the internet 5001 API port, the clientside webUI needs to be able to talk to this from whatever machine your web browser is on 8080 Gateway Port, actually serves IPFS content 443 HTTPS port for web UI"},{"location":"deprecated_images/docker-ipfs/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"deprecated_images/docker-ipfs/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-ipfs/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-ipfs/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-ipfs/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-ipfs/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-ipfs/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-kanzi/","title":"kanzi","text":""},{"location":"deprecated_images/docker-kanzi/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-kanzi/#linuxserverkanzi","title":"linuxserver/kanzi","text":"

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":"deprecated_images/docker-kanzi/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/kanzi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-kanzi/#application-setup","title":"Application Setup","text":""},{"location":"deprecated_images/docker-kanzi/#initial-setup","title":"Initial setup","text":"

Subfolder

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
Subdomain
  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

"},{"location":"deprecated_images/docker-kanzi/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

"},{"location":"deprecated_images/docker-kanzi/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-kanzi/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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      - </path/to/appdata/config>:/config\n    ports:\n      - 8000:8000\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-kanzi/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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 </path/to/appdata/config>:/config \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/kanzi:latest\n
"},{"location":"deprecated_images/docker-kanzi/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-kanzi/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Application Port"},{"location":"deprecated_images/docker-kanzi/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. INVOCATION_NAME=kanzi Specify an invocation name for this skill, use either kanzi or kod. URL_ENDPOINT=https://server.com/kanzi/ Specify the URL at which the webserver is reachable either https://kanzi.server.com/ or https://server.com/kanzi/ Note the trailing slash MUST be included."},{"location":"deprecated_images/docker-kanzi/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-kanzi/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-kanzi/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-kanzi/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-kanzi/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-kanzi/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-letsencrypt/","title":"letsencrypt","text":""},{"location":"deprecated_images/docker-letsencrypt/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"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":"

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.

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

"},{"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":"

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.

"},{"location":"deprecated_images/docker-letsencrypt/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/letsencrypt should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-letsencrypt/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container.

"},{"location":"deprecated_images/docker-letsencrypt/#docker","title":"docker","text":"
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
"},{"location":"deprecated_images/docker-letsencrypt/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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
"},{"location":"deprecated_images/docker-letsencrypt/#parameters","title":"Parameters","text":"

Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

Parameter Function -p 443 Https port -p 80 Http port (required for http validation and http -> https redirect) -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London. -e URL=yourdomain.url Top url you have control over (customdomain.com if you own it, or customsubdomain.ddnsprovider.com if dynamic dns). -e SUBDOMAINS=www, Subdomains you'd like the cert to cover (comma separated, no spaces) ie. www,ftp,cloud. For a wildcard cert, set this exactly to wildcard (wildcard cert is available via dns and duckdns validation only) -e VALIDATION=http Certbot validation method to use, options are http, dns or duckdns (dns method also requires DNSPLUGIN variable set) (duckdns method requires DUCKDNSTOKEN variable set, and the SUBDOMAINS variable must be either empty or set to wildcard). -e DNSPLUGIN=cloudflare Required if VALIDATION is set to dns. Options are aliyun, cloudflare, cloudxns, cpanel, digitalocean, dnsimple, dnsmadeeasy, domeneshop, gandi, google, inwx, linode, luadns, nsone, ovh, rfc2136, route53 and transip. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf. -e PROPAGATION= Optionally override (in seconds) the default propagation time for the dns plugins. -e DUCKDNSTOKEN= Required if VALIDATION is set to duckdns. Retrieve your token from https://www.duckdns.org -e EMAIL= Optional e-mail address used for cert expiration notifications. -e ONLY_SUBDOMAINS=false 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 true -e EXTRA_DOMAINS= Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org -e STAGING=false Set to true 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. -v /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-letsencrypt/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-letsencrypt/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n

"},{"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":""},{"location":"deprecated_images/docker-letsencrypt/#security-and-password-protection","title":"Security and password protection","text":""},{"location":"deprecated_images/docker-letsencrypt/#site-config-and-reverse-proxy","title":"Site config and reverse proxy","text":""},{"location":"deprecated_images/docker-letsencrypt/#using-certs-in-other-containers","title":"Using certs in other containers","text":""},{"location":"deprecated_images/docker-letsencrypt/#using-fail2ban","title":"Using fail2ban","text":""},{"location":"deprecated_images/docker-letsencrypt/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-letsencrypt/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-letsencrypt/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"deprecated_images/docker-letsencrypt/#via-docker-runcreate","title":"Via Docker Run/Create","text":""},{"location":"deprecated_images/docker-letsencrypt/#via-docker-compose","title":"Via Docker Compose","text":""},{"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":"

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.

"},{"location":"deprecated_images/docker-letsencrypt/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"deprecated_images/docker-letsencrypt/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-libresonic/","title":"libresonic","text":""},{"location":"deprecated_images/docker-libresonic/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE USE AIRSONIC linuxserver/airsonic

"},{"location":"deprecated_images/docker-libresonic/#linuxserverlibresonic","title":"linuxserver/libresonic","text":"

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.

"},{"location":"deprecated_images/docker-libresonic/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/libresonic should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-libresonic/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-libresonic/#docker","title":"docker","text":"
docker create \\\n  --name=libresonic \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e CONTEXT_PATH=<URL_BASE> `#optional` \\\n  -p 4040:4040 \\\n  -v </path/to/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  --restart unless-stopped \\\n  linuxserver/libresonic\n
"},{"location":"deprecated_images/docker-libresonic/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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=<URL_BASE> #optional\n    volumes:\n      - </path/to/config>:/config\n      - </path/to/music>:/music\n      - </path/to/playlists>:/playlists\n      - </path/to/podcasts>:/podcasts\n    volumes:\n      - </path/to/other media>:/media #optional\n    ports:\n      - 4040:4040\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-libresonic/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-libresonic/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 WebUI"},{"location":"deprecated_images/docker-libresonic/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. CONTEXT_PATH=<URL_BASE> For setting url-base in reverse proxy setups."},{"location":"deprecated_images/docker-libresonic/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media."},{"location":"deprecated_images/docker-libresonic/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-libresonic/#application-setup","title":"Application Setup","text":"

Access WebUI at <your-ip>:4040.

Default user/pass is admin/admin

"},{"location":"deprecated_images/docker-libresonic/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-libresonic/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-musicbrainz/","title":"musicbrainz","text":""},{"location":"deprecated_images/docker-musicbrainz/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-musicbrainz/#linuxservermusicbrainz","title":"linuxserver/musicbrainz","text":"

MusicBrainz is an open music encyclopedia that collects music metadata and makes it available to the public.

"},{"location":"deprecated_images/docker-musicbrainz/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/musicbrainz should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-musicbrainz/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container.

"},{"location":"deprecated_images/docker-musicbrainz/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

Compatible with docker-compose v2 schemas.

---\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=<code from MusicBrainz>\n      - WEBADDRESS=<ip of host>\n      - NPROC=<parameter> #optional\n    volumes:\n      - </path/to/appdata/config>:/config\n      - </path/to/appdata/config>:/data\n    ports:\n      - 5000:5000\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-musicbrainz/#docker-cli","title":"docker cli","text":"
docker run -d \\\n  --name=musicbrainz \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -e BRAINZCODE=<code from MusicBrainz> \\\n  -e WEBADDRESS=<ip of host> \\\n  -e NPROC=<parameter> `#optional` \\\n  -p 5000:5000 \\\n  -v </path/to/appdata/config>:/config \\\n  -v </path/to/appdata/config>:/data \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/musicbrainz\n
"},{"location":"deprecated_images/docker-musicbrainz/#parameters","title":"Parameters","text":"

Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

Parameter Function -p 5000 WebUI -e PUID=1000 for UserID - see below for explanation -e PGID=1000 for GroupID - see below for explanation -e TZ=Europe/London Specify a timezone to use EG Europe/London -e BRAINZCODE=<code from MusicBrainz> To enter MusicBrainz code. See Setting up the application -e WEBADDRESS=<ip of host> To set ip for host to allow css to render properly, DO NOT ENTER PORT NUMBER. -e NPROC=<parameter> To set number of proceses, defaults to 5 if unset. -v /config Config files for musicbrainz. -v /data Data files for musicbrainz."},{"location":"deprecated_images/docker-musicbrainz/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-musicbrainz/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-musicbrainz/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n

"},{"location":"deprecated_images/docker-musicbrainz/#application-setup","title":"Application Setup","text":""},{"location":"deprecated_images/docker-musicbrainz/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-musicbrainz/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-musicbrainz/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"deprecated_images/docker-musicbrainz/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"deprecated_images/docker-musicbrainz/#via-docker-run","title":"Via Docker Run","text":""},{"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":"

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.

"},{"location":"deprecated_images/docker-musicbrainz/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":""},{"location":"deprecated_images/docker-musicbrainz/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"deprecated_images/docker-musicbrainz/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-muximux/","title":"muximux","text":""},{"location":"deprecated_images/docker-muximux/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-muximux/#linuxservermuximux","title":"linuxserver/muximux","text":"

Muximux is a lightweight portal to view & 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.

"},{"location":"deprecated_images/docker-muximux/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/muximux:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-muximux/#application-setup","title":"Application Setup","text":"

Find the web interface at <your-ip>:80 , set apps you wish to use with muximux via the webui. More info:- Muximux

"},{"location":"deprecated_images/docker-muximux/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-muximux/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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      - <path to data>:/config\n    ports:\n      - 80:80\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-muximux/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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 <path to data>:/config \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/muximux:latest\n
"},{"location":"deprecated_images/docker-muximux/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-muximux/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"deprecated_images/docker-muximux/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-muximux/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-muximux/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-muximux/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-muximux/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-muximux/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-muximux/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-mylar/","title":"mylar","text":""},{"location":"deprecated_images/docker-mylar/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-mylar/#linuxservermylar","title":"linuxserver/mylar","text":"

Mylar is an automated Comic Book downloader (cbr/cbz) for use with SABnzbd, NZBGet and torrents.

"},{"location":"deprecated_images/docker-mylar/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/mylar should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-mylar/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-mylar/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

Compatible with docker-compose v2 schemas.

---\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      - <path to data>:/config\n      - <comics-folder>:/comics\n      - <downloads-folder>:/downloads\n    ports:\n      - 8090:8090\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-mylar/#docker-cli","title":"docker cli","text":"
docker run -d \\\n  --name=mylar \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -p 8090:8090 \\\n  -v <path to data>:/config \\\n  -v <comics-folder>:/comics \\\n  -v <downloads-folder>:/downloads \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/mylar\n
"},{"location":"deprecated_images/docker-mylar/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-mylar/#ports-p","title":"Ports (-p)","text":"Parameter Function 8090 WebUI"},{"location":"deprecated_images/docker-mylar/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation"},{"location":"deprecated_images/docker-mylar/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where mylar should store config files. /comics Map to your comics folder. /downloads Map to your downloads folder."},{"location":"deprecated_images/docker-mylar/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-mylar/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-mylar/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-mylar/#application-setup","title":"Application Setup","text":"

THIS IMAGE IS DEPRECATED. Please migrate to Mylar3.

The web ui for settings etc, is on <your-ip>:8090 For more detailed setup refer Mylar.

"},{"location":"deprecated_images/docker-mylar/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-mylar/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-mylar/#versions","title":"Versions","text":""},{"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":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-nano-discord-bot/#linuxservernano-discord-bot","title":"linuxserver/nano-discord-bot","text":"

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.

"},{"location":"deprecated_images/docker-nano-discord-bot/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lsiodev/nano-discord-bot should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-nano-discord-bot/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-nano-discord-bot/#docker","title":"docker","text":"
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
"},{"location":"deprecated_images/docker-nano-discord-bot/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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
"},{"location":"deprecated_images/docker-nano-discord-bot/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-nano-discord-bot/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"deprecated_images/docker-nano-discord-bot/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation WALLET_URL=https://wallet.linuxserver.io/#/nano.linuxserver.io/ Hosted wallet endpoint to use. RPC_URL=https://nano.linuxserver.io:7077 RPC endpoint to publish blocks to and ingest account information. FAUCET_KEY=XXXXXXXXXXXXX The private key for your faucet account. DISCORD_KEY=XXXXXXXXXXXXX Discord api key for the bot. FAUCET_AMOUNT=\"1000\" Amount to distribute to individual Discord users in Nano."},{"location":"deprecated_images/docker-nano-discord-bot/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-nano-discord-bot/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-nano-discord-bot/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-nano-discord-bot/#application-setup","title":"Application Setup","text":"

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 .

"},{"location":"deprecated_images/docker-nano-discord-bot/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-nano-discord-bot/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-nano-discord-bot/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-nntp2nntp/","title":"nntp2nntp","text":""},{"location":"deprecated_images/docker-nntp2nntp/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-nntp2nntp/#linuxservernntp2nntp","title":"linuxserver/nntp2nntp","text":"

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.

"},{"location":"deprecated_images/docker-nntp2nntp/#warning","title":"Warning","text":"

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.

"},{"location":"deprecated_images/docker-nntp2nntp/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/nntp2nntp:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"deprecated_images/docker-nntp2nntp/#application-setup","title":"Application Setup","text":"

Edit sample config file config/nntp2nntp.conf with upstream provider details and rename the local users.

New user passwords can be created by running the password hash generator

docker exec -it nntp2nntp /usr/bin/nntp2nntp.py pass\n
entering the desired password and copying the resulting string to the relevant user line in /config/nntp2nntp.conf

Example with a user called Dave and with a password of password

Dave    = 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8\n

"},{"location":"deprecated_images/docker-nntp2nntp/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-nntp2nntp/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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=<yourUID>\n      - PGID=<yourGID>\n    volumes:\n      - <path to data>:/config\n    ports:\n      - 1563:1563\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-nntp2nntp/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
docker run -d \\\n  --name=nntp2nntp \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Etc/UTC \\\n  -e PUID=<yourUID> \\\n  -e PGID=<yourGID> \\\n  -p 1563:1563 \\\n  -v <path to data>:/config \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/nntp2nntp:latest\n
"},{"location":"deprecated_images/docker-nntp2nntp/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-nntp2nntp/#ports-p","title":"Ports (-p)","text":"Parameter Function 1563 will map the container's port 1563 to port 1563 on the host"},{"location":"deprecated_images/docker-nntp2nntp/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PUID=<yourUID> specify your UID PGID=<yourGID> specify your GID"},{"location":"deprecated_images/docker-nntp2nntp/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-nntp2nntp/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-nntp2nntp/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-nntp2nntp/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-nntp2nntp/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-nntp2nntp/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-nzbget/","title":"nzbget","text":""},{"location":"deprecated_images/docker-nzbget/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-nzbget/#linuxservernzbget","title":"linuxserver/nzbget","text":"

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.

"},{"location":"deprecated_images/docker-nzbget/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/nzbget:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-nzbget/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable nzbget releases testing \u2705 nzbget pre-releases"},{"location":"deprecated_images/docker-nzbget/#application-setup","title":"Application Setup","text":"

Webui can be found at <your-ip>:6789 and the default login details (change ASAP) are

login:nzbget, password:tegbzn6789

To allow scheduling, from the webui set the time correction value in settings/logging.

To change umask settings.

scroll to bottom, set umask like this (example shown for unraid)

You can add an additional mount point for intermediate unpacking folder with:-

-v </path/to/intermedia_unpacking_folder>:/intermediate

for example, and changing the setting for InterDir in the PATHS tab of settings to /intermediate

"},{"location":"deprecated_images/docker-nzbget/#media-folders","title":"Media folders","text":"

We have set /downloads 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.

Use the optional paths if you dont understand, or dont want hardlinks/atomic moves.

The folks over at servarr.com wrote a good write-up on how to get started with this.

"},{"location":"deprecated_images/docker-nzbget/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-nzbget/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-nzbget/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-nzbget/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-nzbget/#ports-p","title":"Ports (-p)","text":"Parameter Function 6789 WebUI"},{"location":"deprecated_images/docker-nzbget/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. NZBGET_USER=nzbget Specify the user for web authentication. NZBGET_PASS=tegbzn6789 Specify the password for web authentication."},{"location":"deprecated_images/docker-nzbget/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config NZBGet App data. /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-nzbget/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-nzbget/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-nzbget/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-nzbget/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-nzbget/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-openvpn-as/","title":"openvpn-as","text":""},{"location":"deprecated_images/docker-openvpn-as/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-openvpn-as/#linuxserveropenvpn-as","title":"linuxserver/openvpn-as","text":"

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.

"},{"location":"deprecated_images/docker-openvpn-as/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/openvpn-as should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 latest"},{"location":"deprecated_images/docker-openvpn-as/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

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":"

The admin interface is available at https://DOCKER-HOST-IP:943/admin (assuming bridge mode) with a default user/password of admin/password

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).

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 as.conf file under config/etc and replace the line boot_pam_users.0=admin with ~~#boot_pam_users.0=admin~~ boot_pam_users.0=kjhvkhv (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.

To ensure your devices can connect to your VPN properly, goto Configuration -> Network Settings -> and change the \"Hostname or IP Address\" section to either your domain name or public ip address.

"},{"location":"deprecated_images/docker-openvpn-as/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-openvpn-as/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

Compatible with docker-compose v2 schemas.

---\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      - <path to data>:/config\n    ports:\n      - 943:943\n      - 9443:9443\n      - 1194:1194/udp\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-openvpn-as/#docker-cli","title":"docker cli","text":"
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 <path to data>:/config \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/openvpn-as\n
"},{"location":"deprecated_images/docker-openvpn-as/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-openvpn-as/#ports-p","title":"Ports (-p)","text":"Parameter Function 943 Admin GUI port. 9443 TCP port. 1194/udp UDP port."},{"location":"deprecated_images/docker-openvpn-as/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. INTERFACE=eth0 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 ifconfig"},{"location":"deprecated_images/docker-openvpn-as/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-openvpn-as/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-openvpn-as/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-openvpn-as/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-openvpn-as/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-openvpn-as/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-organizr/","title":"organizr","text":""},{"location":"deprecated_images/docker-organizr/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-organizr/#linuxserverorganizr","title":"linuxserver/organizr","text":"

Organizr is a HTPC/Homelab Services Organizer - Written in PHP

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.

For more information on Organizr and information on how to use it visit their site at https://github.com/causefx/Organizr

"},{"location":"deprecated_images/docker-organizr/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/organizr should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-organizr/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-organizr/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

Compatible with docker-compose v2 schemas.

---\nversion: \"2.1\"\nservices:\n  organizr:\n    image: linuxserver/organizr\n    container_name: organizr\n    environment:\n      - PUID=1000\n      - PGID=1000\n      - TZ=<your timezone, eg Europe/London>\n    volumes:\n      - <path to data>:/config\n    ports:\n      - 9983:80\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-organizr/#docker-cli","title":"docker cli","text":"
docker run -d \\\n  --name=organizr \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=<your timezone, eg Europe/London> \\\n  -p 9983:80 \\\n  -v <path to data>:/config \\\n  --restart unless-stopped \\\n  linuxserver/organizr\n
"},{"location":"deprecated_images/docker-organizr/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-organizr/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 will map the container's port 80 to port 9983 on the host"},{"location":"deprecated_images/docker-organizr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=<your timezone, eg Europe/London> for specifying your timezone"},{"location":"deprecated_images/docker-organizr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-organizr/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-organizr/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-organizr/#application-setup","title":"Application Setup","text":"

Dead simple to get running, create the container as instructed and start it. When up and running, load the site.

"},{"location":"deprecated_images/docker-organizr/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-organizr/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-organizr/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-paperless-ng/","title":"paperless-ng","text":""},{"location":"deprecated_images/docker-paperless-ng/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-paperless-ng/#linuxserverpaperless-ng","title":"linuxserver/paperless-ng","text":"

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.\"

"},{"location":"deprecated_images/docker-paperless-ng/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/paperless-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-paperless-ng/#application-setup","title":"Application Setup","text":"

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: docker exec -it <container_name> manage <command>. For example, docker exec -it paperless manage document_retagger -tT.

"},{"location":"deprecated_images/docker-paperless-ng/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-paperless-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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      - </path/to/appdata/config>:/config\n      - </path/to/appdata/data>:/data\n    ports:\n      - 8000:8000\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-paperless-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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 </path/to/appdata/config>:/config \\\n  -v </path/to/appdata/data>:/data \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/paperless-ng:latest\n
"},{"location":"deprecated_images/docker-paperless-ng/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-paperless-ng/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 http gui"},{"location":"deprecated_images/docker-paperless-ng/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). 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 (-v)","text":"Volume Function /config Contains all relevant configuration files. /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-paperless-ng/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-paperless-ng/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-paperless-ng/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-paperless-ng/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-paperless-ng/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-paperless-ngx/","title":"paperless-ngx","text":""},{"location":"deprecated_images/docker-paperless-ngx/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-paperless-ngx/#linuxserverpaperless-ngx","title":"linuxserver/paperless-ngx","text":"

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.\"

"},{"location":"deprecated_images/docker-paperless-ngx/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/paperless-ngx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-paperless-ngx/#application-setup","title":"Application Setup","text":"

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: docker exec -it <container_name> manage <command>. For example, docker exec -it paperless manage document_retagger -tT.

"},{"location":"deprecated_images/docker-paperless-ngx/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-paperless-ngx/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-paperless-ngx/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-paperless-ngx/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-paperless-ngx/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 http gui"},{"location":"deprecated_images/docker-paperless-ngx/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=America/New_York Specify a timezone to use EG America/New_York REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). 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 (-v)","text":"Volume Function /config Contains all relevant configuration files. /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-paperless-ngx/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-paperless-ngx/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-paperless-ngx/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-paperless-ngx/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-paperless-ngx/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-papermerge/","title":"papermerge","text":""},{"location":"deprecated_images/docker-papermerge/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-papermerge/#linuxserverpapermerge","title":"linuxserver/papermerge","text":"

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":"deprecated_images/docker-papermerge/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/papermerge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-papermerge/#application-setup","title":"Application Setup","text":"

Default login is admin:admin via the webui, accessible at http://SERVERIP:PORT More info at papermerge.

If you need non-English OCR language support, you can use this mod.

"},{"location":"deprecated_images/docker-papermerge/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-papermerge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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      - </path/to/appdata/config>:/config\n      - </path/to/appdata/data>:/data\n    ports:\n      - 8000:8000\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-papermerge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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 </path/to/appdata/config>:/config \\\n  -v </path/to/appdata/data>:/data \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/papermerge:latest\n
"},{"location":"deprecated_images/docker-papermerge/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-papermerge/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 http gui"},{"location":"deprecated_images/docker-papermerge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. REDIS_URL= Specify an external redis instance to use. Can optionally include a port (redis:6379) and/or db (redis/foo). 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 (-v)","text":"Volume Function /config Contains all relevant configuration files. /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-papermerge/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-papermerge/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-papermerge/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-papermerge/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-papermerge/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-photoshow/","title":"photoshow","text":""},{"location":"deprecated_images/docker-photoshow/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-photoshow/#linuxserverphotoshow","title":"linuxserver/photoshow","text":"

Photoshow is gallery software at its easiest, it doesn't even require a database.

"},{"location":"deprecated_images/docker-photoshow/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/photoshow:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-photoshow/#application-setup","title":"Application Setup","text":"

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.

"},{"location":"deprecated_images/docker-photoshow/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-photoshow/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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      - <path to data>:/config\n      - <path to pictures>:/Pictures:ro\n      - <path to store thumbs>:/Thumbs\n    ports:\n      - 80:80\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-photoshow/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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 <path to data>:/config \\\n  -v <path to pictures>:/Pictures:ro \\\n  -v <path to store thumbs>:/Thumbs \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/photoshow:latest\n
"},{"location":"deprecated_images/docker-photoshow/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-photoshow/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"deprecated_images/docker-photoshow/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-photoshow/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Stores config and logs for nginx base. /Pictures:ro Your local folder of photos you wish to share. /Thumbs 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-photoshow/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-photoshow/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-photoshow/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-photoshow/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-photoshow/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-pixapop/","title":"pixapop","text":""},{"location":"deprecated_images/docker-pixapop/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-pixapop/#linuxserverpixapop","title":"linuxserver/pixapop","text":"

Pixapop is an open-source single page application to view your photos in the easiest way possible.

"},{"location":"deprecated_images/docker-pixapop/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pixapop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-pixapop/#application-setup","title":"Application Setup","text":"

Any photos included in /photos will be presented as galleries split by month. Config settings are persistent and stored into /config.

"},{"location":"deprecated_images/docker-pixapop/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-pixapop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-pixapop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-pixapop/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-pixapop/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"deprecated_images/docker-pixapop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. APP_USERNAME=admin Specify a username to enable authentication. APP_PASSWORD=admin Specify a password to enable authentication."},{"location":"deprecated_images/docker-pixapop/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Stores config and logs for nginx base. /photos 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-pixapop/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-pixapop/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-pixapop/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-pixapop/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-pixapop/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-pydio/","title":"pydio","text":""},{"location":"deprecated_images/docker-pydio/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-pydio/#linuxserverpydio","title":"linuxserver/pydio","text":"

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.

"},{"location":"deprecated_images/docker-pydio/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pydio should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-pydio/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-pydio/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

Compatible with docker-compose v2 schemas.

---\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      - <path to data>:/config\n      - <path to data>:/data\n    ports:\n      - 443:443\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-pydio/#docker-cli","title":"docker cli","text":"
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 <path to data>:/config \\\n  -v <path to data>:/data \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/pydio\n
"},{"location":"deprecated_images/docker-pydio/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-pydio/#ports-p","title":"Ports (-p)","text":"Parameter Function 443 WebUI"},{"location":"deprecated_images/docker-pydio/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-pydio/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where pydio should store it's configuration files. /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-pydio/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-pydio/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-pydio/#application-setup","title":"Application Setup","text":"

THIS IMAGE IS DEPRECATED. You can switch to Pydio Cells instead.

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...

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.

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.

For email settings edit the file /config/ssmtp.conf and restart the container.

"},{"location":"deprecated_images/docker-pydio/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-pydio/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-pydio/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-pyload/","title":"pyload","text":""},{"location":"deprecated_images/docker-pyload/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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/

"},{"location":"deprecated_images/docker-pyload/#linuxserverpyload","title":"linuxserver/pyload","text":"

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.

"},{"location":"deprecated_images/docker-pyload/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pyload should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-pyload/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. latest tag usually provides the latest stable version. Others are considered under development and caution must be exercised when using them.

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":"

Access the web interface at http://your-ip:8000 the default login is: username - admin password - password

For the ng tag, the default user/pass are pyload/pyload.

For general usage please see the pyLoad wiki here .

"},{"location":"deprecated_images/docker-pyload/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-pyload/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-pyload/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-pyload/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-pyload/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Allows HTTP access to the application 7227 pyLoad control port"},{"location":"deprecated_images/docker-pyload/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"deprecated_images/docker-pyload/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config pyLoad Configuration and files database /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-pyload/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-pyload/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-pyload/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-pyload/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-pyload/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-readme-sync/","title":"readme-sync","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-readme-sync/#contact-information-","title":"Contact information:-","text":"Type Address/Details Discord Discord Forum Linuserver.io forum IRC freenode at #linuxserver.io 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

The LinuxServer.io team brings you another image release featuring :-

"},{"location":"deprecated_images/docker-readme-sync/#lsiodevreadme-sync","title":"lsiodev/readme-sync","text":"

Utility to copy README.md from a given github.com repository to a given dockerhub.com repository.

"},{"location":"deprecated_images/docker-readme-sync/#usage","title":"Usage","text":"
docker run --rm=true \\\n    -e DOCKERHUB_USERNAME=<USERNAME> \\\n    -e DOCKERHUB_PASSWORD=<PASSWORD> \\\n    -e GIT_REPOSITORY=<GITHUB REPO> \\\n    -e DOCKER_REPOSITORY=<DOCKERHUB REPO> \\\n    -e GIT_BRANCH=<GITHUB BRANCH> \\\n    lsiodev/readme-sync bash -c 'node sync'\n
"},{"location":"deprecated_images/docker-readme-sync/#parameters","title":"Parameters","text":"

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.

Parameter Function -e DOCKERHUB_USERNAME your dockerhub username -e DOCKERHUB_PASSWORD your dockerhub password -e GIT_REPOSITORY github repository, i.e. linuxserver/docker-readme-sync -e DOCKER_REPOSITORY dockerhub repository, i.e. lsiodev/docker-readme-sync -e GIT_BRANCH github repository branch, optional (default: master)

\u00a0 It is based on alpine and is not meant to run as a service. The sync is performed and the command exits. \u00a0

"},{"location":"deprecated_images/docker-readme-sync/#versions","title":"Versions","text":"Date Changes 13.01.21 Use ghcr baseimages. Fall back to external 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":"

This image is deprecated. We will not offer support for this image and it will not be updated. The upstream dev has ended development.

"},{"location":"deprecated_images/docker-requestrr/#linuxserverrequestrr","title":"linuxserver/requestrr","text":"

Requestrr is a chatbot used to simplify using services like Sonarr/Radarr/Ombi via the use of chat.

"},{"location":"deprecated_images/docker-requestrr/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/requestrr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-requestrr/#application-setup","title":"Application Setup","text":"

Access the webui at <your-ip>:4545, for more information check out Requestrr.

"},{"location":"deprecated_images/docker-requestrr/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-requestrr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-requestrr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-requestrr/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-requestrr/#ports-p","title":"Ports (-p)","text":"Parameter Function 4545 web gui"},{"location":"deprecated_images/docker-requestrr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London"},{"location":"deprecated_images/docker-requestrr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-requestrr/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-requestrr/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-requestrr/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-requestrr/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-requestrr/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-rutorrent/","title":"rutorrent","text":""},{"location":"deprecated_images/docker-rutorrent/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-rutorrent/#linuxserverrutorrent","title":"linuxserver/rutorrent","text":"

Rutorrent is a popular rtorrent client with a webui for ease of use.

"},{"location":"deprecated_images/docker-rutorrent/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/rutorrent should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-rutorrent/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-rutorrent/#docker-compose-recommended","title":"docker-compose (recommended)","text":"

Compatible with docker-compose v2 schemas.

---\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      - </path/to/rutorrent/config>:/config\n      - </path/to/rutorrent/downloads>:/downloads\n    ports:\n      - 80:80\n      - 5000:5000\n      - 51413:51413\n      - 6881:6881/udp\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-rutorrent/#docker-cli","title":"docker cli","text":"
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 </path/to/rutorrent/config>:/config \\\n  -v </path/to/rutorrent/downloads>:/downloads \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/rutorrent\n
"},{"location":"deprecated_images/docker-rutorrent/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-rutorrent/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 ruTorrent Web UI 5000 scgi port 51413 Bit-torrent port 6881/udp Bit-torrent port"},{"location":"deprecated_images/docker-rutorrent/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation"},{"location":"deprecated_images/docker-rutorrent/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config where ruTorrent should store it's config files /downloads path to your downloads folder"},{"location":"deprecated_images/docker-rutorrent/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-rutorrent/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-rutorrent/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-rutorrent/#application-setup","title":"Application Setup","text":"

THIS IMAGE IS DEPRECATED. Please migrate to crazy-max's image.

Webui can be found at <your-ip>:80 , configuration files for rtorrent are in /config/rtorrent, php in config/php and for the webui in /config/rutorrent/settings.

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.

** Important note for unraid users or those running services such as a webserver on port 80, change port 80 assignment **

** It should also be noted that this container when run will create subfolders ,completed, incoming and watched in the /downloads volume.**

** 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 **

Umask can be set in the /config/rtorrent/rtorrent.rc file by changing value in system.umask.set

If you are seeing this error Caught internal_error: 'DhtRouter::get_tracker did not actually insert tracker.'. , a possible fix is to disable dht in /config/rtorrent/rtorrent.rc by changing the following values.

dht.mode.set = disable\nprotocol.pex.set = no\n

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..

trackers.use_udp.set = yes\nprotocol.pex.set = no\n
To add plugins, create a plugins 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.

"},{"location":"deprecated_images/docker-rutorrent/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-rutorrent/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-rutorrent/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-scrutiny/","title":"scrutiny","text":""},{"location":"deprecated_images/docker-scrutiny/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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

"},{"location":"deprecated_images/docker-scrutiny/#linuxserverscrutiny","title":"linuxserver/scrutiny","text":"

Scrutiny WebUI for smartd S.M.A.R.T monitoring. Scrutiny is a Hard Drive Health Dashboard & Monitoring solution, merging manufacturer provided S.M.A.R.T metrics with real-world failure rates from Backblaze.

"},{"location":"deprecated_images/docker-scrutiny/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/scrutiny:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"deprecated_images/docker-scrutiny/#application-setup","title":"Application Setup","text":"

This container can be run as an 'all-in-one' deployment or as a hub / spoke deployment. Use the environment variables SCRUTINY_WEB and SCRUTINY_COLLECTOR to control the mode of the container. Setting both to true 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 SCRUTINY_API_ENDPOINT. 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 8080).

You may need to manually enter the container to run scrutiny-collector-metrics run for your first job or wait until around midnight for it to kick off.

A fully commented example configuration yaml file can be found in the original project repository here. Place this file in the location mounted to /config.

A note on --cap-add for this container: * SYS_RAWIO is necessary to allow smartctl permission to query your device SMART data. * SYS_ADMIN is required for NVMe drives as per upstream issue #26.

"},{"location":"deprecated_images/docker-scrutiny/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-scrutiny/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-scrutiny/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-scrutiny/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-scrutiny/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Port for scrutiny's web interface and API."},{"location":"deprecated_images/docker-scrutiny/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London. SCRUTINY_API_ENDPOINT=http://localhost:8080 # optional - API endpoint of the scrutiny UI. Do not change unless using as a remote collector SCRUTINY_WEB=true # optional - Run the web service. SCRUTINY_COLLECTOR=true # optional - Run the metrics collector."},{"location":"deprecated_images/docker-scrutiny/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where config is stored. /run/udev:ro Provides necessary metadata to Scrutiny."},{"location":"deprecated_images/docker-scrutiny/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/sda This is how Scrutiny accesses drives. Optionally supply /dev:/dev instead for all devices. /dev/sdb A second drive. /dev/nvme1n1 An NVMe drive. NVMe requires --cap-add=SYS_ADMIN."},{"location":"deprecated_images/docker-scrutiny/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"deprecated_images/docker-scrutiny/#portainer-notice","title":"Portainer notice","text":"

{% hint style=\"warning\" %} This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

"},{"location":"deprecated_images/docker-scrutiny/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-scrutiny/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-scrutiny/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-scrutiny/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-scrutiny/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-scrutiny/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-shout-irc/","title":"shout-irc","text":""},{"location":"deprecated_images/docker-shout-irc/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO THELOUNGE linuxserver/thelounge

"},{"location":"deprecated_images/docker-shout-irc/#linuxservershout-irc","title":"linuxserver/shout-irc","text":"

Shout-irc is a web IRC client that you host on your own server.

"},{"location":"deprecated_images/docker-shout-irc/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/shout-irc should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-shout-irc/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-shout-irc/#docker","title":"docker","text":"
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 </path/to/appdata/config>:/config \\\n  --restart unless-stopped \\\n  linuxserver/shout-irc\n
"},{"location":"deprecated_images/docker-shout-irc/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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      - </path/to/appdata/config>:/config\n    ports:\n      - 9000:9000\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-shout-irc/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-shout-irc/#ports-p","title":"Ports (-p)","text":"Parameter Function 9000 Application WebUI"},{"location":"deprecated_images/docker-shout-irc/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-shout-irc/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files."},{"location":"deprecated_images/docker-shout-irc/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-shout-irc/#application-setup","title":"Application Setup","text":""},{"location":"deprecated_images/docker-shout-irc/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-shout-irc/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-sickrage/","title":"sickrage","text":""},{"location":"deprecated_images/docker-sickrage/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated. Please use linuxserver/sickchill instead

"},{"location":"deprecated_images/docker-sickrage/#linuxserversickrage","title":"linuxserver/sickrage","text":""},{"location":"deprecated_images/docker-sickrage/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling linuxserver/sickrage should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-sickrage/#usage","title":"Usage","text":"

Here are some example snippets to help you get started creating a container from this image.

"},{"location":"deprecated_images/docker-sickrage/#docker","title":"docker","text":"
docker create \\\n  --name=sickrage \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Europe/London \\\n  -p 8081:8081 \\\n  -v </path/to/appdata/config>:/config \\\n  -v </path/to/downloads>:/downloads \\\n  -v </path/to/tv/shows>:/tv \\\n  --restart unless-stopped \\\n  linuxserver/sickrage\n
"},{"location":"deprecated_images/docker-sickrage/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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      - </path/to/appdata/config>:/config\n      - </path/to/downloads>:/downloads\n      - </path/to/tv/shows>:/tv\n    ports:\n      - 8081:8081\n    restart: unless-stopped\n
"},{"location":"deprecated_images/docker-sickrage/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-sickrage/#ports-p","title":"Ports (-p)","text":"Parameter Function 8081 Application WebUI"},{"location":"deprecated_images/docker-sickrage/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London."},{"location":"deprecated_images/docker-sickrage/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /downloads ISOs. /tv TV library directory."},{"location":"deprecated_images/docker-sickrage/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"deprecated_images/docker-sickrage/#application-setup","title":"Application Setup","text":"

Web interface is at <your ip>:8081 , set paths for downloads, tv-shows to match docker mappings via the webui.

"},{"location":"deprecated_images/docker-sickrage/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-sickrage/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-taisun/","title":"taisun","text":""},{"location":"deprecated_images/docker-taisun/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

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/

"},{"location":"deprecated_images/docker-taisun/#linuxservertaisun","title":"linuxserver/taisun","text":"

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:

"},{"location":"deprecated_images/docker-taisun/#supported-architectures","title":"Supported Architectures","text":"

Our images support multiple architectures such as x86-64, arm64 and armhf. We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/taisun should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Tag x86-64 amd64-latest arm64 arm64v8-latest armhf arm32v7-latest"},{"location":"deprecated_images/docker-taisun/#application-setup","title":"Application Setup","text":"

The webui is at http://localhost:3000, for more information on usage see here.

"},{"location":"deprecated_images/docker-taisun/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-taisun/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-taisun/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-taisun/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-taisun/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Taisun WebUI."},{"location":"deprecated_images/docker-taisun/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function"},{"location":"deprecated_images/docker-taisun/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /var/run/docker.sock 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-taisun/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-taisun/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-taisun/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-taisun/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-tester/","title":"tester","text":""},{"location":"deprecated_images/docker-tester/#deprecation-notice","title":"DEPRECATION NOTICE","text":"

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"deprecated_images/docker-tester/#linuxservertester","title":"linuxserver/tester","text":"

This internal tool is used as a desktop sandbox in our CI process to grab a screenshot of a hopefully functional endpoint

"},{"location":"deprecated_images/docker-tester/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/tester:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"deprecated_images/docker-tester/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-tester/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-tester/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-tester/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-tester/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 WebUI"},{"location":"deprecated_images/docker-tester/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function URL=http://google.com 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 (-v)","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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"deprecated_images/docker-tester/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-tester/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-tester/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-tester/#versions","title":"Versions","text":""},{"location":"deprecated_images/docker-unifi-controller/","title":"unifi-controller","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

We recommend our unifi-network-application image instead: https://github.com/linuxserver/docker-unifi-network-application

"},{"location":"deprecated_images/docker-unifi-controller/#linuxserverunifi-controller","title":"linuxserver/unifi-controller","text":"

The Unifi-controller software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.

"},{"location":"deprecated_images/docker-unifi-controller/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/unifi-controller:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"deprecated_images/docker-unifi-controller/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

See: https://info.linuxserver.io/issues/2023-09-06-unifi-controller for more information.

The webui is at https://ip:8443, setup with the first run wizard.

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 > System > 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).

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.

In order to manually adopt a device take these steps:

ssh ubnt@$AP-IP\nset-inform http://$address:8080/inform\n

The default device password is ubnt. $address is the IP address of the host you are running this container on and $AP-IP is the Access Point IP address.

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 > Networks > network_name, to a correct (and accessable) ip address.

"},{"location":"deprecated_images/docker-unifi-controller/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

"},{"location":"deprecated_images/docker-unifi-controller/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"deprecated_images/docker-unifi-controller/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"deprecated_images/docker-unifi-controller/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"deprecated_images/docker-unifi-controller/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"deprecated_images/docker-unifi-controller/#ports-p","title":"Ports (-p)","text":"Parameter Function 8443 Unifi web admin port 3478/udp Unifi STUN port 10001/udp Required for AP discovery 8080 Required for device communication 1900/udp Required for Make controller discoverable on L2 network option 8843 Unifi guest portal HTTPS redirect port 8880 Unifi guest portal HTTP redirect port 6789 For mobile throughput test 5514/udp Remote syslog port"},{"location":"deprecated_images/docker-unifi-controller/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. MEM_LIMIT=1024 Optionally change the Java memory limit (in Megabytes). Set to default to reset to default MEM_STARTUP=1024 Optionally change the Java initial/minimum memory (in Megabytes). Set to default to reset to default"},{"location":"deprecated_images/docker-unifi-controller/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"deprecated_images/docker-unifi-controller/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"deprecated_images/docker-unifi-controller/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"deprecated_images/docker-unifi-controller/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"deprecated_images/docker-unifi-controller/#support-info","title":"Support Info","text":""},{"location":"deprecated_images/docker-unifi-controller/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"deprecated_images/docker-unifi-controller/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"deprecated_images/docker-unifi-controller/#via-docker-run","title":"Via Docker Run","text":""},{"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":"

Warning

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.

"},{"location":"deprecated_images/docker-unifi-controller/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"deprecated_images/docker-unifi-controller/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"deprecated_images/docker-unifi-controller/#versions","title":"Versions","text":""},{"location":"general/container-customization/","title":"Customizing LinuxServer Containers","text":"

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.

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.

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:

All of the functionality described in this post is live on every one of the containers we currently maintain:

https://fleet.linuxserver.io

Note

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.

"},{"location":"general/container-customization/#custom-scripts","title":"Custom Scripts","text":"

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 /custom-cont-init.d and add any scripts you want. These scripts can contain logic for installing packages, copying over custom files to other locations, or installing plugins.

Because this location is outside of /config you will need to mount it like any other volume if you wish to make use of it. e.g. -v /home/foo/appdata/my-custom-files:/custom-cont-init.d if using the Docker CLI or

services:\n  bar:\n    volumes:\n      - /home/foo/appdata/bar:/config\n      - /home/foo/appdata/my-custom-files:/custom-cont-init.d:ro\n

if using compose. Where possible, to improve security, we recommend mounting them read-only (:ro) so that container processes cannot write to the location.

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.

#!/bin/bash\n\necho \"**** installing ffmpeg ****\"\napk add --no-cache ffmpeg\n

Note

The folder /custom-cont-init.d 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.

"},{"location":"general/container-customization/#custom-services","title":"Custom Services","text":"

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 /custom-services.d. 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. -v /home/foo/appdata/my-custom-services:/custom-services.d if using the Docker CLI or

services:\n  bar:\n    volumes:\n      - /home/foo/appdata/bar:/config\n      - /home/foo/appdata/my-custom-services:/custom-services.d:ro\n

if using compose. Where possible, to improve security, we recommend mounting them read-only (:ro) so that container processes cannot write to the location.

Running cron in our containers is now as simple as a single file. Drop this script in /custom-services.d/cron and it will run automatically in the container:

#!/usr/bin/with-contenv bash\n\n/usr/sbin/crond -f -S -l 0 -c /etc/crontabs\n

Note

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.

Note

The folder /custom-services.d 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.

"},{"location":"general/container-customization/#docker-mods","title":"Docker Mods","text":"

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.

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.

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)

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 /.

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.

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:

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

The source code for this mod can be found here.

Note

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.

"},{"location":"general/container-customization/#we-are-here-to-help","title":"We are here to help","text":"

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.

Our Discord server is best for quick direct contact and our Forum for a longer running project.

There is zero barrier to entry for these levels of container customization and you are in complete control.

We are looking forward to your next creation.

"},{"location":"general/container-execution/","title":"Container Execution","text":"

You may find at some point you need to view the internal data of a container.

"},{"location":"general/container-execution/#shell-access","title":"Shell Access","text":"

Particularly useful when debugging the application - to shell in to one of our containers, run the following:

docker exec -it <container_name> /bin/bash\n
"},{"location":"general/container-execution/#tailing-the-logs","title":"Tailing the logs","text":"

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 docker logs command:

docker logs -f --tail=<number_of_lines_to_start_with> <container_name>\n

The --tail argument is optional, but useful if the application has been running for a long time - the logs command by default will output all logs.

To make life simpler for yourself here's a handy bash alias to do some of the leg work for you:

# ~/.bash_aliases\nalias dtail='docker logs -tf --tail=\"50\" \"$@\"'\n

Execute it with dtail <container_name>.

"},{"location":"general/container-execution/#checking-the-build-version","title":"Checking the build version","text":"

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.

To obtain the build version for the container:

docker inspect -f '{{ index .Config.Labels \"build_version\" }}' <container_name>\n

Or the image:

docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/<image_name>\n
"},{"location":"general/containers-101/","title":"Docker Containers: 101","text":"

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.

"},{"location":"general/containers-101/#what-do-i-need-to-know","title":"What do I need to know?","text":"

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.

docker run hello-world\n

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. hello-world 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.

"},{"location":"general/containers-101/#key-terminology","title":"Key Terminology","text":"

There are a few terms you might find useful to understand when working with containers:

"},{"location":"general/containers-101/#key-concepts","title":"Key Concepts","text":"

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.

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 -p flag.

docker run -d --name=letsencrypt -p 80:80 -p 443:443 linuxserver/letsencrypt\n

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.

Containers are an amazing way to run applications in a secure, sandboxed way.

"},{"location":"general/docker-compose/","title":"Docker Compose","text":""},{"location":"general/docker-compose/#intro","title":"Intro","text":"

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.

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.

"},{"location":"general/docker-compose/#installation","title":"Installation","text":""},{"location":"general/docker-compose/#official-repos","title":"Official Repos","text":"

Starting with version 2, Docker started publishing docker compose 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.

Install docker from the official repos as described here, making sure that you install the docker-compose-plugin package as part of the process.

"},{"location":"general/docker-compose/#manual-package","title":"Manual Package","text":"

You can install docker compose manually via the following commands:

mkdir -p \"$HOME/.docker/cli-plugins\" && \\\ncurl -sL \"https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)\" -o \"$HOME/.docker/cli-plugins/docker-compose\" && \\\nchmod +x $HOME/.docker/cli-plugins/docker-compose\n

If you prefer to install it system-wide you can use /usr/local/lib/docker/cli-plugins instead of $HOME/.docker/cli-plugins

Assuming you already have docker (or at the very least docker-cli) installed, preferably from the official docker repos, running docker compose version should display the compose version.

"},{"location":"general/docker-compose/#v1x-compatibility","title":"v1.x compatibility","text":"

As v2 runs as a plugin instead of a standalone binary, it is invoked by docker compose args instead of docker-compose args. To make migration easier, Docker released a replacement binary for docker-compose on x86_64 and aarch64 platforms. More info on that can be found at the upstream repo.

"},{"location":"general/docker-compose/#single-service-usage","title":"Single service Usage","text":"

Here's a basic example for deploying a Linuxserver container with docker compose:

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

If you save the above snippet in a file named compose.yml, you can simply run docker compose up -d from within the same folder and the heimdall image will be automatically pulled, and a container will be created and started. up means bring the services up, and -d means do it in the background.

If you want to do it from a different folder or if you named the yaml file differently, ie. heimdall.yml, then you can define it in the command with -f: docker compose -f /path/to/heimdall.yml up -d

To bring down the services, simply do docker compose down or docker compose -f /path/to/heimdall.yml down and all containers defined by the yml will be stopped and destroyed.

"},{"location":"general/docker-compose/#multiple-service-usage","title":"Multiple Service Usage","text":"

You can have multiple services managed by a single compose yaml. Copy the contents below the services: line in any of our readme yaml samples into the same yaml file and the docker compose up/down commands will apply to all services at once.

Let's say you have the following in a yaml file named compose.yml:

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

You now have 3 services defined in there: heimdall, nginx and mariadb. When you do a docker compose up -d, 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. docker compose down will bring all three services down and destroy the containers (persistent data will remain).

"},{"location":"general/docker-compose/#updates","title":"Updates","text":"

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 docker compose pull. Then we issue docker compose up -d 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.

Similarly, if you edit the contents of the yaml file and re-issue docker compose up -d, only the containers affected by the changes to the yaml file will be recreated, others will be untouched.

Defining the containers running on your server as code is a core tenet of a \"Devops\" approach to the world. Constructing elaborate docker run commands and then forgetting which variables you passed is a thing of the past when using docker compose.

"},{"location":"general/docker-compose/#support-requests","title":"Support Requests","text":"

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.

If your compose yaml makes use of .env files, please post an output of docker compose config or docker compose config -f /path/to/compose.yml for the entire yaml, or docker compose config <service name> for a single service, as it will automatically replace the environment variables with their actual values.

There are multiple ways to see the logs of your containers. In some instances, using docker logs is preferable to docker compose logs. By default docker logs will not run unless you define which service the logs are coming from. The docker compose logs will pull all of the logs for the services defined in the compose.yml file.

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 compose.yml 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 docker logs heimdall or docker compose logs heimdall. The bash_alias for dclogs can be used if you define your service after you've typed the alias. Likewise, the bash_alias detail will not run without defining the service after it.

"},{"location":"general/docker-compose/#common-gotchas","title":"Common Gotchas","text":""},{"location":"general/docker-compose/#quoting-variables","title":"Quoting variables","text":"

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.

environment:\n  - 'key=value'\n

This method requires the entire line wrapped in quotes, including the key and the value.

environment:\n  key: 'value'\n

With this method, you can wrap just the value in quotes.

"},{"location":"general/docker-compose/#escaping-signs","title":"Escaping $ signs","text":"

Docker compose interprets values that follow a $ as a variable and it will interpolate at runtime. If your environment variables contain the $ character as part of the value and it needs to be treated literally, you need to escape it with another $ sign.

For example, if you want the variable key to have the value real$value exactly, you need to set - 'key=real$$value' in the compose yaml.

"},{"location":"general/docker-compose/#tips-tricks","title":"Tips & Tricks","text":"

docker compose expects a compose.yml 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 compose.yml file is being kept in the folder /opt. If your compose file is kept somewhere else, like in a home directory, then the path will need to be changed.

Create or open the file ~/.bash_aliases and populate with the following content:

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

If the compose.yml file is in a home directory, the following can be put in the ~/.bash_aliases file.

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

Some distributions, like Ubuntu, already have the code snippet below in the ~/.bashrc file. If it is not included, you'll need to add the following to your ~/.bashrc file in order for the aliases file to be picked up:

if [ -f ~/.bash_aliases ]; then\n    . ~/.bash_aliases\nfi\n

Once configured, you can run source ~/.bashrc or log out and the log in again. Now you can type dcpull or dcup to manage your entire fleet of containers at once. It's like magic.

"},{"location":"general/fleet/","title":"Fleet","text":""},{"location":"general/fleet/#how-fleet-works","title":"How Fleet works","text":"

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.

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.

"},{"location":"general/fleet/#why-a-snapshot","title":"Why a snapshot?","text":"

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.

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:

API Time (ms) Docker Hub (multiple calls) 52000ms Fleet 50ms"},{"location":"general/fleet/#capabilities","title":"Capabilities","text":"

Fleet has the ability to display images with a particular state, which provides contextual information to visitors of the application's main page.

"},{"location":"general/fleet/#hidden","title":"Hidden","text":"

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.

"},{"location":"general/fleet/#unstable","title":"Unstable","text":"

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.

"},{"location":"general/fleet/#deprecated","title":"Deprecated","text":"

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.

"},{"location":"general/fleet/#api","title":"API","text":"

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

{% api-method method=\"get\" host=\"https://fleet.linuxserver.io\" path=\"/api/v1/images\" %} {% api-method-summary %} Get All Repositories and Images

{% api-method-description %} Returns all synchronized images.

{% api-method-spec %}

{% api-method-response %} {% api-method-response-example httpCode=200 %} {% api-method-response-example-description %} All synchronized repositories and images returned.

{\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

{% endapi-method-response-example %} {% endapi-method-response %} {% endapi-method-spec %}

Info

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.

"},{"location":"general/fleet/#running-fleet","title":"Running Fleet","text":"

Warning

Fleet is a Java application and requires at least JRE 11.

Grab the latest Fleet release from GitHub.

"},{"location":"general/fleet/#sql","title":"SQL","text":"

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 GRANT permissions to the fleet database. The following script should be sufficient to get the initial database set up.

CREATE SCHEMA `fleet`;\nCREATE USER 'fleet_user' IDENTIFIED BY 'supersecretpassword';\nGRANT ALL ON `fleet`.* TO 'fleet_user';\n

The username and password that you define must then be provided as part of Fleet's configuration.

"},{"location":"general/fleet/#configuration-file","title":"Configuration File","text":"

All primary configuration for Fleet at runtime is loaded in via a fleet.properties file. This can be located anywhere on the file system, and is loaded in via a Runtime argument:

# Runtime\nfleet.app.port=8080\n\n# Database Connectivity\nfleet.database.driver=org.mariadb.jdbc.Driver\nfleet.database.url=jdbc:mariadb://<IP_OR_URL>:3306/fleet\nfleet.database.username=<fleet_sql_user>\nfleet.database.password=<fleet_sql_password>\n\n# Password security\nfleet.admin.secret=<a_random_string>\n

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.

Info

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. fleet.app.port=8080 becomes export fleet_app_port=8080

Property Name Purpose fleet.app.port The port which the application will be running under. fleet.admin.secret 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. fleet.database.driver The driver to use for connections to Fleet's database. This should be org.mariadb.jdbc.Driver fleet.database.url The full JDBC connection string to the database. fleet.database.username 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. fleet.database.password The password for the SQL user"},{"location":"general/fleet/#runtime-arguments","title":"Runtime Arguments","text":"

As well as the base configuration file, Fleet also supports some runtime arguments by means of the -D flag. These can be used to direct Fleet to behave in a specific way at runtime.

Info

Unlike the properties defined above, these properties are only accessed via the JVM arguments (-D).

Runtime Argument Purpose fleet.config.base The absolute path of the configuration file. fleet.show.passwords Tells fleet to show passwords in plain text in its logs. Not recommended. fleet.nuke.database 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. fleet.skip.sync.on.startup 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":"

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:

Username: admin

Password: admin

Warning

You should change the default password for this user as soon as possible! This can be done via the Admin -> Users menu options.

"},{"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":"

We have curated various base images which our main application images derive from. This is beneficial for two main reasons:

"},{"location":"general/running-our-containers/#the-config-volume","title":"The /config volume","text":"

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 /config directory which holds all application-specific configuration. With the exception of a small number of images, all of our images expose this volume.

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 /config\". 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!

"},{"location":"general/running-our-containers/#creating-a-container","title":"Creating a Container","text":"

To create a container from one of our images, you must use either docker create or docker run. Each image follows the same pattern in the command when creating a container:

docker create \\\n    --name=<container_name> \\\n    -v <path_to_data>:/config \\\n    -e PUID=<uid> \\\n    -e PGID=<gid> \\\n    -p <host_port>:<app_port> \\\n    linuxserver/<image_name>\n
"},{"location":"general/swag/","title":"SWAG","text":"

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

"},{"location":"general/swag/#introduction","title":"Introduction","text":""},{"location":"general/swag/#what-are-ssl-certs","title":"What are SSL certs?","text":"

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.

"},{"location":"general/swag/#what-is-lets-encrypt-andor-zerossl","title":"What is Let's Encrypt (and/or ZeroSSL)?","text":"

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.

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.

"},{"location":"general/swag/#creating-a-swag-container","title":"Creating a SWAG container","text":"

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.

"},{"location":"general/swag/#docker-cli","title":"docker cli","text":"
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=<token> `#optional` \\\n  -e EMAIL=<e-mail> `#optional` \\\n  -e ONLY_SUBDOMAINS=false `#optional` \\\n  -e EXTRA_DOMAINS=<extradomains> `#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  lscr.io/linuxserver/swag\n
"},{"location":"general/swag/#docker-compose","title":"docker-compose","text":"

Compatible with docker-compose v2 schemas.

---\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=<token> #optional\n      - EMAIL=<e-mail> #optional\n      - ONLY_SUBDOMAINS=false #optional\n      - EXTRA_DOMAINS=<extradomains> #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
"},{"location":"general/swag/#authorization-method","title":"Authorization method","text":"

Our image currently supports three different methods to validate domain ownership:

The validation is performed when the container is started for the first time. Nginx won't be up until ssl certs are successfully generated.

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 /config/log/letsencrypt to see why the auto-renewals failed.

"},{"location":"general/swag/#cert-provider-lets-encrypt-vs-zerossl","title":"Cert Provider (Let's Encrypt vs ZeroSSL)","text":"

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.

Although very similar, ZeroSSL does (at the time of writing) have a couple of advantages over Let's Encrypt:

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 CERTPROVIDER=zerossl to retrieve a cert from ZeroSSL instead. The only gotcha is that ZeroSSL requires the EMAIL env var to be set so the certs can be tied to a ZeroSSL account for management over their web interface.

"},{"location":"general/swag/#port-forwards","title":"Port forwards","text":"

Port 443 mapping is required for access through https://domain.com. 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.

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.

Port 80 forwarding is required for http 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.

"},{"location":"general/swag/#docker-networking","title":"Docker networking","text":"

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.

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.

For the below examples, we will use a network named lsio. We can create it via docker network create lsio. After that, any container that is created with --net=lsio can ping each other by container name as dns hostname.

Info

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.

"},{"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":"

Let's assume our domain name is linuxserver-test.com and we would like our cert to also cover www.linuxserver-test.com and ombi.linuxserver-test.com. On the router, forward ports 80 and 443 to your host server. On your dns provider (if using your own domain), create an A record for the main domain and point it to your server IP (wan). Also create CNAMES for www and ombi and point them to the A record for the domain.

With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio, and then create the container:

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

Once created, we do docker start swag to start it.

With docker compose, we can use the following yml:

---\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

We can fire up the container with docker-compose up -d

After the container is started, we'll watch the logs with docker logs swag -f. After some initial initialization, we will see the validation steps. After all the steps, it should print Server ready in the logs.

Now we can browse to https://www.linuxserver-test.com and we'll see the default landing page displayed.

"},{"location":"general/swag/#create-container-via-dns-validation-with-a-wildcard-cert","title":"Create container via dns validation with a wildcard cert","text":"

Let's assume our domain name is linuxserver-test.com and we would like our cert to also cover www.linuxserver-test.com, ombi.linuxserver-test.com and any other subdomain possible. On the router, we'll forward port 443 to our host server (Port 80 forwarding is optional).

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: cloudflare, cloudxns, digitalocean, dnsimple, dnsmadeeasy, google, luadns, nsone, ovh, rfc2136, route53, 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.

On our dns provider, we'll create an A record for the main domain and point it to our server IP (wan). We'll also create a CNAME for * and point it to the A 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.

Now, let's get the container set up.

With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio, and then create the container:

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

And we start the container via docker start swag

With docker compose, we'll use:

---\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

Then we'll fire up the container via docker-compose up -d

After the container is started, we'll watch the logs with docker logs swag -f. 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 /config/dns-conf which is mapped from the host location (according to above settings) /home/aptalca/appdata/swag/dns-conf/ 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->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 dns_cloudflare_email and dns_cloudflare_api_key values, then uncomment dns_cloudflare_api_token and add your API token against it.

Once we enter the credentials into the ini file, we'll restart the docker container via docker restart swag and again watch the logs. After successful validation, we should see the notice Server ready and our webserver should be up and accessible at https://www.linuxserver-test.com.

"},{"location":"general/swag/#create-container-via-duckdns-validation-with-a-wildcard-cert","title":"Create container via duckdns validation with a wildcard cert","text":"

We will first need to get a subdomain from DuckDNS. Let's assume we get linuxserver-test so our url will be linuxserver-test.duckdns.org. 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 443 to our host server (Port 80 forward is optional).

Now, let's get the container set up.

With docker cli, we'll first create a user defined bridge network if we haven't already docker network create lsio, and then create the container:

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

And we start the container via docker start swag

With docker compose, we'll use:

---\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

Then we'll fire up the container via docker-compose up -d

After the container is started, we'll watch the logs with docker logs swag -f. We'll see some initialization and then we will see the validation steps. After all the steps, it should print Server ready in the logs.

Now we can access the webserver by browsing to https://www.linuxserver-test.duckdns.org.

Warning

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 https://linuxserver-test.duckdns.org, we'll see a browser warning about an invalid ssl cert. But accessing it through the www (or ombi or any other) subdomain should work fine.

"},{"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":"

Once we have a working container, we can drop our web documents in and modify the nginx config files to set up our webserver.

All the necessary files are under /config which is mapped from the host location (set by above examples) /home/aptalca/appdata/swag.

We can drop all of our web/html files into /config/www.

The main site config nginx uses can be found at /config/nginx/site-confs/default. 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 /config/www, so if you drop a page1.html into that location, it will be accessible at https://linuxserver-test.com/page1.html.

To enable listening on port 80 and automatically redirecting to port 443 for enforcing ssl, uncomment the lines at the top of the default site config so it reads:

# redirect all traffic to https\nserver {\n    listen 80;\n    listen [::]:80;\n    server_name _;\n    return 301 https://$host$request_uri;\n}\n

After any changes to the config files, simply restart the container via docker restart swag to reload the nginx config.

"},{"location":"general/swag/#hosting-a-wordpress-site","title":"Hosting a Wordpress site","text":"

Wordpress requires a mysql database. For that, we'll use the linuxserver MariaDB docker image.

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:

---\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

And here are the docker cli versions (make sure you already created the lsio network as described above: Mariadb:

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

SWAG:

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

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:

wget https://wordpress.org/latest.tar.gz\ntar xvf latest.tar.gz -C /home/aptalca/appdata/swag/www/\nrm latest.tar.gz\n

Now that we have all the Wordpress files under the container's /config/www/wordpress folder, we'll need to make some adjustments to the nginx configurations.

Alternatively, if you need to run multiple instances of Wordpress, you can leave /config/nginx/site-confs/default entirely unchanged and create new site-confs for each instance of Wordpress. The new site-confs will be slimmed down copies of /config/nginx/site-confs/default. 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 EXTRA_DOMAINS environment variable.

Ex: /config/nginx/site-confs/myfirstsubdomain.linuxserver-test.com.conf

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

/config/nginx/site-confs/mysecondsubdomain.linuxserver-test.com.conf

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

Now that you have completed changing your nginx configurations you need to restart the SWAG container.

Now we should be able to access our Wordpress config page at https://linuxserver-test.com/wp-admin/install.php. We'll go ahead and enter mariadb as the Database Host 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 (WP_database, WP_dbuser and WP_dbpassword).

Once we go through the rest of the install steps, our Wordpress instance should be fully set up and available at https://linuxserver-test.com.

If you would like to have http requests on port 80 enabled and auto redirected to https on port 443, uncomment the relevant lines at the top of the default site config to read:

# redirect all traffic to https\nserver {\n    listen 80;\n    listen [::]:80;\n    server_name _;\n    return 301 https://$host$request_uri;\n}\n
"},{"location":"general/swag/#reverse-proxy","title":"Reverse Proxy","text":"

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).

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.

"},{"location":"general/swag/#preset-proxy-confs","title":"Preset proxy confs","text":"

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 /config/nginx/proxy-confs folder as inactive sample files. To activate, one must rename a conf file to remove .sample from the filename and restart the SWAG container. Any proxy conf file in that folder with a name that matches *.subdomain.conf or *.subfolder.conf will be loaded in nginx during container start.

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.

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.

"},{"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":"

Here's the preset proxy conf for Heimdall as a subdomain (ie. https://heimdall.linuxserver-test.com):

# 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

Let's dissect this conf to look at what each directive or block does.

server {\n}\n

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.

    listen 443 ssl;\n    listen [::]:443 ssl;\n

This means that only requests coming to port 443 will match this server block.

    server_name heimdall.*;\n

Only destination addresses that match heimdall.* will match this server block.

    include /config/nginx/ssl.conf;\n

This directive injects the contents of our ssl.conf file here, which contains all ssl related settings (cert location, ciphers used, etc.).

    client_max_body_size 0;\n

Removes the size limitation on uploads (default 1MB).

    # enable for ldap auth, fill in ldap details in ldap.conf\n    #include /config/nginx/ldap.conf;\n

Commented out (disabled) by default. When enabled, it will inject the contents of ldap.conf, necessary settings for LDAP auth.

    # enable for Authelia\n    #include /config/nginx/authelia-server.conf;\n

Commented out (disabled) by default. When enabled, it will inject the contents of authelia-server.conf, necessary settings for Authelia integration.

    location / {\n    }\n

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 / so it will match any subfolder or path at this address.

        # enable the next two lines for http auth\n        #auth_basic \"Restricted\";\n        #auth_basic_user_file /config/nginx/.htpasswd;\n

Commented out (disabled) by default. When enabled, it will use .htpasswd to perform user/pass authentication before allowing access.

        # enable the next two lines for ldap auth\n        #auth_request /auth;\n        #error_page 401 =200 /login;\n

Commented out (disabled) by default. When enabled, it will use LDAP authentication before allowing access.

        # enable for Authelia\n        #include /config/nginx/authelia-location.conf;\n

Commented out (disabled) by default. When enabled, it will use Authelia authentication before allowing access.

        include /config/nginx/proxy.conf;\n

Injects the contents of proxy.conf, which contains various directives and headers that are common for proxied connections.

        resolver 127.0.0.11 valid=30s;\n

Tells nginx to use the docker dns to resolve the IP address when the container name is used as address in the next line.

        set $upstream_app heimdall;\n        set $upstream_port 443;\n        set $upstream_proto https;\n        proxy_pass $upstream_proto://$upstream_app:$upstream_port;\n

This is a bit of a tricky part. Normally, we could just put in the directive proxy_pass https://heimdall:443; 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.

If the proxy_pass statement contains a variable instead of a dns hostname, nginx doesn't check whether it's accessible or not during start. So here we are setting 3 variables, one named upstream_app with the value of heimdall, one named $upstream_port, with the value of the internal heimdall port 443, and one named $upstream_proto with the value set to https. 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.

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 $upstream_app to an IP address instead: set $upstream_app 192.168.1.10;

"},{"location":"general/swag/#subfolder-proxy-conf","title":"Subfolder proxy conf","text":"

Here's the preset proxy conf for mytinytodo via a subfolder

# 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

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.

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.

# works with https://github.com/breakall/mytinytodo-docker\n# set the mtt_url to 'https://your.domain.com/todo/' in db/config.php\n

These are the instructions to get the tinytodo container ready to work with our reverse proxy.

location ^~ /todo {\n    return 301 $scheme://$host/todo/;\n}\n

Redirects requests for https://linuxserver-test.com/todo to https://linuxserver-test.com/todo/ (added forward slash at the end).

location ^~ /todo/ {\n}\n

Any requests sent to nginx where the destination starts with https://linuxserver-test.com/todo/ will match this location block.

    set $upstream_app mytinytodo;\n    set $upstream_port 80;\n    set $upstream_proto http;\n    proxy_pass $upstream_proto://$upstream_app:$upstream_port/;\n

Same as the previous example, we set a variable $upstream_app with the value mytinytodo 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 -p 8080:80, we still set $upstream_port variable to 80.

Info

Nginx has an interesting behavior displayed here. Even though we define http://$upstream_mytinytodo:80/ as the address nginx should proxy, nginx actually connects to http://$upstream_mytinytodo:80/todo. Whenever we use a variable as part of the proxy_pass url, nginx automatically appends the defined location (in this case /todo) to the end of the proxy_pass url before it connects. If we include the subfolder, nginx will try to connect to http://$upstream_mytinytodo:80/todo/todo and will fail.

"},{"location":"general/swag/#ombi-subdomain-reverse-proxy-example","title":"Ombi subdomain reverse proxy example","text":"

In this example, we will reverse proxy Ombi at the address https://ombi.linuxserver-test.com.

First let's make sure that we have a CNAME for ombi set up on our dns provider (a wildcard CNAME * will also cover this) and it is pointing to our A 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 lsio) as described above. We also need to make sure that port 443 on our router is forwarded to the correct port on our server.

Here's a docker compose stack we can use to set up both containers:

---\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

And here are the docker cli versions: Ombi:

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

SWAG:

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

Once our containers up and running (and we confirm we can reach the placeholder page at https://linuxserver-test.com), we simply rename the file ombi.subdomain.conf.sample under /config/nginx/proxy-confs/ to ombi.subdomain.conf and we restart the SWAG container. Now when we browser to https://ombi.linuxserver-test.com we should see the Ombi gui.

"},{"location":"general/swag/#nextcloud-subdomain-reverse-proxy-example","title":"Nextcloud subdomain reverse proxy example","text":"

Nextcloud is a bit trickier because the app has various security measures built-in, forcing us to configure certain options manually.

As with the other examples, let's make sure that we have a CNAME for nextcloud set up on our dns provider (a wildcard CNAME * will also cover this) and it is pointing to our A 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 lsio) 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.

In this example we'll use the duckdns wildcard cert, but you can use any Let's Encrypt validation you like as described above

Here's a docker compose stack to set up our SWAG, nextcloud and mariadb containers:

---\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

And here are the docker cli versions: Nextcloud:

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

Mariadb:

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

SWAG:

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

Now we find the file named nextcloud.subdomain.conf.sample under SWAG's /config/nginx/proxy-confs folder and rename it to nextcloud.subdomain.conf, then restart the SWAG container.

If this is the first time we are accessing Nextcloud (we've never accessed it locally before), we can simply navigate to https://nextcloud.linuxserver-test.duckdns.org and we should see the Nextcloud set up page. We'll fill out the info, use the mariadb user ncuser and the password we selected in the environment variable (ncpassword in the above example) and we'll use mariadb as the Database Host address (container name as dns hostname).

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.

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 nextcloud.subdomain.conf file:

# 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' => ['swag'],\n#  'overwrite.cli.url' => 'https://nextcloud.your-domain.com/',\n#  'overwritehost' => 'nextcloud.your-domain.com',\n#  'overwriteprotocol' => '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 => '192.168.0.1:444', # This line may look different on your setup, don't modify it.\n#    1 => 'nextcloud.your-domain.com',\n#  ),\n

These settings will tell Nextcloud to respond to queries where the destination address is our domain name.

If you followed the above directions to set it up for the first time, you only need to add the line 'trusted_proxies' => ['swag'],, 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 ssl.conf.

"},{"location":"general/swag/#plex-subfolder-reverse-proxy-example","title":"Plex subfolder reverse proxy example","text":"

In this example, we will set up Plex as a subfolder so it will be accessible at https://linuxserver-test.com/plex. 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 PLEX_CLAIM variable to automatically claim the server with our plex account.

Once the Plex server is set up, it is safe to switch it to bridge networking from host.

Here's a docker compose stack we can use to set up both containers:

---\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

Here are the docker cli versions: Plex:

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

SWAG:

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

Once the containers are set up, we browse to http://LOCALSERVERIP:32400/web and set up our Plex server with our Plex account. Then we can find the file named plex.subfolder.conf.sample under our SWAG container's /config/nginx/proxy-confs folder and rename it to plex.subfolder.conf.

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 https://linuxserver-test.com/plex.

If we are using host networking for our plex container, we will also have to make one modification to the plex.subfolder.conf. We need to find the line that reads proxy_pass http://$upstream_plex:32400; and replace $upstream_plex with our Plex server's local IP address (ie. proxy_pass http://192.168.1.10:32400;). Then we can restart SWAG and access Plex at https://linuxserver-test.com/plex.

If we want Plex to always use our domain to connect (including in mobile apps), we can add our url https://linuxserver-test.com/plex into the Custom server access URLs 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.

"},{"location":"general/swag/#using-heimdall-as-the-home-page-at-domain-root","title":"Using Heimdall as the home page at domain root","text":"

In this example, we will set Heimdall as our homepage at domain root so when we navigate to https://linuxserver-test.com we will reach Heimdall.

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.

Here's a docker compose stack we can use to set up both containers:

---\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

Here are the docker cli versions: Heimdall:

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

SWAG:

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

Once the containers are set up, we'll find the file named heimdall.subfolder.conf.sample under SWAG's /config/nginx/proxy-confs folder and rename it to heimdall.subfolder.conf. If we look inside that conf file, we'll see that it is set to use location / {, which will cause an issue because there is already a location defined for / inside the default site config for SWAG. So we need to edit the default site config at /config/nginx/site-confs/default and comment out the location block for / inside our main server block so it reads:

    #location / {\n    #    try_files $uri $uri/ /index.html /index.php?$args =404;\n    #}\n

That way, nginx will use the / location block from our heimdall proxy conf instead.

After that, when we navigate to https://linuxserver-test.com, we'll see the Heimdall interface.

If we want to password protect our new homepage, we can run the following on the host command line to create a new .htpasswd file: docker exec -it swag htpasswd -c /config/nginx/.htpasswd anyusername. After which, we can activate authentication by editing the heimdall.subfolder.conf file to uncomment the relevant lines so it reads:

    # enable the next two lines for http auth\n    auth_basic \"Restricted\";\n    auth_basic_user_file /config/nginx/.htpasswd;\n
"},{"location":"general/swag/#troubleshooting","title":"Troubleshooting","text":"

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

"},{"location":"general/swag/#common-errors","title":"Common errors","text":""},{"location":"general/swag/#404","title":"404","text":"

This error simply means that the resource was not found. Commonly happening when you try to access a subfolder that is not enabled.

"},{"location":"general/swag/#502","title":"502","text":"

This error means that nginx can't talk to the application. There is a few common reasons for this:

"},{"location":"general/swag/#final-thoughts","title":"Final Thoughts","text":"

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

"},{"location":"general/swag/#how-to-request-support","title":"How to Request Support","text":"

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:

"},{"location":"general/understanding-puid-and-pgid/","title":"Understanding PUID and PGID","text":"

Info

We are aware that recent versions of the Docker engine have introduced the --user flag. Our images are not yet compatible with this, so we recommend continuing usage of PUID and PGID.

"},{"location":"general/understanding-puid-and-pgid/#why-use-these","title":"Why use these?","text":"

Docker runs all of its containers under the root 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 root. 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).

Another issue is file management within the container's mapped volumes. If the process is running under root, all files and directories created during the container's lifespan will be owned by root, thus becoming inaccessible by you.

Using the PUID and PGID 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.

"},{"location":"general/understanding-puid-and-pgid/#using-the-variables","title":"Using the variables","text":"

When creating a container from one of our images, ensure you use the -e PUID and -e PGID options in your docker command:

docker create --name=beets -e PUID=1000 -e PGID=1000 linuxserver/beets\n

Or, if you use docker-compose, add them to the environment: section:

environment:\n  - PUID=1000\n  - PGID=1000\n

It is most likely that you will use the id of yourself, which can be obtained by running the command below. The two values you will be interested in are the uid and gid.

id $user\n
"},{"location":"general/updating-our-containers/","title":"Updating our containers","text":"

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.

"},{"location":"general/updating-our-containers/#steps-required-to-update","title":"Steps required to update","text":"

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.

"},{"location":"general/updating-our-containers/#stop-the-container","title":"Stop the container","text":"

Firstly, stop the container.

docker stop <container_name>\n
"},{"location":"general/updating-our-containers/#remove-the-container","title":"Remove the container","text":"

Once the container has been stopped, remove it.

Warning

Did you remember to persist the /config 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.

docker rm <container_name>\n
"},{"location":"general/updating-our-containers/#pull-the-latest-version","title":"Pull the latest version","text":"

Now you can pull the latest version of the application image from Docker Hub.

docker pull linuxserver/<image_name>\n
"},{"location":"general/updating-our-containers/#recreate-the-container","title":"Recreate the container","text":"

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.

docker create \\\n    --name=<container_name> \\\n    -v <path_to_data>:/config \\\n    -e PUID=<uid> \\\n    -e PGID=<gid> \\\n    -p <host_port>:<app_port> \\\n    linuxserver/<image_name>\n
"},{"location":"general/updating-our-containers/#docker-compose","title":"Docker Compose","text":"

It is also possible to update a single container using Docker Compose:

docker-compose pull linuxserver/<image_name>\ndocker-compose up -d <container_name>\n

Or, to update all containers at once:

docker-compose pull\ndocker-compose up -d\n
"},{"location":"general/updating-our-containers/#removing-old-images","title":"Removing old images","text":"

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 prune old images from your system, which will free up space:

docker image prune\n
"},{"location":"general/volumes/","title":"Volumes","text":"

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.

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.

"},{"location":"general/volumes/#mapping-a-volume-to-your-container","title":"Mapping a volume to your container","text":"

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 /config directory.

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 /opt/appdata. Under this tree, you can create a single configuration directory for each of your containers.

When creating the container itself, now is the time to make use of the -v flag, which will tell Docker to overlay your host directory over the container's directory:

docker create --name my_container \\\n    -v /opt/appdata/my_config:/config \\\n    linuxserver/<an_image>\n

The above example shows how the usage of -v has mapped the host machine's /opt/appdata/my_config directory over the container's internal /config directory.

Info

When dealing with mapping overlays, it always reads host:container

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 /config 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.

"},{"location":"images/","title":"Images","text":"

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.

"},{"location":"images/docker-adguardhome-sync/","title":"adguardhome-sync","text":""},{"location":"images/docker-adguardhome-sync/#linuxserveradguardhome-sync","title":"linuxserver/adguardhome-sync","text":"

Adguardhome-sync is a tool to synchronize AdGuardHome config to replica instances.

"},{"location":"images/docker-adguardhome-sync/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/adguardhome-sync:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-adguardhome-sync/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable releases from GitHub"},{"location":"images/docker-adguardhome-sync/#application-setup","title":"Application Setup","text":"

Edit the adguardhome-sync.yaml with your AdGuardHome instance details, for more information check out AdGuardHome Sync.

"},{"location":"images/docker-adguardhome-sync/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-adguardhome-sync/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-adguardhome-sync/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-adguardhome-sync/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-adguardhome-sync/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Port for AdGuardHome Sync's web API."},{"location":"images/docker-adguardhome-sync/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. CONFIGFILE=/config/adguardhome-sync.yaml Set a custom config file."},{"location":"images/docker-adguardhome-sync/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-adguardhome-sync/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-adguardhome-sync/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-adguardhome-sync/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-adguardhome-sync/#support-info","title":"Support Info","text":""},{"location":"images/docker-adguardhome-sync/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-adguardhome-sync/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-adguardhome-sync/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-adguardhome-sync/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-adguardhome-sync/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-adguardhome-sync/#versions","title":"Versions","text":""},{"location":"images/docker-airsonic-advanced/","title":"airsonic-advanced","text":""},{"location":"images/docker-airsonic-advanced/#linuxserverairsonic-advanced","title":"linuxserver/airsonic-advanced","text":"

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.

"},{"location":"images/docker-airsonic-advanced/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/airsonic-advanced:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-airsonic-advanced/#application-setup","title":"Application Setup","text":"

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.

Please see notes about upgrading from v10 to v11 here

Access WebUI at <your-ip>:4040.

Default user/pass is admin/admin

Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\". For some reverse proxies, you may need to pass JAVA_OPTS=-Dserver.use-forward-headers=true for airsonic to generate the proper URL schemes.

Note that if you want to use Airsonic's Java jukebox player, then PGID will need to match the group of your sound device (e.g. /dev/snd).

"},{"location":"images/docker-airsonic-advanced/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-airsonic-advanced/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-airsonic-advanced/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-airsonic-advanced/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-airsonic-advanced/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 WebUI"},{"location":"images/docker-airsonic-advanced/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. CONTEXT_PATH= For setting url-base in reverse proxy setups. JAVA_OPTS= For passing additional java options."},{"location":"images/docker-airsonic-advanced/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration file location. /music Location of music. /playlists Location for playlists to be saved to. /podcasts Location of podcasts. /media Location of other media."},{"location":"images/docker-airsonic-advanced/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/snd 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-airsonic-advanced/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-airsonic-advanced/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-airsonic-advanced/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-airsonic-advanced/#support-info","title":"Support Info","text":""},{"location":"images/docker-airsonic-advanced/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-airsonic-advanced/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-airsonic-advanced/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-airsonic-advanced/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-airsonic-advanced/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-airsonic-advanced/#versions","title":"Versions","text":""},{"location":"images/docker-altus/","title":"altus","text":""},{"location":"images/docker-altus/#linuxserveraltus","title":"linuxserver/altus","text":"

Altus is an Electron-based WhatsApp client with themes and multiple account support.

"},{"location":"images/docker-altus/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/altus:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-altus/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-altus/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128"},{"location":"images/docker-altus/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

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.

"},{"location":"images/docker-altus/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-altus/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-altus/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-altus/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-altus/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Altus desktop gui. 3001 Altus desktop gui HTTPS."},{"location":"images/docker-altus/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-altus/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and files."},{"location":"images/docker-altus/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= Required for electron apps to fucntion properly. --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-altus/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-altus/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-altus/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-altus/#support-info","title":"Support Info","text":""},{"location":"images/docker-altus/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-altus/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-altus/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-altus/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-altus/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-altus/#versions","title":"Versions","text":""},{"location":"images/docker-apprise-api/","title":"apprise-api","text":""},{"location":"images/docker-apprise-api/#linuxserverapprise-api","title":"linuxserver/apprise-api","text":"

Apprise-api Takes advantage of Apprise through your network with a user-friendly API.

Apprise API was designed to easily fit into existing (and new) eco-systems that are looking for a simple notification solution.

"},{"location":"images/docker-apprise-api/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/apprise-api:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-apprise-api/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-apprise-api/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-apprise-api/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-apprise-api/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-apprise-api/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Port for apprise's interface and API."},{"location":"images/docker-apprise-api/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-apprise-api/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-apprise-api/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-apprise-api/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-apprise-api/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-apprise-api/#support-info","title":"Support Info","text":""},{"location":"images/docker-apprise-api/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-apprise-api/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-apprise-api/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-apprise-api/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-apprise-api/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-apprise-api/#versions","title":"Versions","text":""},{"location":"images/docker-audacity/","title":"audacity","text":""},{"location":"images/docker-audacity/#linuxserveraudacity","title":"linuxserver/audacity","text":"

Audacity is an easy-to-use, multi-track audio editor and recorder. Developed by a group of volunteers as open source.

"},{"location":"images/docker-audacity/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/audacity:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-audacity/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-audacity/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-audacity/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-audacity/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-audacity/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-audacity/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-audacity/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-audacity/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Audacity desktop gui. 3001 Audacity desktop gui HTTPS."},{"location":"images/docker-audacity/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-audacity/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-audacity/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-audacity/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-audacity/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-audacity/#support-info","title":"Support Info","text":""},{"location":"images/docker-audacity/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-audacity/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-audacity/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-audacity/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-audacity/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-audacity/#versions","title":"Versions","text":""},{"location":"images/docker-babybuddy/","title":"babybuddy","text":""},{"location":"images/docker-babybuddy/#linuxserverbabybuddy","title":"linuxserver/babybuddy","text":"

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":"images/docker-babybuddy/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/babybuddy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-babybuddy/#application-setup","title":"Application Setup","text":"

Access the webui at <your-ip>:8000 (or whichever host port is mapped in docker arguments). The default user/pass are admin:admin.

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.

"},{"location":"images/docker-babybuddy/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-babybuddy/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-babybuddy/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-babybuddy/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-babybuddy/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 the port for the web ui"},{"location":"images/docker-babybuddy/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. CSRF_TRUSTED_ORIGINS=http://127.0.0.1:8000,https://babybuddy.domain.com Add any address you'd like to access babybuddy at (comma separated, no spaces)"},{"location":"images/docker-babybuddy/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-babybuddy/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-babybuddy/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-babybuddy/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-babybuddy/#support-info","title":"Support Info","text":""},{"location":"images/docker-babybuddy/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-babybuddy/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-babybuddy/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-babybuddy/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-babybuddy/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-babybuddy/#versions","title":"Versions","text":""},{"location":"images/docker-bambustudio/","title":"bambustudio","text":""},{"location":"images/docker-bambustudio/#linuxserverbambustudio","title":"linuxserver/bambustudio","text":"

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.

"},{"location":"images/docker-bambustudio/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/bambustudio:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-bambustudio/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-bambustudio/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-bambustudio/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-bambustudio/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-bambustudio/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-bambustudio/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-bambustudio/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-bambustudio/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Bambu Studio desktop gui. 3001 Bambu Studio desktop gui HTTPS."},{"location":"images/docker-bambustudio/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-bambustudio/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and files."},{"location":"images/docker-bambustudio/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-bambustudio/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-bambustudio/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-bambustudio/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-bambustudio/#support-info","title":"Support Info","text":""},{"location":"images/docker-bambustudio/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-bambustudio/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-bambustudio/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-bambustudio/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-bambustudio/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-bambustudio/#versions","title":"Versions","text":""},{"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 #linuxserver.io more information at:- IRC Forum Linuserver.io forum

A custom base image built with Alpine linux and S6 overlay..

The following line is only in this repo for loop testing:

"},{"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 #linuxserver.io more information at:- IRC Forum Linuserver.io forum

A custom base image built with Ubuntu cloud image and S6 overlay..

The following line is only in this repo for loop testing:

"},{"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 #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Alpine linux, nginx and S6 overlay..

Featuring :-

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.\" }

"},{"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 #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Alpine linux and S6 overlay..

The following line is only in this repo for loop testing:

"},{"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 #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Alpine linux and S6 overlay..

The following line is only in this repo for loop testing:

"},{"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 #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Debian baseimage and S6 overlay..

The following line is only in this repo for loop testing:

"},{"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 #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Alpine linux and S6 overlay..

The following line is only in this repo for loop testing:

"},{"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":"

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 /config will be lost.

These images contain the following services:

"},{"location":"images/docker-baseimage-kasmvnc/#options","title":"Options","text":"

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

If you are looking for a robust secure application gateway please check out SWAG.

All application settings are passed via environment variables:

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 /subfolder/ 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 fr_FR.UTF-8 ar_AE.UTF-8 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables(Alpine):

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-baseimage-kasmvnc/#available-distros","title":"Available Distros","text":"

All base images are built for x86_64 and aarch64 platforms.

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":"

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:

FROM ghcr.io/linuxserver/baseimage-kasmvnc:alpine318\nRUN apk add --no-cache firefox\nCOPY /root /\n

And we can define the application to start using:

mkdir -p root/defaults\necho \"firefox\" > root/defaults/autostart\n

Resulting in a folder that looks like this:

\u251c\u2500\u2500 Dockerfile\n\u2514\u2500\u2500 root\n  \u2514\u2500\u2500 defaults\n    \u2514\u2500\u2500 autostart\n

Now build and test:

docker build -t firefox .\ndocker run --rm -it -p 3000:3000 firefox bash\n

On http://localhost:3000 you should be presented with a Firefox web browser interface.

This similar setup can be used to embed any Linux Desktop application in a web accesible container.

If building images it is important to note that many application will not work inside of Docker without --security-opt seccomp=unconfined, they may have launch flags to not use syscalls blocked by Docker like with chromium based applications and --no-sandbox. In general do not expect every application will simply work like a native Linux installation without some modifications

"},{"location":"images/docker-baseimage-kasmvnc/#in-container-application-launching","title":"In container application launching","text":"

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:

<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<openbox_menu xmlns=\"http://openbox.org/3.4/menu\">\n<menu id=\"root-menu\" label=\"MENU\">\n<item label=\"xterm\" icon=\"/usr/share/pixmaps/xterm-color_48x48.xpm\"><action name=\"Execute\"><command>/usr/bin/xterm</command></action></item>\n<item label=\"FireFox\" icon=\"/usr/share/icons/hicolor/48x48/apps/firefox.png\"><action name=\"Execute\"><command>/usr/bin/firefox</command></action></item>\n</menu>\n</openbox_menu>\n

Simply create this file and add it to your defaults folder as menu.xml:

\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

This allows users to right click the desktop background to launch the application.

"},{"location":"images/docker-baseimage-kasmvnc/#full-desktop-environments","title":"Full Desktop environments","text":"

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 startwm.sh script, located again in defaults:

\u251c\u2500\u2500 Dockerfile\n\u2514\u2500\u2500 root\n  \u2514\u2500\u2500 defaults\n    \u2514\u2500\u2500 startwm.sh\n

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

"},{"location":"images/docker-baseimage-kasmvnc/#kasm-workspaces-compatibility","title":"Kasm Workspaces compatibility","text":"

Included in these base images are binary blobs /kasmbins and a special init process /kasminit to maintain compatibility with Kasm Workspaces, If using this base image as reccomended with the startwm.sh or autostart entrypoints. They will be able to be used on that platform without issue.

"},{"location":"images/docker-baseimage-kasmvnc/#docker-in-docker-dind","title":"Docker in Docker (DinD)","text":"

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 -v /var/run/docker.sock:/var/run/docker.sock.

The base images can also run an isolated in container DinD setup simply by passing --privileged to the container when launching. If for any reason the application needs privilege but Docker is not wanted the -e START_DOCKER=false 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 /var/lib/docker/ 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.

"},{"location":"images/docker-baseimage-kasmvnc/#dri3-gpu-acceleration","title":"DRI3 GPU Acceleration","text":"

For accelerated apps or games, render devices can be mounted into the container and leveraged by applications using:

--device /dev/dri:/dev/dri

This feature only supports Open Source GPU drivers:

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

The DRINODE environment variable can be used to point to a specific GPU. Up to date information can be found here

"},{"location":"images/docker-baseimage-kasmvnc/#display-compositing-desktop-effects","title":"Display Compositing (desktop effects)","text":"

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.

"},{"location":"images/docker-baseimage-kasmvnc/#lossless","title":"Lossless","text":"

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>stream quality>lossless.

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:

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

More information here

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.\" }

"},{"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 #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Ubuntu linux and xrdp

The following line is only in this repo for loop testing:

"},{"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 #linuxserver.io more information at:- IRC Forum LinuxServer.io forum

A custom base image built with Ubuntu cloud image and S6 overlay..

The following line is only in this repo for loop testing:

"},{"location":"images/docker-bazarr/","title":"bazarr","text":""},{"location":"images/docker-bazarr/#linuxserverbazarr","title":"linuxserver/bazarr","text":"

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.

"},{"location":"images/docker-bazarr/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/bazarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-bazarr/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":""},{"location":"images/docker-bazarr/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-bazarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-bazarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-bazarr/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-bazarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 6767 Allows HTTP access to the internal webserver."},{"location":"images/docker-bazarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-bazarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /movies Location of your movies /tv 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-bazarr/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-bazarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-bazarr/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-bazarr/#support-info","title":"Support Info","text":""},{"location":"images/docker-bazarr/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-bazarr/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-bazarr/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-bazarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-bazarr/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-bazarr/#versions","title":"Versions","text":""},{"location":"images/docker-beets/","title":"beets","text":""},{"location":"images/docker-beets/#linuxserverbeets","title":"linuxserver/beets","text":"

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.

"},{"location":"images/docker-beets/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/beets:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-beets/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Edit the config file in /config

To edit the config from within the container use beet config -e

For a command prompt as user abc docker exec -it -u abc beets bash

See Beets for more info.

Contains beets-extrafiles plugin, configuration details

"},{"location":"images/docker-beets/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-beets/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-beets/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-beets/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-beets/#ports-p","title":"Ports (-p)","text":"Parameter Function 8337 Application WebUI"},{"location":"images/docker-beets/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-beets/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /music Music library /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-beets/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-beets/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-beets/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-beets/#support-info","title":"Support Info","text":""},{"location":"images/docker-beets/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-beets/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-beets/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-beets/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-beets/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-beets/#versions","title":"Versions","text":""},{"location":"images/docker-blender/","title":"blender","text":""},{"location":"images/docker-blender/#linuxserverblender","title":"linuxserver/blender","text":"

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

"},{"location":"images/docker-blender/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/blender:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-blender/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-blender/#hardware-acceleration","title":"Hardware Acceleration","text":"

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.

"},{"location":"images/docker-blender/#intelatiamd","title":"Intel/ATI/AMD","text":"

To leverage hardware acceleration you will need to mount /dev/dri video device inside of the conainer.

--device /dev/dri:/dev/dri\n
We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

"},{"location":"images/docker-blender/#nvidia","title":"Nvidia","text":"

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 --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

"},{"location":"images/docker-blender/#arm-devices","title":"Arm Devices","text":"

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.

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.

"},{"location":"images/docker-blender/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-blender/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-blender/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-blender/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-blender/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-blender/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-blender/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Blender desktop gui 3001 Blender desktop gui HTTPS"},{"location":"images/docker-blender/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/"},{"location":"images/docker-blender/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-blender/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-blender/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-blender/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-blender/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-blender/#support-info","title":"Support Info","text":""},{"location":"images/docker-blender/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-blender/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-blender/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-blender/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-blender/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-blender/#versions","title":"Versions","text":""},{"location":"images/docker-boinc/","title":"boinc","text":""},{"location":"images/docker-boinc/#linuxserverboinc","title":"linuxserver/boinc","text":"

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.

"},{"location":"images/docker-boinc/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/boinc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-boinc/#application-setup","title":"Application Setup","text":"

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 http://your-ip:8080 or https://your-ip:8181.

By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc.

It is recommended to switch to Advanced View in the top menu, because the Computing Preferences don't seem to be displayed in Simple View.

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.

"},{"location":"images/docker-boinc/#gpu-hardware-acceleration","title":"GPU Hardware Acceleration","text":""},{"location":"images/docker-boinc/#intel","title":"Intel","text":"

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: --device=/dev/dri:/dev/dri We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

"},{"location":"images/docker-boinc/#nvidia","title":"Nvidia","text":"

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 --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the BOINC docker container.

"},{"location":"images/docker-boinc/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-boinc/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-boinc/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-boinc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-boinc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-boinc/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-boinc/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Boinc desktop gui. 8181 Boinc desktop gui HTTPS."},{"location":"images/docker-boinc/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PASSWORD= Optionally set a password for the gui."},{"location":"images/docker-boinc/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where BOINC should store its database and config."},{"location":"images/docker-boinc/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Only needed if you want to use your Intel GPU (vaapi)."},{"location":"images/docker-boinc/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-boinc/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-boinc/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-boinc/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-boinc/#support-info","title":"Support Info","text":""},{"location":"images/docker-boinc/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-boinc/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-boinc/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-boinc/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-boinc/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-boinc/#versions","title":"Versions","text":""},{"location":"images/docker-booksonic-air/","title":"booksonic-air","text":""},{"location":"images/docker-booksonic-air/#linuxserverbooksonic-air","title":"linuxserver/booksonic-air","text":"

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.

"},{"location":"images/docker-booksonic-air/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/booksonic-air:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-booksonic-air/#application-setup","title":"Application Setup","text":"

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

"},{"location":"images/docker-booksonic-air/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-booksonic-air/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-booksonic-air/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-booksonic-air/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-booksonic-air/#ports-p","title":"Ports (-p)","text":"Parameter Function 4040 Application WebUI"},{"location":"images/docker-booksonic-air/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. CONTEXT_PATH=url-base Base url for use with reverse proxies etc."},{"location":"images/docker-booksonic-air/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /audiobooks Audiobooks. /podcasts Podcasts. /othermedia 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-booksonic-air/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-booksonic-air/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-booksonic-air/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-booksonic-air/#support-info","title":"Support Info","text":""},{"location":"images/docker-booksonic-air/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-booksonic-air/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-booksonic-air/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-booksonic-air/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-booksonic-air/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-booksonic-air/#versions","title":"Versions","text":""},{"location":"images/docker-bookstack/","title":"bookstack","text":""},{"location":"images/docker-bookstack/#linuxserverbookstack","title":"linuxserver/bookstack","text":"

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.

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.

For more information on BookStack visit their website and check it out: https://www.bookstackapp.com

"},{"location":"images/docker-bookstack/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/bookstack:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-bookstack/#application-setup","title":"Application Setup","text":"

The default username is admin@admin.com with the password of password, access the container at http://dockerhost:6875.

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/.

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 APP_URL environment variable is set to your external domain, or it will not work.

Documentation for BookStack can be found at https://www.bookstackapp.com/docs/.

"},{"location":"images/docker-bookstack/#bookstack-file-directory-paths","title":"BookStack File & Directory Paths","text":"

This container ensures certain BookStack application files & folders, such as user file upload folders, are retained within the /config folder so that they are persistent & accessible when the /config 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.

Below is a mapping of container /config paths to those relative within a BookStack install directory:

"},{"location":"images/docker-bookstack/#advanced-users-full-control-over-the-env-file","title":"Advanced Users (full control over the .env file)","text":"

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.

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.

"},{"location":"images/docker-bookstack/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-bookstack/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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=<yourdbpass>\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=<yourdbpass>\n      - TZ=Europe/London\n      - MYSQL_DATABASE=bookstackapp\n      - MYSQL_USER=bookstack\n      - MYSQL_PASSWORD=<yourdbpass>\n    volumes:\n      - ./bookstack_db_data:/config\n    restart: unless-stopped\n
"},{"location":"images/docker-bookstack/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-bookstack/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-bookstack/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 will map the container's port 80 to port 6875 on the host"},{"location":"images/docker-bookstack/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. APP_URL=yourbaseurl for specifying the IP:port or URL your application will be accessed on (ie. http://192.168.1.1:6875 or https://bookstack.mydomain.com DB_HOST=yourdbhost for specifying the database host DB_PORT=yourdbport for specifying the database port if not default 3306 DB_USER=yourdbuser for specifying the database user DB_PASS=yourdbpass for specifying the database password (minimum 4 characters & non-alphanumeric passwords must be properly escaped.) DB_DATABASE=bookstackapp for specifying the database to be used QUEUE_CONNECTION= Set to database to enable async actions like sending email or triggering webhooks. See documentation."},{"location":"images/docker-bookstack/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-bookstack/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-bookstack/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-bookstack/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-bookstack/#support-info","title":"Support Info","text":""},{"location":"images/docker-bookstack/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-bookstack/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-bookstack/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-bookstack/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-bookstack/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-bookstack/#versions","title":"Versions","text":""},{"location":"images/docker-budge/","title":"budge","text":""},{"location":"images/docker-budge/#linuxserverbudge","title":"linuxserver/budge","text":"

budge is an open source 'budgeting with envelopes' personal finance app.

"},{"location":"images/docker-budge/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/budge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-budge/#application-setup","title":"Application Setup","text":"

Access the web gui at http://SERVERIP:PORT

"},{"location":"images/docker-budge/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-budge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-budge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-budge/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-budge/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-budge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-budge/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-budge/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-budge/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-budge/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-budge/#support-info","title":"Support Info","text":""},{"location":"images/docker-budge/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-budge/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-budge/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-budge/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-budge/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-budge/#versions","title":"Versions","text":""},{"location":"images/docker-build-agent/","title":"build-agent","text":""},{"location":"images/docker-build-agent/#linuxserverbuild-agent","title":"linuxserver/build-agent","text":"

Used as part of the LSIO build process. Not for public consumption.

"},{"location":"images/docker-build-agent/#running","title":"Running","text":"
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=<jenkins public key>'\n      - PUID=1000\n      - PGID=1000\n    volumes:\n      - ./docker-data:/config\n    ports:\n      - 2222:2222\n    restart: unless-stopped\n

For x86_64 machines, run docker run --rm --privileged multiarch/qemu-user-static --reset -p yes on the host to enable qemu before bringing any build agent containers up.

"},{"location":"images/docker-calibre-web/","title":"calibre-web","text":""},{"location":"images/docker-calibre-web/#linuxservercalibre-web","title":"linuxserver/calibre-web","text":"

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.

This software is a fork of library and licensed under the GPL v3 License.

"},{"location":"images/docker-calibre-web/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/calibre-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-calibre-web/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Webui can be found at http://your-ip:8083

On the initial setup screen, enter /books as your calibre library location.

Default admin login: Username: admin Password: admin123

If you lock yourself out or forget a password, you will need to specify the app.db similar to this: docker exec -it calibre-web python3 /app/calibre-web/cps.py -p /config/app.db -s <user>:<pass> If you fail to specify the proper db, it will appear to succeed, but it will not work.

Unrar is included by default and needs to be set in the Calibre-Web admin page (Basic Configuration:External Binaries) with a path of /usr/bin/unrar

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 /usr/bin/ebook-convert

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 /usr/bin/kepubify

"},{"location":"images/docker-calibre-web/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-calibre-web/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-calibre-web/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-calibre-web/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-calibre-web/#ports-p","title":"Ports (-p)","text":"Parameter Function 8083 WebUI"},{"location":"images/docker-calibre-web/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. DOCKER_MODS=linuxserver/mods:universal-calibre #optional & x86-64 only Adds the ability to perform ebook conversion OAUTHLIB_RELAX_TOKEN_SCOPE=1 Optionally set this to allow Google OAUTH to work"},{"location":"images/docker-calibre-web/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where calibre-web stores the internal database and config. /books 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-calibre-web/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-calibre-web/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-calibre-web/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-calibre-web/#support-info","title":"Support Info","text":""},{"location":"images/docker-calibre-web/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-calibre-web/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-calibre-web/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-calibre-web/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-calibre-web/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-calibre-web/#versions","title":"Versions","text":""},{"location":"images/docker-calibre/","title":"calibre","text":""},{"location":"images/docker-calibre/#linuxservercalibre","title":"linuxserver/calibre","text":"

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.

"},{"location":"images/docker-calibre/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/calibre:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-calibre/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

This image sets up the calibre desktop app and makes its interface available via KasmVNC server in the browser. The interface is available at http://your-ip:8080 or https://your-ip:8181.

By default, there is no password set for the main gui. Optional environment variable PASSWORD will allow setting a password for the user abc, via http auth.

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 8081 although it will then be available at the host mapped port for external access.

"},{"location":"images/docker-calibre/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-calibre/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-calibre/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-calibre/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-calibre/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-calibre/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-calibre/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Calibre desktop gui. 8181 Calibre desktop gui HTTPS. 8081 Calibre webserver gui."},{"location":"images/docker-calibre/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PASSWORD= Optionally set a password for the gui. CLI_ARGS= Optionally pass cli start arguments to calibre."},{"location":"images/docker-calibre/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where calibre should store its database and library."},{"location":"images/docker-calibre/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-calibre/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-calibre/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-calibre/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-calibre/#support-info","title":"Support Info","text":""},{"location":"images/docker-calibre/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-calibre/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-calibre/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-calibre/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-calibre/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-calibre/#versions","title":"Versions","text":""},{"location":"images/docker-calligra/","title":"calligra","text":""},{"location":"images/docker-calligra/#linuxservercalligra","title":"linuxserver/calligra","text":"

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.

"},{"location":"images/docker-calligra/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/calligra:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-calligra/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-calligra/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-calligra/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-calligra/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-calligra/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-calligra/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-calligra/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-calligra/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Calligra desktop gui. 3001 Calligra desktop gui HTTPS."},{"location":"images/docker-calligra/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-calligra/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-calligra/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-calligra/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-calligra/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-calligra/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-calligra/#support-info","title":"Support Info","text":""},{"location":"images/docker-calligra/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-calligra/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-calligra/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-calligra/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-calligra/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-calligra/#versions","title":"Versions","text":""},{"location":"images/docker-changedetection.io/","title":"changedetection.io","text":""},{"location":"images/docker-changedetection.io/#linuxserverchangedetectionio","title":"linuxserver/changedetection.io","text":"

Changedetection.io provides free, open-source web page monitoring, notification and change detection.

"},{"location":"images/docker-changedetection.io/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/changedetection.io:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-changedetection.io/#application-setup","title":"Application Setup","text":"

Webui is accessible at http://SERVERIP:PORT

Please note that as of version 0.45.16 this image contains the Playwright content fetcher.

For more info read the wiki.

"},{"location":"images/docker-changedetection.io/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-changedetection.io/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-changedetection.io/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-changedetection.io/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-changedetection.io/#ports-p","title":"Ports (-p)","text":"Parameter Function 5000 WebUI"},{"location":"images/docker-changedetection.io/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. BASE_URL= Specify the full URL (including protocol) when running behind a reverse proxy PLAYWRIGHT_DRIVER_URL= 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 (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-changedetection.io/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-changedetection.io/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-changedetection.io/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-changedetection.io/#support-info","title":"Support Info","text":""},{"location":"images/docker-changedetection.io/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-changedetection.io/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-changedetection.io/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-changedetection.io/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-changedetection.io/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-changedetection.io/#versions","title":"Versions","text":""},{"location":"images/docker-chromium/","title":"chromium","text":""},{"location":"images/docker-chromium/#linuxserverchromium","title":"linuxserver/chromium","text":"

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.

"},{"location":"images/docker-chromium/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/chromium:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-chromium/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-chromium/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-chromium/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-chromium/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-chromium/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-chromium/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-chromium/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Chromium desktop gui. 3001 HTTPS Chromium desktop gui."},{"location":"images/docker-chromium/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. CHROME_CLI=https://www.linuxserver.io/ 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 (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-chromium/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= This is needed for any modern website to function like youtube. --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-chromium/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-chromium/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-chromium/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-chromium/#support-info","title":"Support Info","text":""},{"location":"images/docker-chromium/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-chromium/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-chromium/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-chromium/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-chromium/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-chromium/#versions","title":"Versions","text":""},{"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 #linuxserver.io 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":"

This container is not meant for public consumption as it is hard coded to LinuxServer endpoints for storage of resulting reports

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.

"},{"location":"images/docker-ci/#usage","title":"Usage","text":"

The container can be run locally, but it is meant to be integrated into the LinuxServer build process:

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/<dockerimage>\" \\\n-e TAGS=\"<single tag or array seperated by |>\" \\\n-e META_TAG=<manifest main dockerhub tag> \\\n-e BASE=<alpine or debian based distro> \\\n-e SECRET_KEY=<S3 secret> \\\n-e ACCESS_KEY=<S3 key> \\\n-e DOCKER_ENV=\"<optional, Array of env vars seperated by | IE test=test|test2=test2 or single var. Defaults to ''>\" \\\n-e WEB_AUTH=\"<optional, format user:passord. Defaults to 'user:password'>\" \\\n-e WEB_PATH=\"<optional, format /yourpath>. Defaults to ''.\" \\\n-e S3_REGION=<optional, custom S3 Region. Defaults to 'us-east-1'> \\\n-e S3_BUCKET=<optional, custom S3 Bucket. Defaults to 'ci-tests.linuxserver.io'> \\\n-e WEB_SCREENSHOT_DELAY=<optional, time in seconds to delay before taking screenshot. Defaults to '30'>\n-e WEB_SCREENSHOT=<optional, set to false if not a web app. Defaults to 'false'> \\\n-e DELAY_START=<optional, time in seconds to delay before taking screenshot. Defaults to '5'> \\\n-e PORT=<optional, port web application listens on internal docker port. Defaults to '80'> \\\n-e SSL=<optional , use ssl for the screenshot true/false. Defaults to 'false'> \\\n-e CI_S6_VERBOSITY=<optional, Updates the S6_VERBOSITY env. Defaults to '2'> \\\n-e DOCKER_LOGS_DELAY=<optional, How long to wait in seconds while tailing the container logs. Defaults to '300'> \\\n-e DRY_RUN=<optional, Set to 'true' when you don't want to upload files to S3 when testing>\n-t lsiodev/ci:latest \\\npython3 test_build.py\n

The following line is only in this repo for loop testing:

"},{"location":"images/docker-code-server/","title":"code-server","text":""},{"location":"images/docker-code-server/#linuxservercode-server","title":"linuxserver/code-server","text":"

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.

"},{"location":"images/docker-code-server/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/code-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-code-server/#application-setup","title":"Application Setup","text":"

Access the webui at http://<your-ip>:8443. For github integration, drop your ssh key in to /config/.ssh. Then open a terminal from the top menu and set your github username and email via the following commands

git config --global user.name \"username\"\ngit config --global user.email \"email address\"\n
"},{"location":"images/docker-code-server/#hashed-code-server-password","title":"Hashed code-server password","text":"

How to create the hashed password.

"},{"location":"images/docker-code-server/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-code-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-code-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-code-server/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-code-server/#ports-p","title":"Ports (-p)","text":"Parameter Function 8443 web gui"},{"location":"images/docker-code-server/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PASSWORD=password Optional web gui password, if PASSWORD or HASHED_PASSWORD is not provided, there will be no auth. HASHED_PASSWORD= Optional web gui password, overrides PASSWORD, instructions on how to create it is below. SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the code-server terminal with the specified password. SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed. PROXY_DOMAIN=code-server.my.domain If this optional variable is set, this domain will be proxied for subdomain proxying. See Documentation DEFAULT_WORKSPACE=/config/workspace 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 (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-code-server/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-code-server/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-code-server/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-code-server/#support-info","title":"Support Info","text":""},{"location":"images/docker-code-server/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-code-server/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-code-server/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-code-server/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-code-server/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-code-server/#versions","title":"Versions","text":""},{"location":"images/docker-cops/","title":"cops","text":""},{"location":"images/docker-cops/#linuxservercops","title":"linuxserver/cops","text":"

Cops by S\u00e9bastien Lucas, now maintained by MikesPub, stands for Calibre OPDS (and HTML) Php Server.

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.

Changes in your Calibre library are reflected immediately in your COPS pages.

See : COPS's home for more details.

Don't forget to check the Wiki.

"},{"location":"images/docker-cops/#why-taken-from-the-authors-site","title":"Why? (taken from the author's site)","text":"

In my opinion Calibre is a marvelous tool but is too big and has too much dependencies to be used for its content server.

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).

I initially thought of Calibre2OPDS but as it generate static file no search was possible.

Later I added an simple HTML catalog that should be usable on my Kobo.

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.

If you want to use the OPDS feed don't forget to specify feed.php at the end of your URL.

"},{"location":"images/docker-cops/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/cops:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-cops/#application-setup","title":"Application Setup","text":"

Access the webui at http://<docker host ip>:80. For connecting via OPDS on a mobile device use http://<docker host ip>:80/feed.php. 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).

The linuxserver version gives you access to config_local.php in /config to customise your install to suit your needs, it also includes the dependencies required to directly view epub books in your browser.

"},{"location":"images/docker-cops/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-cops/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-cops/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-cops/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-cops/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 HTTP WebUI 443 HTTPS WebUI"},{"location":"images/docker-cops/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-cops/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config COPS Application Data. /books 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-cops/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-cops/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-cops/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-cops/#support-info","title":"Support Info","text":""},{"location":"images/docker-cops/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-cops/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-cops/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-cops/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-cops/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-cops/#versions","title":"Versions","text":""},{"location":"images/docker-cura/","title":"cura","text":""},{"location":"images/docker-cura/#linuxservercura","title":"linuxserver/cura","text":"

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.

"},{"location":"images/docker-cura/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/cura:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-cura/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-cura/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-cura/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-cura/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-cura/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-cura/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-cura/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-cura/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Cura desktop gui. 3001 Cura desktop gui HTTPS."},{"location":"images/docker-cura/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-cura/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and files."},{"location":"images/docker-cura/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-cura/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-cura/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-cura/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-cura/#support-info","title":"Support Info","text":""},{"location":"images/docker-cura/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-cura/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-cura/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-cura/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-cura/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-cura/#versions","title":"Versions","text":""},{"location":"images/docker-daapd/","title":"daapd","text":""},{"location":"images/docker-daapd/#linuxserverdaapd","title":"linuxserver/daapd","text":"

Daapd (iTunes) media server with support for AirPlay devices, Apple Remote (and compatibles), Chromecast, MPD and internet radio.

"},{"location":"images/docker-daapd/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/daapd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-daapd/#application-setup","title":"Application Setup","text":"

Map your music folder, open up iTunes on the same LAN to see your music there.

The web interface is available at http://<your ip>:3689

For further setup options of remotes etc, check out the daapd website, Owntone.

"},{"location":"images/docker-daapd/#enable-spotify-connect-server","title":"Enable spotify connect server","text":"

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):

mkfifo <music_folder>/spotify\n

The spotify connect server should show up as the 'forked-daapd' device in your Spotify application.

It is recommended to set the pipe_autostart option to true in your forked-daapd config.

"},{"location":"images/docker-daapd/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-daapd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-daapd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-daapd/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-daapd/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-daapd/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Shares host networking with container."},{"location":"images/docker-daapd/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-daapd/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where daapd server stores its config and dbase files. /music 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-daapd/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-daapd/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-daapd/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-daapd/#support-info","title":"Support Info","text":""},{"location":"images/docker-daapd/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-daapd/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-daapd/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-daapd/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-daapd/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-daapd/#versions","title":"Versions","text":""},{"location":"images/docker-darktable/","title":"darktable","text":""},{"location":"images/docker-darktable/#linuxserverdarktable","title":"linuxserver/darktable","text":"

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.

"},{"location":"images/docker-darktable/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/darktable:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-darktable/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-darktable/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=noto-fonts-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-darktable/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-darktable/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-darktable/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-darktable/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-darktable/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-darktable/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Darktable desktop gui. 3001 Darktable desktop gui HTTPS."},{"location":"images/docker-darktable/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-darktable/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and images"},{"location":"images/docker-darktable/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-darktable/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-darktable/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-darktable/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-darktable/#support-info","title":"Support Info","text":""},{"location":"images/docker-darktable/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-darktable/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-darktable/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-darktable/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-darktable/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-darktable/#versions","title":"Versions","text":""},{"location":"images/docker-davos/","title":"davos","text":""},{"location":"images/docker-davos/#linuxserverdavos","title":"linuxserver/davos","text":"

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.

"},{"location":"images/docker-davos/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/davos:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-davos/#application-setup","title":"Application Setup","text":"

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.

"},{"location":"images/docker-davos/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-davos/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-davos/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-davos/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-davos/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 This is the default port that davos runs under"},{"location":"images/docker-davos/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-davos/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config davos's config location. This is where it stores its database file and logs. /download 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-davos/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-davos/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-davos/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-davos/#support-info","title":"Support Info","text":""},{"location":"images/docker-davos/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-davos/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-davos/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-davos/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-davos/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-davos/#versions","title":"Versions","text":""},{"location":"images/docker-ddclient/","title":"ddclient","text":""},{"location":"images/docker-ddclient/#linuxserverddclient","title":"linuxserver/ddclient","text":"

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.

"},{"location":"images/docker-ddclient/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/ddclient:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-ddclient/#application-setup","title":"Application Setup","text":"

Edit the ddclient.conf file found in your /config 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.

"},{"location":"images/docker-ddclient/#get-dynamic-ip-from-fritzbox","title":"Get dynamic IP from Fritz.Box","text":"

If ddclient shall fetch the dynamic (public) IP-address from a fritz.box (AVM) add the following line to /config/ddclient.conf:

use=cmd, cmd=/etc/ddclient/get-ip-from-fritzbox\n

"},{"location":"images/docker-ddclient/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-ddclient/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-ddclient/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-ddclient/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-ddclient/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-ddclient/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-ddclient/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-ddclient/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-ddclient/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-ddclient/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-ddclient/#support-info","title":"Support Info","text":""},{"location":"images/docker-ddclient/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-ddclient/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-ddclient/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-ddclient/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-ddclient/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-ddclient/#versions","title":"Versions","text":""},{"location":"images/docker-deluge/","title":"deluge","text":""},{"location":"images/docker-deluge/#linuxserverdeluge","title":"linuxserver/deluge","text":"

Deluge is a lightweight, Free Software, cross-platform BitTorrent client.

"},{"location":"images/docker-deluge/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/deluge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-deluge/#application-setup","title":"Application Setup","text":"

The admin interface is available at http://SERVER-IP:8112 with a default user/password of admin/deluge.

To change the password (recommended) log in to the web interface and go to Preferences->Interface->Password.

Change the inbound port to 6881 (or whichever port you've mapped for the container) under Preferences->Network, otherwise random ports will be used.

"},{"location":"images/docker-deluge/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-deluge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-deluge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-deluge/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-deluge/#ports-p","title":"Ports (-p)","text":"Parameter Function 8112 Port for webui 6881 Inbound torrent traffic (See App Setup) 6881/udp Inbound torrent traffic (See App Setup) 58846 Default deluged port for thin client connectivity"},{"location":"images/docker-deluge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. DELUGE_LOGLEVEL=error 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 (-v)","text":"Volume Function /config deluge configs /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-deluge/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-deluge/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-deluge/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-deluge/#support-info","title":"Support Info","text":""},{"location":"images/docker-deluge/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-deluge/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-deluge/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-deluge/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-deluge/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-deluge/#versions","title":"Versions","text":""},{"location":"images/docker-digikam/","title":"digikam","text":""},{"location":"images/docker-digikam/#linuxserverdigikam","title":"linuxserver/digikam","text":"

digiKam: Professional Photo Management with the Power of Open Source

"},{"location":"images/docker-digikam/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/digikam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-digikam/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-digikam/#mysql-internal","title":"Mysql Internal","text":"

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.

The application can be accessed at:

"},{"location":"images/docker-digikam/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=noto-fonts-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-digikam/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-digikam/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-digikam/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-digikam/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-digikam/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-digikam/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 digiKam desktop gui 3001 digiKam desktop gui HTTPS"},{"location":"images/docker-digikam/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/"},{"location":"images/docker-digikam/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-digikam/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-digikam/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-digikam/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-digikam/#support-info","title":"Support Info","text":""},{"location":"images/docker-digikam/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-digikam/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-digikam/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-digikam/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-digikam/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-digikam/#versions","title":"Versions","text":""},{"location":"images/docker-dillinger/","title":"dillinger","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"images/docker-dillinger/#linuxserverdillinger","title":"linuxserver/dillinger","text":"

Dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor.

"},{"location":"images/docker-dillinger/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/dillinger:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-dillinger/#application-setup","title":"Application Setup","text":"

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.

"},{"location":"images/docker-dillinger/#pdf-export","title":"PDF Export","text":"

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.

Download the pdf-export.json from this repo onto your docker host and start the container with --security-opt seccomp=/path/to/pdf-export.json. If you're using compose the format is:

    security_opt:\n      - seccomp=/path/to/pdf-export.json\n

The original source for this seccomp profile is here.

"},{"location":"images/docker-dillinger/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-dillinger/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-dillinger/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-dillinger/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-dillinger/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 The port for the Dillinger web interface"},{"location":"images/docker-dillinger/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-dillinger/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-dillinger/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-dillinger/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-dillinger/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-dillinger/#support-info","title":"Support Info","text":""},{"location":"images/docker-dillinger/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-dillinger/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-dillinger/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-dillinger/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-dillinger/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-dillinger/#versions","title":"Versions","text":""},{"location":"images/docker-diskover/","title":"diskover","text":""},{"location":"images/docker-diskover/#linuxserverdiskover","title":"linuxserver/diskover","text":"

diskover is an open source file system indexer that uses Elasticsearch to index and manage data across heterogeneous storage systems.

"},{"location":"images/docker-diskover/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/diskover:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-diskover/#application-setup","title":"Application Setup","text":"

This application is dependent on an ElasticSearch instance. Please see the example compose file for additional information.

The default username is diskover with the password of darkdata, access the container at http://<host-ip>/. The UI may be unusable until a valid index has been created.

The default diskover-web Constants.php file located at /config/diskover-web.conf.d/Constants.php will need to be edited to allow diskover-web to communicate with the ElasticSearch container. The following entries will need to be edited: * const ES_HOST = 'elasticsearch'; * const ES_PORT = 9200;

The application doesn't start an index by default. A crontab is created inside of the /config directory and can be set up to run automated indexes of /data. Changes to this crontab file require a restart to apply. You can also manually run an index by executing /app/diskover/diskover.py either in interactive or detached mode:

"},{"location":"images/docker-diskover/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-diskover/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
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
"},{"location":"images/docker-diskover/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-diskover/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-diskover/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 diskover Web UI"},{"location":"images/docker-diskover/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. ES_HOST=elasticsearch ElasticSearch host (optional) ES_PORT=9200 ElasticSearch port (optional) ES_USER=elastic ElasticSearch username (optional) ES_PASS=changeme ElasticSearch password (optional)"},{"location":"images/docker-diskover/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-diskover/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-diskover/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-diskover/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-diskover/#support-info","title":"Support Info","text":""},{"location":"images/docker-diskover/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-diskover/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-diskover/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-diskover/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-diskover/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-diskover/#versions","title":"Versions","text":""},{"location":"images/docker-doc-builder/","title":"linuxserver/doc-builder","text":"

Expects to run as part of the LSIO CI process. Not for public consumption.

**Running against remote: **

docker run --rm \\\n -e CONTAINER_NAME=${CONTAINER_NAME} \\\n -v ${TEMPDIR}:/ansible/readme \\\n linuxserver/doc-builder:latest\n

**Running locally: **

If you need to test functionality just navigate to the folder with the readme-vars.yml and run:

docker run --rm \\\n -v $(pwd):/tmp \\\n -e LOCAL=true \\\n linuxserver/doc-builder:latest\n

The output will be in a GENERATED.md in your current working directory.

The following line is only in this repo for loop testing:

"},{"location":"images/docker-dokuwiki/","title":"dokuwiki","text":""},{"location":"images/docker-dokuwiki/#linuxserverdokuwiki","title":"linuxserver/dokuwiki","text":"

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.

"},{"location":"images/docker-dokuwiki/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/dokuwiki:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-dokuwiki/#application-setup","title":"Application Setup","text":"

Upon first install go to http://$IP:$PORT/install.php once you have completed the setup, restart the container, login as admin and set \"Use nice URLs\" in the admin/Configuration Settings panel to .htaccess and tick Use slash as namespace separator in URLs to enable nice URLs you will find the webui at http://$IP:$PORT/, for more info see Dokuwiki

"},{"location":"images/docker-dokuwiki/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-dokuwiki/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-dokuwiki/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-dokuwiki/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-dokuwiki/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Application HTTP Port 443 #optional Application HTTPS Port"},{"location":"images/docker-dokuwiki/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-dokuwiki/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-dokuwiki/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-dokuwiki/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-dokuwiki/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-dokuwiki/#support-info","title":"Support Info","text":""},{"location":"images/docker-dokuwiki/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-dokuwiki/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-dokuwiki/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-dokuwiki/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-dokuwiki/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-dokuwiki/#versions","title":"Versions","text":""},{"location":"images/docker-domoticz/","title":"domoticz","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"images/docker-domoticz/#linuxserverdomoticz","title":"linuxserver/domoticz","text":"

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.

"},{"location":"images/docker-domoticz/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/domoticz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-domoticz/#application-setup","title":"Application Setup","text":"

To configure Domoticz, go to the IP of your docker host on the port you configured (default 8080), and add your hardware in Setup > Hardware. The user manual is available at www.domoticz.com

"},{"location":"images/docker-domoticz/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-domoticz/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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=<path to database>\" #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
"},{"location":"images/docker-domoticz/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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=\"<path to database>\" `#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
"},{"location":"images/docker-domoticz/#passing-through-usb-devices","title":"Passing Through USB Devices","text":"

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.

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
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'

"},{"location":"images/docker-domoticz/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-domoticz/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 WebUI 6144 Domoticz communication port. 1443 Domoticz communication port."},{"location":"images/docker-domoticz/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. WEBROOT=domoticz Sets webroot to domoticz for usage with subfolder reverse proxy. Not needed unless reverse proxying. DBASE=<path to database> Sets path to database. Do not set unless you know what this does."},{"location":"images/docker-domoticz/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Domoticz stores config files and data."},{"location":"images/docker-domoticz/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function path to device 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-domoticz/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-domoticz/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-domoticz/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-domoticz/#support-info","title":"Support Info","text":""},{"location":"images/docker-domoticz/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-domoticz/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-domoticz/#via-docker-run","title":"Via Docker Run","text":""},{"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":"

Warning

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.

"},{"location":"images/docker-domoticz/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-domoticz/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-domoticz/#versions","title":"Versions","text":""},{"location":"images/docker-doplarr/","title":"doplarr","text":""},{"location":"images/docker-doplarr/#linuxserverdoplarr","title":"linuxserver/doplarr","text":"

Doplarr is an *arr request bot for Discord.\"

"},{"location":"images/docker-doplarr/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/doplarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-doplarr/#application-setup","title":"Application Setup","text":"

Start by following the Discord setup instructions from Doplarr's readme.

NOTE: The DISCORD__TOKEN environment variable is required to run the container!

Extra java options can be passed with the JAVA_OPTS environment variable, eg -e JAVA_OPTS=\"-Xmx256m -Xms256m\".

Review and adjust any Optional Settings from Doplarr's readme.

"},{"location":"images/docker-doplarr/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-doplarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-doplarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-doplarr/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-doplarr/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-doplarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. DISCORD__TOKEN= Specify your discord bot token. OVERSEERR__API= Specify your Overseerr API key. Leave blank if using Radarr/Sonarr. OVERSEERR__URL=http://localhost:5055 Specify your Overseerr URL. Leave blank if using Radarr/Sonarr. RADARR__API= Specify your Radarr API key. Leave blank if using Overseerr. RADARR__URL=http://localhost:7878 Specify your Radarr URL. Leave blank if using Overseerr. SONARR__API= Specify your Sonarr API key. Leave blank if using Overseerr. SONARR__URL=http://localhost:8989 Specify your Sonarr URL. Leave blank if using Overseerr. DISCORD__MAX_RESULTS=25 Sets the maximum size of the search results selection DISCORD__REQUESTED_MSG_STYLE=:plain Sets the style of the request alert message. One of :plain :embed :none SONARR__QUALITY_PROFILE= The name of the quality profile to use by default for Sonarr RADARR__QUALITY_PROFILE= The name of the quality profile to use by default for Radarr SONARR__ROOTFOLDER= The root folder to use by default for Sonarr RADARR__ROOTFOLDER= The root folder to use by default for Radarr SONARR__LANGUAGE_PROFILE= The name of the language profile to use by default for Sonarr OVERSEERR__DEFAULT_ID= The Overseerr user id to use by default if there is no associated discord account for the requester PARTIAL_SEASONS=true Sets whether users can request partial seasons. LOG_LEVEL=:info The log level for the logging backend. This can be changed for debugging purposes. One of trace :debug :info :warn :error :fatal :report JAVA_OPTS= For passing additional java options."},{"location":"images/docker-doplarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-doplarr/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-doplarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-doplarr/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-doplarr/#support-info","title":"Support Info","text":""},{"location":"images/docker-doplarr/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-doplarr/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-doplarr/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-doplarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-doplarr/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-doplarr/#versions","title":"Versions","text":""},{"location":"images/docker-doublecommander/","title":"doublecommander","text":""},{"location":"images/docker-doublecommander/#linuxserverdoublecommander","title":"linuxserver/doublecommander","text":"

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.

"},{"location":"images/docker-doublecommander/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/doublecommander:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-doublecommander/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-doublecommander/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-doublecommander/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-doublecommander/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-doublecommander/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-doublecommander/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-doublecommander/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-doublecommander/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Double Commander desktop gui. 3001 Double Commander desktop gui HTTPS."},{"location":"images/docker-doublecommander/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-doublecommander/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings. /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-doublecommander/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-doublecommander/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-doublecommander/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-doublecommander/#support-info","title":"Support Info","text":""},{"location":"images/docker-doublecommander/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-doublecommander/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-doublecommander/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-doublecommander/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-doublecommander/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-doublecommander/#versions","title":"Versions","text":""},{"location":"images/docker-duckdns/","title":"duckdns","text":""},{"location":"images/docker-duckdns/#linuxserverduckdns","title":"linuxserver/duckdns","text":"

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":"images/docker-duckdns/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/duckdns:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-duckdns/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-duckdns/#notice-regarding-automatic-detection","title":"Notice regarding automatic detection","text":"

Using the UPDATE_IP variable whatever its value (ipv4, ipv6 or both) 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.

Omitting the UPDATE_IP variable uses DuckDNS for detection and only supports IPv4.

"},{"location":"images/docker-duckdns/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-duckdns/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-duckdns/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-duckdns/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-duckdns/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-duckdns/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Use host networking for IPv6 detection"},{"location":"images/docker-duckdns/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SUBDOMAINS=subdomain1,subdomain2 multiple subdomains allowed, comma separated, no spaces, if your domain is user.duckdns.org you put user, not a sub-subdomain TOKEN=token DuckDNS token UPDATE_IP=ipv4 Set to ipv6 or ipv4 to update only your public IPv4/6 address. Set to both 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. both and ipv6 modes needs host networking. LOG_FILE=false Set to true to log to file (also need to map /config)."},{"location":"images/docker-duckdns/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-duckdns/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-duckdns/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n

You only need to set the PUID and PGID variables if you are mounting the /config folder

"},{"location":"images/docker-duckdns/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-duckdns/#support-info","title":"Support Info","text":""},{"location":"images/docker-duckdns/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-duckdns/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-duckdns/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-duckdns/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-duckdns/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-duckdns/#versions","title":"Versions","text":""},{"location":"images/docker-duplicati/","title":"duplicati","text":""},{"location":"images/docker-duplicati/#linuxserverduplicati","title":"linuxserver/duplicati","text":"

Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular services like Microsoft OneDrive, Amazon Cloud Drive & S3, Google Drive, box.com, Mega, hubiC and many others.

"},{"location":"images/docker-duplicati/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/duplicati:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-duplicati/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

The webui is at <your ip>:8200 , create backup jobs etc via the webui, for local backups select /backups as the destination. For more information see Duplicati.

"},{"location":"images/docker-duplicati/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-duplicati/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-duplicati/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-duplicati/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-duplicati/#ports-p","title":"Ports (-p)","text":"Parameter Function 8200 http gui"},{"location":"images/docker-duplicati/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. CLI_ARGS= Optionally specify any CLI variables you want to launch the app with"},{"location":"images/docker-duplicati/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /backups Path to store local backups. /source 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-duplicati/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-duplicati/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-duplicati/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-duplicati/#support-info","title":"Support Info","text":""},{"location":"images/docker-duplicati/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-duplicati/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-duplicati/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-duplicati/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-duplicati/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-duplicati/#versions","title":"Versions","text":""},{"location":"images/docker-emby/","title":"emby","text":""},{"location":"images/docker-emby/#linuxserveremby","title":"linuxserver/emby","text":"

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.

"},{"location":"images/docker-emby/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/emby:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-emby/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable emby releases beta \u2705 Beta emby releases"},{"location":"images/docker-emby/#application-setup","title":"Application Setup","text":"

Webui can be found at http://<your-ip>:8096

Emby has very complete and verbose documentation located here .

"},{"location":"images/docker-emby/#hardware-acceleration-enhancements","title":"Hardware Acceleration Enhancements","text":"

This section lists the enhancements we have made for hardware acceleration in this image specifically.

"},{"location":"images/docker-emby/#openmax-raspberry-pi","title":"OpenMAX (Raspberry Pi)","text":"

Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their /dev/vcsm and /dev/vchiq video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container:

--device=/dev/vcsm:/dev/vcsm\n--device=/dev/vchiq:/dev/vchiq\n-v /opt/vc/lib:/opt/vc/lib\n
"},{"location":"images/docker-emby/#v4l2-raspberry-pi","title":"V4L2 (Raspberry Pi)","text":"

Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container:

--device=/dev/video10:/dev/video10\n--device=/dev/video11:/dev/video11\n--device=/dev/video12:/dev/video12\n
"},{"location":"images/docker-emby/#hardware-acceleration","title":"Hardware Acceleration","text":"

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.

"},{"location":"images/docker-emby/#intelatiamd","title":"Intel/ATI/AMD","text":"

To leverage hardware acceleration you will need to mount /dev/dri video device inside of the container.

--device=/dev/dri:/dev/dri\n

We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

"},{"location":"images/docker-emby/#nvidia","title":"Nvidia","text":"

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

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 --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

"},{"location":"images/docker-emby/#arm-devices","title":"Arm Devices","text":"

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 dtoverlay=vc4-fkms-v3d in your usercfg.txt.

"},{"location":"images/docker-emby/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-emby/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-emby/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-emby/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-emby/#ports-p","title":"Ports (-p)","text":"Parameter Function 8096 Http webUI. 8920 Https webUI (you need to setup your own certificate)."},{"location":"images/docker-emby/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-emby/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Emby data storage location. This can grow very large, 50gb+ is likely for a large collection. /data/tvshows Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc. /data/movies Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc. /opt/vc/lib Path for Raspberry Pi OpenMAX libs optional."},{"location":"images/docker-emby/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Only needed if you want to use your Intel or AMD GPU for hardware accelerated video encoding (vaapi). /dev/vchiq Only needed if you want to use your Raspberry Pi OpenMax video encoding (Bellagio). /dev/video10 Only needed if you want to use your Raspberry Pi V4L2 video encoding. /dev/video11 Only needed if you want to use your Raspberry Pi V4L2 video encoding. /dev/video12 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-emby/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-emby/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-emby/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-emby/#support-info","title":"Support Info","text":""},{"location":"images/docker-emby/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-emby/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-emby/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-emby/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-emby/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-emby/#versions","title":"Versions","text":""},{"location":"images/docker-embystat/","title":"embystat","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

Embystat (upstream project) is no longer actively developed.

"},{"location":"images/docker-embystat/#linuxserverembystat","title":"linuxserver/embystat","text":"

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.

"},{"location":"images/docker-embystat/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/embystat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-embystat/#application-setup","title":"Application Setup","text":"

Access the webui at <your-ip>:6555. Follow the setup wizard on initial install. Then configure the required services.

"},{"location":"images/docker-embystat/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-embystat/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-embystat/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-embystat/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-embystat/#ports-p","title":"Ports (-p)","text":"Parameter Function 6555 web gui"},{"location":"images/docker-embystat/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-embystat/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-embystat/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-embystat/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-embystat/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-embystat/#support-info","title":"Support Info","text":""},{"location":"images/docker-embystat/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-embystat/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-embystat/#via-docker-run","title":"Via Docker Run","text":""},{"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":"

Warning

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.

"},{"location":"images/docker-embystat/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-embystat/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-embystat/#versions","title":"Versions","text":""},{"location":"images/docker-emulatorjs/","title":"emulatorjs","text":""},{"location":"images/docker-emulatorjs/#linuxserveremulatorjs","title":"linuxserver/emulatorjs","text":"

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.

"},{"location":"images/docker-emulatorjs/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/emulatorjs:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-emulatorjs/#application-setup","title":"Application Setup","text":"

The Backend can be accessed at:

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 /data mount. From there add roms to the respective roms directories and follow the on screen instructions to add them to your web frontend running on port 80.

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.

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 /emulatorjs/frontend 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 -e DISABLE_IPFS=true.

"},{"location":"images/docker-emulatorjs/#read-only-rom-mounts","title":"Read Only Rom Mounts","text":"

Mounting in existing rom directories Read Only can be achieved by using a special root path /roms, For example for NES:

-v /path/to/nes/roms:/roms/nes:ro

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

"},{"location":"images/docker-emulatorjs/#compatible-and-tested-browsers","title":"Compatible and Tested Browsers","text":"

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.

Firefox- This will work (at reduced performance though) without tested controller support.

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.

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.

"},{"location":"images/docker-emulatorjs/#navigation-basics","title":"Navigation Basics","text":"

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.

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.

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)

"},{"location":"images/docker-emulatorjs/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-emulatorjs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-emulatorjs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-emulatorjs/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-emulatorjs/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Rom/artwork management interface, used to generate/manage config files and download artwork 80 Emulation frontend containing static web files used to browse and launch games 4001 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 (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SUBFOLDER=/ Specify a subfolder for reverse proxies IE '/FOLDER/'"},{"location":"images/docker-emulatorjs/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Path to store user profiles /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-emulatorjs/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-emulatorjs/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-emulatorjs/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-emulatorjs/#support-info","title":"Support Info","text":""},{"location":"images/docker-emulatorjs/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-emulatorjs/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-emulatorjs/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-emulatorjs/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-emulatorjs/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-emulatorjs/#versions","title":"Versions","text":""},{"location":"images/docker-endlessh/","title":"endlessh","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

We recommend looking at an alternative implementation such as: https://github.com/shizunge/endlessh-go/

"},{"location":"images/docker-endlessh/#linuxserverendlessh","title":"linuxserver/endlessh","text":"

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.

"},{"location":"images/docker-endlessh/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/endlessh:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-endlessh/#application-setup","title":"Application Setup","text":"

The app listens on the port mapped for ssh connections. To log to file, set the environment variable LOGFILE to true and map a volume for /config. The logs will be under /config/logs/endlessh.

"},{"location":"images/docker-endlessh/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-endlessh/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-endlessh/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-endlessh/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-endlessh/#ports-p","title":"Ports (-p)","text":"Parameter Function 2222 ssh port"},{"location":"images/docker-endlessh/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. MSDELAY=10000 The endless banner is sent one line at a time. This is the delay in milliseconds between individual lines. MAXLINES=32 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. MAXCLIENTS=4096 Maximum number of connections to accept at a time. Connections beyond this are not immediately rejected, but will wait in the queue. LOGFILE=false By default, the app logs to container log. If this is set to true, the log will be output to file under /config/logs/endlessh (/config needs to be mapped). BINDFAMILY= By default, the app binds to IPv4 and IPv6 addresses. Set it to 4 or 6 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 (-v)","text":"Volume Function /config Required if LOGFILE is set to true."},{"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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-endlessh/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-endlessh/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-endlessh/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-endlessh/#support-info","title":"Support Info","text":""},{"location":"images/docker-endlessh/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-endlessh/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-endlessh/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-endlessh/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-endlessh/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-endlessh/#versions","title":"Versions","text":""},{"location":"images/docker-fail2ban/","title":"fail2ban","text":""},{"location":"images/docker-fail2ban/#linuxserverfail2ban","title":"linuxserver/fail2ban","text":"

Fail2ban is a daemon to ban hosts that cause multiple authentication errors.

"},{"location":"images/docker-fail2ban/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/fail2ban:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-fail2ban/#application-setup","title":"Application Setup","text":"

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 chain to INPUT in the jail for that application.

"},{"location":"images/docker-fail2ban/#configuration-files","title":"Configuration Files","text":"

On first run, the container will create a number of folders and files in /config. The default configurations for fail2ban are all disabled by default.

Please refer to the Configuration README, which can be viewed in our repository, or in your config folder at /config/fail2ban/README.md.

"},{"location":"images/docker-fail2ban/#remote-logs","title":"Remote Logs","text":"

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.

The /remotelogs 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 /remotelogs, ex: - /remotelogs/nginx/ would mount a folder containing the nginx logs to the container

"},{"location":"images/docker-fail2ban/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-fail2ban/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-fail2ban/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-fail2ban/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-fail2ban/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-fail2ban/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Shares host networking with container."},{"location":"images/docker-fail2ban/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. VERBOSITY=-vv 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 (-v)","text":"Volume Function /config Persistent config files /var/log:ro Host logs. Mounted as Read Only. /remotelogs/airsonic:ro Optional path to airsonic log folder. Mounted as Read Only. /remotelogs/apache2:ro Optional path to apache2 log folder. Mounted as Read Only. /remotelogs/authelia:ro Optional path to authelia log folder. Mounted as Read Only. /remotelogs/emby:ro Optional path to emby log folder. Mounted as Read Only. /remotelogs/filebrowser:ro Optional path to filebrowser log folder. Mounted as Read Only. /remotelogs/homeassistant:ro Optional path to homeassistant log folder. Mounted as Read Only. /remotelogs/lighttpd:ro Optional path to lighttpd log folder. Mounted as Read Only. /remotelogs/nextcloud:ro Optional path to nextcloud log folder. Mounted as Read Only. /remotelogs/nginx:ro Optional path to nginx log folder. Mounted as Read Only. /remotelogs/nzbget:ro Optional path to nzbget log folder. Mounted as Read Only. /remotelogs/overseerr:ro Optional path to overseerr log folder. Mounted as Read Only. /remotelogs/prowlarr:ro Optional path to prowlarr log folder. Mounted as Read Only. /remotelogs/radarr:ro Optional path to radarr log folder. Mounted as Read Only. /remotelogs/sabnzbd:ro Optional path to sabnzbd log folder. Mounted as Read Only. /remotelogs/sonarr:ro Optional path to sonarr log folder. Mounted as Read Only. /remotelogs/unificontroller:ro Optional path to unificontroller log folder. Mounted as Read Only. /remotelogs/vaultwarden:ro 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":"

Warning

This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

"},{"location":"images/docker-fail2ban/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-fail2ban/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-fail2ban/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-fail2ban/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-fail2ban/#support-info","title":"Support Info","text":""},{"location":"images/docker-fail2ban/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-fail2ban/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-fail2ban/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-fail2ban/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-fail2ban/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-fail2ban/#versions","title":"Versions","text":""},{"location":"images/docker-faster-whisper/","title":"faster-whisper","text":""},{"location":"images/docker-faster-whisper/#linuxserverfaster-whisper","title":"linuxserver/faster-whisper","text":"

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.

"},{"location":"images/docker-faster-whisper/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/faster-whisper:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-faster-whisper/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

For use with Home Assistant Assist, add the Wyoming integration and supply the hostname/IP and port that Whisper is running add-on.\"

When using the gpu tag with Nvidia GPUs, make sure you set the container to use the nvidia 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.

For more information see the faster-whisper docs,

"},{"location":"images/docker-faster-whisper/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-faster-whisper/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-faster-whisper/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-faster-whisper/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-faster-whisper/#ports-p","title":"Ports (-p)","text":"Parameter Function 10300 Wyoming connection port."},{"location":"images/docker-faster-whisper/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. WHISPER_MODEL=tiny-int8 Whisper model that will be used for transcription. From tiny, base, small and medium, all with -int8 compressed variants WHISPER_BEAM=1 Number of candidates to consider simultaneously during transcription. WHISPER_LANG=en Language that you will speak to the add-on."},{"location":"images/docker-faster-whisper/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-faster-whisper/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-faster-whisper/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-faster-whisper/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-faster-whisper/#support-info","title":"Support Info","text":""},{"location":"images/docker-faster-whisper/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-faster-whisper/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-faster-whisper/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-faster-whisper/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-faster-whisper/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-faster-whisper/#versions","title":"Versions","text":""},{"location":"images/docker-feed2toot/","title":"feed2toot","text":""},{"location":"images/docker-feed2toot/#linuxserverfeed2toot","title":"linuxserver/feed2toot","text":"

Feed2toot automatically parses rss feeds, identifies new posts and posts them on the Mastodon social network.

"},{"location":"images/docker-feed2toot/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/feed2toot:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-feed2toot/#application-setup","title":"Application Setup","text":"

Run 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 to generate credential files (be sure to set the correct volume path and PUID/PGID values).

Edit the feed2toot.ini in /config to configure your instance name and RSS feeds.

See the feed2toot docs for more information.

"},{"location":"images/docker-feed2toot/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-feed2toot/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-feed2toot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-feed2toot/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-feed2toot/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-feed2toot/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. FEED_LIMIT=5 Limit number of RSS entries published at each execution."},{"location":"images/docker-feed2toot/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-feed2toot/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-feed2toot/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-feed2toot/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-feed2toot/#support-info","title":"Support Info","text":""},{"location":"images/docker-feed2toot/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-feed2toot/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-feed2toot/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-feed2toot/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-feed2toot/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-feed2toot/#versions","title":"Versions","text":""},{"location":"images/docker-ferdium/","title":"ferdium","text":""},{"location":"images/docker-ferdium/#linuxserverferdium","title":"linuxserver/ferdium","text":"

Ferdium is a desktop app that helps you organize how you use your favourite apps by combining them into one application.

"},{"location":"images/docker-ferdium/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/ferdium:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-ferdium/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-ferdium/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-ferdium/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-ferdium/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-ferdium/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-ferdium/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-ferdium/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-ferdium/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Ferdium desktop gui. 3001 Ferdium desktop gui HTTPS."},{"location":"images/docker-ferdium/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-ferdium/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and files."},{"location":"images/docker-ferdium/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= Required for electron apps to fucntion properly. --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-ferdium/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-ferdium/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-ferdium/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-ferdium/#support-info","title":"Support Info","text":""},{"location":"images/docker-ferdium/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-ferdium/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-ferdium/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-ferdium/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-ferdium/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-ferdium/#versions","title":"Versions","text":""},{"location":"images/docker-ffmpeg/","title":"ffmpeg","text":"

The LinuxServer.io team brings you another container release featuring :-

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

FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video.

"},{"location":"images/docker-ffmpeg/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/ffmpeg:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c arm32v7-<version tag>"},{"location":"images/docker-ffmpeg/#usage","title":"Usage","text":"

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.

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.

"},{"location":"images/docker-ffmpeg/#included-intel-drivers-latest-versions-compiled","title":"Included Intel Drivers (latest versions compiled):","text":""},{"location":"images/docker-ffmpeg/#basic-transcode","title":"Basic Transcode","text":"
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
"},{"location":"images/docker-ffmpeg/#hardware-accelerated-vaapi-click-for-more-info","title":"Hardware accelerated (VAAPI) (click for more info)","text":"
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
"},{"location":"images/docker-ffmpeg/#hardware-accelerated-qsv-click-for-more-info","title":"Hardware accelerated (QSV) (click for more info)","text":"
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
"},{"location":"images/docker-ffmpeg/#nvidia-hardware-accelerated-click-for-more-info","title":"Nvidia Hardware accelerated (click for more info)","text":"
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
"},{"location":"images/docker-ffmpeg/#vulkan-support","title":"Vulkan support","text":"

Vulkan support has been added to x86_64 (tested with Intel and AMD iGPU) (click for more info).

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

Note: Vulkan supports three drivers: - ANV: To enable for Intel, set the env var ANV_VIDEO_DECODE=1 - RADV: To enable on AMD, set the env var RADV_PERFTEST=video_decode - NVIDIA: To enable on Nvidia, install Nvidia Vulkan Beta drivers on the host per this article

"},{"location":"images/docker-ffmpeg/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-ffmpeg/#versions","title":"Versions","text":""},{"location":"images/docker-filezilla/","title":"filezilla","text":""},{"location":"images/docker-filezilla/#linuxserverfilezilla","title":"linuxserver/filezilla","text":"

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":"images/docker-filezilla/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/filezilla:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-filezilla/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-filezilla/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-filezilla/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-filezilla/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-filezilla/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-filezilla/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-filezilla/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-filezilla/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 FileZilla desktop gui. 3001 FileZilla desktop gui HTTPS."},{"location":"images/docker-filezilla/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-filezilla/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-filezilla/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-filezilla/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-filezilla/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-filezilla/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-filezilla/#support-info","title":"Support Info","text":""},{"location":"images/docker-filezilla/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-filezilla/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-filezilla/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-filezilla/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-filezilla/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-filezilla/#versions","title":"Versions","text":""},{"location":"images/docker-firefox/","title":"firefox","text":""},{"location":"images/docker-firefox/#linuxserverfirefox","title":"linuxserver/firefox","text":"

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.

"},{"location":"images/docker-firefox/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/firefox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-firefox/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-firefox/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-firefox/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-firefox/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-firefox/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-firefox/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-firefox/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-firefox/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Firefox desktop gui. 3001 Firefox desktop gui HTTPS."},{"location":"images/docker-firefox/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. FIREFOX_CLI=https://www.linuxserver.io/ 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 (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-firefox/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= This is needed for any modern website to function like youtube. --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-firefox/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-firefox/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-firefox/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-firefox/#support-info","title":"Support Info","text":""},{"location":"images/docker-firefox/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-firefox/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-firefox/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-firefox/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-firefox/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-firefox/#versions","title":"Versions","text":""},{"location":"images/docker-fleet/","title":"fleet","text":""},{"location":"images/docker-fleet/#linuxserverfleet","title":"linuxserver/fleet","text":"

Fleet provides an online web interface which displays a set of maintained images from one or more owned repositories.

"},{"location":"images/docker-fleet/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/fleet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-fleet/#application-setup","title":"Application Setup","text":"

Navigate to http://your_ip_here:8080 to display the home page. If DATABASE is selected as the preferred authentication process, ensure that you set up an initial user via http://your_ip_here:8080/setup. 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 http://your_ip_here:8080/login to manage your repositories.

"},{"location":"images/docker-fleet/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-fleet/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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://<url>: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
"},{"location":"images/docker-fleet/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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://<url>: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
"},{"location":"images/docker-fleet/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-fleet/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Http port"},{"location":"images/docker-fleet/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. fleet_admin_authentication_type=DATABASE 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. fleet_database_url=jdbc:mariadb://<url>:3306/fleet The full JDBC connection string to the Fleet database fleet_database_username=fleet_user The username with the relevant GRANT permissions for the database fleet_database_password=dbuserpassword The database user's password. fleet_admin_secret=randomstring A string used as part of the password key derivation process."},{"location":"images/docker-fleet/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-fleet/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-fleet/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-fleet/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-fleet/#support-info","title":"Support Info","text":""},{"location":"images/docker-fleet/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-fleet/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-fleet/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-fleet/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-fleet/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-fleet/#versions","title":"Versions","text":""},{"location":"images/docker-flexget/","title":"flexget","text":""},{"location":"images/docker-flexget/#linuxserverflexget","title":"linuxserver/flexget","text":"

Flexget is a multipurpose automation tool for all of your media.

"},{"location":"images/docker-flexget/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/flexget:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-flexget/#application-setup","title":"Application Setup","text":"

Default config file is /config/.flexget

See the FlexGet website for more information.

"},{"location":"images/docker-flexget/#download-folders","title":"Download folders","text":"

We have set /data 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.

Use the optional paths if you don't understand, or don't want hardlinks/atomic moves.

The folks over at servarr.com wrote a good write-up on how to get started with this.

"},{"location":"images/docker-flexget/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-flexget/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-flexget/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-flexget/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-flexget/#ports-p","title":"Ports (-p)","text":"Parameter Function 5050 HTTP port for the WebUI."},{"location":"images/docker-flexget/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. FG_LOG_LEVEL=info Set the FlexGet logging level. FG_LOG_FILE=/config/flexget.log Set the FlexGet log file location. FG_CONFIG_FILE=/config/.flexget/config.yml Set the FlexGet config file location. FG_WEBUI_PASSWORD=info Set the FlexGet webui password. Pay attention to Bash/YAML reserved characters."},{"location":"images/docker-flexget/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Local path for FlexGet config files. /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-flexget/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-flexget/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-flexget/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-flexget/#support-info","title":"Support Info","text":""},{"location":"images/docker-flexget/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-flexget/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-flexget/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-flexget/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-flexget/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-flexget/#versions","title":"Versions","text":""},{"location":"images/docker-foldingathome/","title":"foldingathome","text":""},{"location":"images/docker-foldingathome/#linuxserverfoldingathome","title":"linuxserver/foldingathome","text":"

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":"images/docker-foldingathome/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/foldingathome:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-foldingathome/#application-setup","title":"Application Setup","text":"

This image sets up the Folding@home client. The interface is available at http://your-ip:7396.

The built-in webserver provides very basic control (ie. GPUs are only active when set to Medium 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 36330 (no password).

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 shft-F5 or ctrl-F5.

"},{"location":"images/docker-foldingathome/#gpu-hardware-acceleration","title":"GPU Hardware Acceleration","text":""},{"location":"images/docker-foldingathome/#nvidia","title":"Nvidia","text":"

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 --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the foldingathome docker container.

"},{"location":"images/docker-foldingathome/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-foldingathome/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-foldingathome/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-foldingathome/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-foldingathome/#ports-p","title":"Ports (-p)","text":"Parameter Function 7396 Folding@home web gui. 36330 Optional port for connecting remotely via FAHControl app (no password)."},{"location":"images/docker-foldingathome/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-foldingathome/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-foldingathome/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-foldingathome/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-foldingathome/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-foldingathome/#support-info","title":"Support Info","text":""},{"location":"images/docker-foldingathome/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-foldingathome/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-foldingathome/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-foldingathome/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-foldingathome/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-foldingathome/#versions","title":"Versions","text":""},{"location":"images/docker-freecad/","title":"freecad","text":""},{"location":"images/docker-freecad/#linuxserverfreecad","title":"linuxserver/freecad","text":"

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.

"},{"location":"images/docker-freecad/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/freecad:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-freecad/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

When resizing the window for this application the title bar will be offscreen, use alt+click and drag to move it (native to openbox)

"},{"location":"images/docker-freecad/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-freecad/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-freecad/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-freecad/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-freecad/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-freecad/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-freecad/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 FreeCAD desktop gui. 3001 FreeCAD desktop gui HTTPS."},{"location":"images/docker-freecad/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-freecad/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and files."},{"location":"images/docker-freecad/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-freecad/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-freecad/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-freecad/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-freecad/#support-info","title":"Support Info","text":""},{"location":"images/docker-freecad/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-freecad/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-freecad/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-freecad/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-freecad/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-freecad/#versions","title":"Versions","text":""},{"location":"images/docker-freshrss/","title":"freshrss","text":""},{"location":"images/docker-freshrss/#linuxserverfreshrss","title":"linuxserver/freshrss","text":"

Freshrss is a free, self-hostable aggregator for rss feeds.

"},{"location":"images/docker-freshrss/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/freshrss:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-freshrss/#application-setup","title":"Application Setup","text":"

Access the webui set up wizard at http://serverIP:port

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.

Additional extensions can be dropped into /config/www/freshrss/extensions and will be active after container restart.

"},{"location":"images/docker-freshrss/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-freshrss/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-freshrss/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-freshrss/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-freshrss/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-freshrss/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-freshrss/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-freshrss/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-freshrss/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-freshrss/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-freshrss/#support-info","title":"Support Info","text":""},{"location":"images/docker-freshrss/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-freshrss/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-freshrss/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-freshrss/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-freshrss/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-freshrss/#versions","title":"Versions","text":""},{"location":"images/docker-gimp/","title":"gimp","text":""},{"location":"images/docker-gimp/#linuxservergimp","title":"linuxserver/gimp","text":"

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.

"},{"location":"images/docker-gimp/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/gimp:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-gimp/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-gimp/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-gimp/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-gimp/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-gimp/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-gimp/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-gimp/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-gimp/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 GIMP desktop gui. 3001 GIMP desktop gui HTTPS."},{"location":"images/docker-gimp/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-gimp/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-gimp/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-gimp/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-gimp/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-gimp/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-gimp/#support-info","title":"Support Info","text":""},{"location":"images/docker-gimp/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-gimp/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-gimp/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-gimp/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-gimp/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-gimp/#versions","title":"Versions","text":""},{"location":"images/docker-github-desktop/","title":"github-desktop","text":""},{"location":"images/docker-github-desktop/#linuxservergithub-desktop","title":"linuxserver/github-desktop","text":"

Github Desktop is an open source Electron-based GitHub app. It is written in TypeScript and uses React.

"},{"location":"images/docker-github-desktop/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/github-desktop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-github-desktop/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-github-desktop/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-github-desktop/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-github-desktop/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-github-desktop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-github-desktop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-github-desktop/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-github-desktop/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Github Desktop gui. 3001 HTTPS Github Desktop gui."},{"location":"images/docker-github-desktop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-github-desktop/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-github-desktop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= This is needed for electron applications to function properly. --security-opt seccomp=unconfined 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":"

Warning

This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

"},{"location":"images/docker-github-desktop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-github-desktop/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-github-desktop/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-github-desktop/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-github-desktop/#support-info","title":"Support Info","text":""},{"location":"images/docker-github-desktop/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-github-desktop/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-github-desktop/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-github-desktop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-github-desktop/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-github-desktop/#versions","title":"Versions","text":""},{"location":"images/docker-gitqlient/","title":"gitqlient","text":""},{"location":"images/docker-gitqlient/#linuxservergitqlient","title":"linuxserver/gitqlient","text":"

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.

"},{"location":"images/docker-gitqlient/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/gitqlient:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-gitqlient/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-gitqlient/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-gitqlient/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-gitqlient/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-gitqlient/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-gitqlient/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-gitqlient/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-gitqlient/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 GitQlient desktop gui. 3001 HTTPS GitQlient desktop gui."},{"location":"images/docker-gitqlient/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-gitqlient/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-gitqlient/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-gitqlient/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-gitqlient/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-gitqlient/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-gitqlient/#support-info","title":"Support Info","text":""},{"location":"images/docker-gitqlient/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-gitqlient/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-gitqlient/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-gitqlient/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-gitqlient/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-gitqlient/#versions","title":"Versions","text":""},{"location":"images/docker-grav/","title":"grav","text":""},{"location":"images/docker-grav/#linuxservergrav","title":"linuxserver/grav","text":"

Grav is a Fast, Simple, and Flexible, file-based Web-platform.

"},{"location":"images/docker-grav/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/grav:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-grav/#application-setup","title":"Application Setup","text":"

For more information check out the Grav documentation. Our image includes the grav-admin plugin.

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. docker exec -it -w /app/www/public grav bin/gpm

"},{"location":"images/docker-grav/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-grav/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-grav/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-grav/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-grav/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Port for web frontend"},{"location":"images/docker-grav/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-grav/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-grav/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-grav/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-grav/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-grav/#support-info","title":"Support Info","text":""},{"location":"images/docker-grav/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-grav/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-grav/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-grav/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-grav/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-grav/#versions","title":"Versions","text":""},{"location":"images/docker-grocy/","title":"grocy","text":""},{"location":"images/docker-grocy/#linuxservergrocy","title":"linuxserver/grocy","text":"

Grocy is an ERP system for your kitchen! Cut down on food waste, and manage your chores with this brilliant utility.

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

For more information on grocy visit their website and check it out: https://grocy.info

"},{"location":"images/docker-grocy/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/grocy:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-grocy/#application-setup","title":"Application Setup","text":"

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

"},{"location":"images/docker-grocy/#upgrading","title":"Upgrading","text":"

Following a container upgrade ensure that you visit the root (/) 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.

"},{"location":"images/docker-grocy/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-grocy/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-grocy/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-grocy/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-grocy/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 will map the container's port 80 to port 9283 on the host"},{"location":"images/docker-grocy/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-grocy/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-grocy/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-grocy/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-grocy/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-grocy/#support-info","title":"Support Info","text":""},{"location":"images/docker-grocy/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-grocy/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-grocy/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-grocy/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-grocy/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-grocy/#versions","title":"Versions","text":""},{"location":"images/docker-habridge/","title":"habridge","text":""},{"location":"images/docker-habridge/#linuxserverhabridge","title":"linuxserver/habridge","text":"

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.

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.

This bridge was built to help put the Internet of Things together.

For more information about how to use this software have a look at their Wiki https://github.com/bwssytems/ha-bridge/wiki

"},{"location":"images/docker-habridge/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/habridge:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-habridge/#application-setup","title":"Application Setup","text":"

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.

For information on how to configure ha-bridge, go to their wiki at https://github.com/bwssytems/ha-bridge/wiki

"},{"location":"images/docker-habridge/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-habridge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-habridge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-habridge/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-habridge/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 WebUI 50000 HABridge communication port."},{"location":"images/docker-habridge/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SEC_KEY= Key used to secure communication."},{"location":"images/docker-habridge/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-habridge/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-habridge/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-habridge/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-habridge/#support-info","title":"Support Info","text":""},{"location":"images/docker-habridge/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-habridge/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-habridge/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-habridge/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-habridge/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-habridge/#versions","title":"Versions","text":""},{"location":"images/docker-headphones/","title":"headphones","text":"

Warning

This image is deprecated. We will not offer support for this image and it will not be updated.

"},{"location":"images/docker-headphones/#linuxserverheadphones","title":"linuxserver/headphones","text":"

Headphones is an automated music downloader for NZB and Torrent, written in Python. It supports SABnzbd, NZBget, Transmission, \u00b5Torrent and Blackhole.

"},{"location":"images/docker-headphones/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/headphones:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-headphones/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-headphones/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-headphones/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-headphones/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-headphones/#ports-p","title":"Ports (-p)","text":"Parameter Function 8181 Application WebUI"},{"location":"images/docker-headphones/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-headphones/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files. /downloads ISOs. /music 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-headphones/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-headphones/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-headphones/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-headphones/#support-info","title":"Support Info","text":""},{"location":"images/docker-headphones/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-headphones/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-headphones/#via-docker-run","title":"Via Docker Run","text":""},{"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":"

Warning

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.

"},{"location":"images/docker-headphones/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-headphones/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-headphones/#versions","title":"Versions","text":""},{"location":"images/docker-healthchecks/","title":"healthchecks","text":""},{"location":"images/docker-healthchecks/#linuxserverhealthchecks","title":"linuxserver/healthchecks","text":"

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.

"},{"location":"images/docker-healthchecks/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/healthchecks:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-healthchecks/#application-setup","title":"Application Setup","text":"

Access the WebUI at :8000. For more information, check out Healthchecks.

See here for a complete list of available environment variables.

"},{"location":"images/docker-healthchecks/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-healthchecks/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-healthchecks/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-healthchecks/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-healthchecks/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Healthchecks Web UI 2525 Port for inbound SMTP pings"},{"location":"images/docker-healthchecks/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SITE_ROOT= 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). SITE_NAME= The site's name (e.g., \"Example Corp HealthChecks\"). SUPERUSER_EMAIL= Superuser email. SUPERUSER_PASSWORD= Superuser password. ALLOWED_HOSTS= A comma-separated list of valid hostnames for the server. Default is: *. APPRISE_ENABLED=False Set to True to enable the Apprise integration (https://github.com/caronc/apprise). CSRF_TRUSTED_ORIGINS= A list of trusted origins for unsafe requests (e.g. POST). Defaults to the value of SITE_ROOT. DEBUG=True Set to False 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. DEFAULT_FROM_EMAIL= From email for alerts. EMAIL_HOST= SMTP host. EMAIL_PORT= SMTP port. EMAIL_HOST_USER= SMTP user. EMAIL_HOST_PASSWORD= SMTP password. EMAIL_USE_TLS= Use TLS for SMTP (True or False). INTEGRATIONS_ALLOW_PRIVATE_IPS= Defaults to False. Set to True to allow integrations to connect to private IP addresses. PING_EMAIL_DOMAIN= The domain to use for generating ping email addresses. Defaults to localhost. RP_ID= If using webauthn for 2FA set this to match your Healthchecks domain. Webauthn will only work over https. SECRET_KEY= A secret key used for cryptographic signing. Will generate a random value if one is not supplied and save it to /config/local_settings.py. SITE_LOGO_URL= Full URL to custom site logo."},{"location":"images/docker-healthchecks/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-healthchecks/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-healthchecks/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-healthchecks/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-healthchecks/#support-info","title":"Support Info","text":""},{"location":"images/docker-healthchecks/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-healthchecks/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-healthchecks/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-healthchecks/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-healthchecks/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-healthchecks/#versions","title":"Versions","text":""},{"location":"images/docker-hedgedoc/","title":"hedgedoc","text":""},{"location":"images/docker-hedgedoc/#linuxserverhedgedoc","title":"linuxserver/hedgedoc","text":"

HedgeDoc gives you access to all your files wherever you are.

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.

"},{"location":"images/docker-hedgedoc/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/hedgedoc:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-hedgedoc/#application-setup","title":"Application Setup","text":"

HedgeDoc web interface can be accessed http://${IP}:3000/, 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)

Full list of HedgeDoc options

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.

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

"},{"location":"images/docker-hedgedoc/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-hedgedoc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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=<hostname or ip>\"\n      - DB_PORT=3306\n      - DB_USER=hedgedoc\n      - \"DB_PASS=<secret password>\"\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
"},{"location":"images/docker-hedgedoc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
docker run -d \\\n  --name=hedgedoc \\\n  -e PUID=1000 \\\n  -e PGID=1000 \\\n  -e TZ=Etc/UTC \\\n  -e DB_HOST=\"<hostname or ip>\" \\\n  -e DB_PORT=3306 \\\n  -e DB_USER=hedgedoc \\\n  -e DB_PASS=\"<secret password>\" \\\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
"},{"location":"images/docker-hedgedoc/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-hedgedoc/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 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 (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. DB_HOST=<hostname or ip> Host address of mysql database DB_PORT=3306 Port to access mysql database default is 3306 DB_USER=hedgedoc Database user DB_PASS=<secret password> Database password DB_NAME=hedgedoc Database name CMD_DOMAIN=localhost The address the gui will be accessed at (ie. 192.168.1.1 or hedgedoc.domain.com). CMD_URL_ADDPORT=false Set to true if using a port other than 80 or 443. CMD_PROTOCOL_USESSL=false Set to true if accessing over https via reverse proxy. CMD_PORT=3000 If you wish to access hedgedoc at a port different than 80, 443 or 3000, you need to set this to that port (ie. CMD_PORT=5000) and change the port mapping accordingly (5000:5000). CMD_ALLOW_ORIGIN=['localhost'] Comma-separated list of allowed hostnames"},{"location":"images/docker-hedgedoc/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-hedgedoc/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-hedgedoc/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-hedgedoc/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-hedgedoc/#support-info","title":"Support Info","text":""},{"location":"images/docker-hedgedoc/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-hedgedoc/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-hedgedoc/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-hedgedoc/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-hedgedoc/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-hedgedoc/#versions","title":"Versions","text":""},{"location":"images/docker-heimdall/","title":"heimdall","text":""},{"location":"images/docker-heimdall/#linuxserverheimdall","title":"linuxserver/heimdall","text":"

Heimdall is a way to organise all those links to your most used web sites and web applications in a simple way.

Simplicity is the key to Heimdall.

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.

"},{"location":"images/docker-heimdall/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/heimdall:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-heimdall/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Access the web gui at http://SERVERIP:PORT

"},{"location":"images/docker-heimdall/#adding-password-protection","title":"Adding password protection","text":"

This image now supports password protection through htpasswd. Run the following command on your host to generate the htpasswd file docker exec -it heimdall htpasswd -c /config/nginx/.htpasswd <username>. Replace with a username of your choice and you will be asked to enter a password. Uncomment the basic auth lines in /config/nginx/site-confs/default.conf and restart the container."},{"location":"images/docker-heimdall/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-heimdall/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-heimdall/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-heimdall/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-heimdall/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-heimdall/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-heimdall/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-heimdall/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-heimdall/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-heimdall/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-heimdall/#support-info","title":"Support Info","text":""},{"location":"images/docker-heimdall/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-heimdall/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-heimdall/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-heimdall/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-heimdall/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-heimdall/#versions","title":"Versions","text":""},{"location":"images/docker-hishtory-server/","title":"hishtory-server","text":""},{"location":"images/docker-hishtory-server/#linuxserverhishtory-server","title":"linuxserver/hishtory-server","text":"

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.

"},{"location":"images/docker-hishtory-server/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/hishtory-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-hishtory-server/#application-setup","title":"Application Setup","text":"

After you have installed hishtory on your machine, add export HISHTORY_SERVER=http://1.2.3.4:8080 (with your server details) to your shellrc. Then run hishtory init (or hishtory init ${SECRET_KEY}) to initialise hishtory against your local server.

See the project readme for more details.

"},{"location":"images/docker-hishtory-server/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-hishtory-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-hishtory-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-hishtory-server/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-hishtory-server/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 API port"},{"location":"images/docker-hishtory-server/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. HISHTORY_POSTGRES_DB=postgresql://${HISHTORY_DB_USER}:${HISHTORY_DB_PASS}@hishtory-db:5432/hishtory?sslmode=disable Postgres DB Connection URI. Special characters must be URL encoded. HISHTORY_SQLITE_DB=/config/hishtory.db 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 (-v)","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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-hishtory-server/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-hishtory-server/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-hishtory-server/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-hishtory-server/#support-info","title":"Support Info","text":""},{"location":"images/docker-hishtory-server/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-hishtory-server/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-hishtory-server/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-hishtory-server/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-hishtory-server/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-hishtory-server/#versions","title":"Versions","text":""},{"location":"images/docker-homeassistant/","title":"homeassistant","text":""},{"location":"images/docker-homeassistant/#linuxserverhomeassistant","title":"linuxserver/homeassistant","text":"

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.

"},{"location":"images/docker-homeassistant/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/homeassistant:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-homeassistant/#application-setup","title":"Application Setup","text":"

This image is based on Home Assistant Core.

The Webui can be found at http://your-ip:8123. Follow the wizard to set up Home Assistant.

"},{"location":"images/docker-homeassistant/#host-vs-bridge","title":"Host vs. Bridge","text":"

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 --net=host.

"},{"location":"images/docker-homeassistant/#accessing-bluetooth-device","title":"Accessing Bluetooth Device","text":"

In order to provide HA with access to the host's Bluetooth device, one needs to install BlueZ on the host, add the capabilities NET_ADMIN and NET_RAW to the container, and map dbus as a volume as shown in the below examples.

"},{"location":"images/docker-homeassistant/#docker-cli","title":"Docker Cli:","text":"
--cap-add=NET_ADMIN --cap-add=NET_RAW -v /var/run/dbus:/var/run/dbus:ro\n
"},{"location":"images/docker-homeassistant/#docker-compose","title":"Docker Compose:","text":"
    cap_add:\n      - NET_ADMIN\n      - NET_RAW\n    volumes:\n      - /var/run/dbus:/var/run/dbus:ro\n
"},{"location":"images/docker-homeassistant/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-homeassistant/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-homeassistant/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-homeassistant/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-homeassistant/#ports-p","title":"Ports (-p)","text":"Parameter Function 8123 Application WebUI, only use this if you are not using host mode."},{"location":"images/docker-homeassistant/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host 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 (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-homeassistant/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Home Assistant config storage path."},{"location":"images/docker-homeassistant/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /path/to/device 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-homeassistant/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-homeassistant/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-homeassistant/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-homeassistant/#support-info","title":"Support Info","text":""},{"location":"images/docker-homeassistant/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-homeassistant/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-homeassistant/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-homeassistant/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-homeassistant/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-homeassistant/#versions","title":"Versions","text":""},{"location":"images/docker-htpcmanager/","title":"htpcmanager","text":""},{"location":"images/docker-htpcmanager/#linuxserverhtpcmanager","title":"linuxserver/htpcmanager","text":"

Htpcmanager is a front end for many htpc related applications.

"},{"location":"images/docker-htpcmanager/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/htpcmanager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-htpcmanager/#application-setup","title":"Application Setup","text":"

The webui is found at port 8085. Smartmontools and psutil have not been included, you can safely ignore the warning error in the log.

"},{"location":"images/docker-htpcmanager/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-htpcmanager/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-htpcmanager/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-htpcmanager/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-htpcmanager/#ports-p","title":"Ports (-p)","text":"Parameter Function 8085 Application WebUI"},{"location":"images/docker-htpcmanager/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-htpcmanager/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-htpcmanager/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-htpcmanager/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-htpcmanager/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-htpcmanager/#support-info","title":"Support Info","text":""},{"location":"images/docker-htpcmanager/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-htpcmanager/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-htpcmanager/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-htpcmanager/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-htpcmanager/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-htpcmanager/#versions","title":"Versions","text":""},{"location":"images/docker-inkscape/","title":"inkscape","text":""},{"location":"images/docker-inkscape/#linuxserverinkscape","title":"linuxserver/inkscape","text":"

Inkscape is professional quality vector graphics software which runs on Linux, Mac OS X and Windows desktop computers.

"},{"location":"images/docker-inkscape/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/inkscape:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-inkscape/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-inkscape/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-inkscape/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-inkscape/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-inkscape/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-inkscape/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-inkscape/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-inkscape/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Inkscape desktop gui. 3001 Inkscape desktop gui HTTPS."},{"location":"images/docker-inkscape/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-inkscape/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-inkscape/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-inkscape/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-inkscape/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-inkscape/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-inkscape/#support-info","title":"Support Info","text":""},{"location":"images/docker-inkscape/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-inkscape/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-inkscape/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-inkscape/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-inkscape/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-inkscape/#versions","title":"Versions","text":""},{"location":"images/docker-jackett/","title":"jackett","text":""},{"location":"images/docker-jackett/#linuxserverjackett","title":"linuxserver/jackett","text":"

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 & translation logic - removing the burden from other apps.

"},{"location":"images/docker-jackett/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/jackett:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-jackett/#application-setup","title":"Application Setup","text":"

The web interface is at <your-ip>:9117 , configure various trackers and connections to other apps there. More info at Jackett.

"},{"location":"images/docker-jackett/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-jackett/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-jackett/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-jackett/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-jackett/#ports-p","title":"Ports (-p)","text":"Parameter Function 9117 WebUI"},{"location":"images/docker-jackett/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. AUTO_UPDATE=true Allow Jackett to update inside of the container (currently recommended by Jackett and enabled by default) RUN_OPTS= Optionally specify additional arguments to be passed."},{"location":"images/docker-jackett/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where Jackett should store its config file. /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-jackett/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-jackett/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-jackett/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-jackett/#support-info","title":"Support Info","text":""},{"location":"images/docker-jackett/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-jackett/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-jackett/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-jackett/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-jackett/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-jackett/#versions","title":"Versions","text":""},{"location":"images/docker-jellyfin/","title":"jellyfin","text":""},{"location":"images/docker-jellyfin/#linuxserverjellyfin","title":"linuxserver/jellyfin","text":"

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.

"},{"location":"images/docker-jellyfin/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/jellyfin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-jellyfin/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable Jellyfin releases nightly \u2705 Nightly Jellyfin releases"},{"location":"images/docker-jellyfin/#application-setup","title":"Application Setup","text":"

Webui can be found at http://<your-ip>:8096

More information can be found on the official documentation here.

"},{"location":"images/docker-jellyfin/#hardware-acceleration-enhancements","title":"Hardware Acceleration Enhancements","text":"

This section lists the enhancements we have made for hardware acceleration in this image specifically.

"},{"location":"images/docker-jellyfin/#intel","title":"Intel","text":"

To enable the OpenCL based DV, HDR10 and HLG tone-mapping, please refer to the OpenCL-Intel mod from here:

https://mods.linuxserver.io/?mod=jellyfin

"},{"location":"images/docker-jellyfin/#openmax-raspberry-pi","title":"OpenMAX (Raspberry Pi)","text":"

Hardware acceleration users for Raspberry Pi MMAL/OpenMAX will need to mount their /dev/vcsm and /dev/vchiq video devices inside of the container and their system OpenMax libs by passing the following options when running or creating the container:

--device=/dev/vcsm:/dev/vcsm\n--device=/dev/vchiq:/dev/vchiq\n-v /opt/vc/lib:/opt/vc/lib\n
"},{"location":"images/docker-jellyfin/#v4l2-raspberry-pi","title":"V4L2 (Raspberry Pi)","text":"

Hardware acceleration users for Raspberry Pi V4L2 will need to mount their /dev/video1X devices inside of the container by passing the following options when running or creating the container:

--device=/dev/video10:/dev/video10\n--device=/dev/video11:/dev/video11\n--device=/dev/video12:/dev/video12\n
"},{"location":"images/docker-jellyfin/#hardware-acceleration","title":"Hardware Acceleration","text":"

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.

"},{"location":"images/docker-jellyfin/#intelatiamd","title":"Intel/ATI/AMD","text":"

To leverage hardware acceleration you will need to mount /dev/dri video device inside of the container.

--device=/dev/dri:/dev/dri\n

We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

"},{"location":"images/docker-jellyfin/#nvidia","title":"Nvidia","text":"

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

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 --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

"},{"location":"images/docker-jellyfin/#arm-devices","title":"Arm Devices","text":"

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 dtoverlay=vc4-fkms-v3d in your usercfg.txt.

"},{"location":"images/docker-jellyfin/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-jellyfin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-jellyfin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-jellyfin/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-jellyfin/#ports-p","title":"Ports (-p)","text":"Parameter Function 8096 Http webUI. 8920 Optional - Https webUI (you need to set up your own certificate). 7359/udp Optional - Allows clients to discover Jellyfin on the local network. 1900/udp Optional - Service discovery used by DNLA and clients."},{"location":"images/docker-jellyfin/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. JELLYFIN_PublishedServerUrl=192.168.0.5 Set the autodiscovery response domain or IP address."},{"location":"images/docker-jellyfin/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Jellyfin data storage location. This can grow very large, 50gb+ is likely for a large collection. /data/tvshows Media goes here. Add as many as needed e.g. /data/movies, /data/tv, etc. /data/movies Media goes here. Add as many as needed e.g. /data/movies, /data/tv, 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-jellyfin/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-jellyfin/#optional-parameters","title":"Optional Parameters","text":"

The official documentation for ports has additional ports that can provide auto discovery.

Service Discovery (1900/udp) - 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.

Client Discovery (7359/udp) - 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 7359:7359/udp \\\n  -p 1900:1900/udp \\\n

The official documentation for environmentals has additional environmentals that can provide additional configurability such as migrating to the native Jellyfin image.

"},{"location":"images/docker-jellyfin/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-jellyfin/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-jellyfin/#support-info","title":"Support Info","text":""},{"location":"images/docker-jellyfin/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-jellyfin/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-jellyfin/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-jellyfin/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-jellyfin/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-jellyfin/#versions","title":"Versions","text":""},{"location":"images/docker-jenkins-builder/","title":"jenkins-builder","text":""},{"location":"images/docker-jenkins-builder/#linuxserverjenkins-builder","title":"linuxserver/jenkins-builder","text":"

Expects to run as part of the LSIO CI process. Not for public consumption.

"},{"location":"images/docker-jenkins-builder/#running-against-remote-project","title":"Running against remote project","text":"
TEMPDIR=$(mktemp -d) && \\\ndocker run --rm \\\n  -e CONTAINER_NAME=<container name> \\\n  -e GITHUB_BRANCH=<branch name> \\\n  -v ${TEMPDIR}:/ansible/jenkins \\\n  lscr.io/linuxserver/jenkins-builder:latest\n
"},{"location":"images/docker-jenkins-builder/#running-against-local-project","title":"Running against local project","text":"

If you need to test functionality just navigate to the folder with the jenkins-vars.yml and run:

docker pull lscr.io/linuxserver/jenkins-builder:latest && \\\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 && \\\nrm -rf .jenkins-external\n

Newly generated files (including README.md, Jenkinsfile, issue templates, etc.) will overwrite the existing files in your current working directory.

"},{"location":"images/docker-jenkins-builder/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-jenkins-builder/#versions","title":"Versions","text":"

The following line is only in this repo for loop testing:

"},{"location":"images/docker-kasm/","title":"kasm","text":""},{"location":"images/docker-kasm/#linuxserverkasm","title":"linuxserver/kasm","text":"

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.

The rendering of the graphical-based containers is powered by the open-source project KasmVNC.

"},{"location":"images/docker-kasm/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/kasm:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-kasm/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable Kasm releases develop \u2705 Tip of develop"},{"location":"images/docker-kasm/#application-setup","title":"Application Setup","text":"

This container uses Docker in Docker and requires being run in privileged mode. This container also requires an initial setup that runs on port 3000.

Unlike other containers the web interface port (default 443) needs to be set for the env variable KASM_PORT and both the inside and outside port IE for 4443 KASM_PORT=4443 -p 4443:4443

Unraid users due to the DinD storage layer /opt/ should be mounted directly to a disk IE /mnt/disk1/appdata/path or optimally with a cache disk at /mnt/cache/appdata/path

Access the installation wizard at https://your ip:3000 and follow the instructions there. Once setup is complete access https://your ip:443 and login with the credentials you entered during setup. The default users are:

Currently Synology systems are not supported due to them blocking CPU scheduling in their Kernel.

"},{"location":"images/docker-kasm/#gpu-support","title":"GPU Support","text":"

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 -e NVIDIA_VISIBLE_DEVICES=all or --gpus all 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.

"},{"location":"images/docker-kasm/#gamepad-support","title":"Gamepad support","text":"

In order to properly create virtual Gamepads you will need to mount from your host /dev/input and /run/udev/data. Please see HERE for instructions on enabling gamepad support.

"},{"location":"images/docker-kasm/#persistant-profiles","title":"Persistant profiles","text":"

In order to use persistant profiles in Workspaces you will need to mount in a folder to use from your host to /profiles. From there when configuring a workspace you can set the Persistant Profile Path to IE /profiles/ubuntu-focal/{username}/, more infomation can be found HERE.

"},{"location":"images/docker-kasm/#reverse-proxy","title":"Reverse proxy","text":"

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.

"},{"location":"images/docker-kasm/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

"},{"location":"images/docker-kasm/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-kasm/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-kasm/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-kasm/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-kasm/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Kasm Installation wizard. (https) 443 Kasm Workspaces interface. (https)"},{"location":"images/docker-kasm/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function KASM_PORT=443 Specify the port you bind to the outside for Kasm Workspaces. DOCKER_HUB_USERNAME=USER Optionally specify a DockerHub Username to pull private images. DOCKER_HUB_PASSWORD=PASS Optionally specify a DockerHub password to pull private images. DOCKER_MTU=1500 Optionally specify the mtu options passed to dockerd."},{"location":"images/docker-kasm/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /opt Docker and installation storage. /profiles Optionally specify a path for persistent profile storage. /dev/input Optional for gamepad support. /run/udev/data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-kasm/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-kasm/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-kasm/#support-info","title":"Support Info","text":""},{"location":"images/docker-kasm/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-kasm/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-kasm/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-kasm/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-kasm/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-kasm/#versions","title":"Versions","text":""},{"location":"images/docker-kavita/","title":"kavita","text":""},{"location":"images/docker-kavita/#linuxserverkavita","title":"linuxserver/kavita","text":"

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!

"},{"location":"images/docker-kavita/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/kavita:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-kavita/#application-setup","title":"Application Setup","text":"

Access the webui at <your-ip>:5000. Follow the setup wizard on initial install.

The docker cli and compose yml samples provided list a single /data 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 /manga, /comics and /books, each mapped to separate folders on host.

"},{"location":"images/docker-kavita/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-kavita/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-kavita/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-kavita/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-kavita/#ports-p","title":"Ports (-p)","text":"Parameter Function 5000 web gui"},{"location":"images/docker-kavita/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-kavita/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-kavita/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-kavita/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-kavita/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-kavita/#support-info","title":"Support Info","text":""},{"location":"images/docker-kavita/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-kavita/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-kavita/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-kavita/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-kavita/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-kavita/#versions","title":"Versions","text":""},{"location":"images/docker-kdenlive/","title":"kdenlive","text":""},{"location":"images/docker-kdenlive/#linuxserverkdenlive","title":"linuxserver/kdenlive","text":"

Kdenlive is a powerful free and open source cross-platform video editing program made by the KDE community. Feature rich and production ready.

"},{"location":"images/docker-kdenlive/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/kdenlive:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-kdenlive/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-kdenlive/#hardware-acceleration-x86_64-only","title":"Hardware Acceleration (x86_64 only)","text":"

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 vaapi_device. 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)

vainfo --display drm --device /dev/dri/renderD128\n
"},{"location":"images/docker-kdenlive/#nvidia","title":"Nvidia","text":"

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 --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

"},{"location":"images/docker-kdenlive/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-kdenlive/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-kdenlive/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-kdenlive/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-kdenlive/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-kdenlive/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-kdenlive/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Kdenlive desktop gui 3001 Kdenlive desktop gui HTTPS"},{"location":"images/docker-kdenlive/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SUBFOLDER=/ Specify a subfolder to use with reverse proxies, IE /subfolder/"},{"location":"images/docker-kdenlive/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-kdenlive/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dri Add this for hardware acceleration (Linux hosts only)"},{"location":"images/docker-kdenlive/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= This might be needed to prevent crashing --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-kdenlive/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-kdenlive/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-kdenlive/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-kdenlive/#support-info","title":"Support Info","text":""},{"location":"images/docker-kdenlive/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-kdenlive/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-kdenlive/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-kdenlive/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-kdenlive/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-kdenlive/#versions","title":"Versions","text":""},{"location":"images/docker-kicad/","title":"kicad","text":""},{"location":"images/docker-kicad/#linuxserverkicad","title":"linuxserver/kicad","text":"

KiCad - A Cross Platform and Open Source Electronics Design Automation Suite.

"},{"location":"images/docker-kicad/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/kicad:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-kicad/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

A text editor is available in this image under /usr/bin/mousepad

"},{"location":"images/docker-kicad/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-kicad/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-kicad/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-kicad/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-kicad/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-kicad/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-kicad/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 KiCad desktop gui. 3001 KiCad desktop gui HTTPS."},{"location":"images/docker-kicad/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-kicad/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and files."},{"location":"images/docker-kicad/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-kicad/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-kicad/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-kicad/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-kicad/#support-info","title":"Support Info","text":""},{"location":"images/docker-kicad/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-kicad/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-kicad/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-kicad/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-kicad/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-kicad/#versions","title":"Versions","text":""},{"location":"images/docker-kimai/","title":"kimai","text":""},{"location":"images/docker-kimai/#linuxserverkimai","title":"linuxserver/kimai","text":"

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:

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 & filtering, money and time budgets, advanced reporting, support for plugins and so much more.

"},{"location":"images/docker-kimai/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/kimai:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> 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":"

You have to replace the following values with your defaults:

DATABASE_URL=mysql://your_db_user:your_db_pass@your_db_host:3306/your_db_name?charset=your_db_charset&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
"},{"location":"images/docker-kimai/#initial-setup","title":"Initial setup","text":"

Access the web gui at http://<your-ip>:80, for more information check out Kimai Initial setup.

"},{"location":"images/docker-kimai/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-kimai/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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&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
"},{"location":"images/docker-kimai/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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&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
"},{"location":"images/docker-kimai/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-kimai/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-kimai/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. DATABASE_URL=mysql://your_db_user:your_db_pass@your_db_host:3306/your_db_name?charset=your_db_charset&serverVersion=your_db_version Configure your database connection, see Application Setup instructions."},{"location":"images/docker-kimai/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-kimai/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-kimai/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-kimai/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-kimai/#support-info","title":"Support Info","text":""},{"location":"images/docker-kimai/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-kimai/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-kimai/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-kimai/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-kimai/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-kimai/#versions","title":"Versions","text":""},{"location":"images/docker-krita/","title":"krita","text":""},{"location":"images/docker-krita/#linuxserverkrita","title":"linuxserver/krita","text":"

Krita is a professional FREE and open source painting program. It is made by artists that want to see affordable art tools for everyone.

"},{"location":"images/docker-krita/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/krita:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-krita/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-krita/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-krita/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-krita/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-krita/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-krita/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-krita/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-krita/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Krita desktop gui. 3001 Krita desktop gui HTTPS."},{"location":"images/docker-krita/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-krita/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-krita/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-krita/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-krita/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-krita/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-krita/#support-info","title":"Support Info","text":""},{"location":"images/docker-krita/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-krita/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-krita/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-krita/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-krita/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-krita/#versions","title":"Versions","text":""},{"location":"images/docker-lazylibrarian/","title":"lazylibrarian","text":""},{"location":"images/docker-lazylibrarian/#linuxserverlazylibrarian","title":"linuxserver/lazylibrarian","text":"

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.

"},{"location":"images/docker-lazylibrarian/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/lazylibrarian:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-lazylibrarian/#application-setup","title":"Application Setup","text":"

Access the webui at http://<your-ip>:5299/home, for more information check out Lazylibrarian.

"},{"location":"images/docker-lazylibrarian/#calibredb-import","title":"Calibredb import","text":"

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 /usr/bin/calibredb

"},{"location":"images/docker-lazylibrarian/#ffmpeg","title":"ffmpeg","text":"

By adding linuxserver/mods:lazylibrarian-ffmpeg to your DOCKER_MODS 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 > Processing > External Programs by setting the ffmpeg path to ffmpeg.

"},{"location":"images/docker-lazylibrarian/#media-folders","title":"Media folders","text":"

We have set /books 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.

Use the optional path if you dont understand, or dont want hardlinks/atomic moves.

The folks over at servarr.com wrote a good write-up on how to get started with this.

"},{"location":"images/docker-lazylibrarian/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-lazylibrarian/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-lazylibrarian/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-lazylibrarian/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-lazylibrarian/#ports-p","title":"Ports (-p)","text":"Parameter Function 5299 The port for the LazyLibrarian webinterface"},{"location":"images/docker-lazylibrarian/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. DOCKER_MODS=linuxserver/mods:universal-calibre|linuxserver/mods:lazylibrarian-ffmpeg 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 (-v)","text":"Volume Function /config LazyLibrarian config /downloads Download location /books 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-lazylibrarian/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-lazylibrarian/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-lazylibrarian/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-lazylibrarian/#support-info","title":"Support Info","text":""},{"location":"images/docker-lazylibrarian/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-lazylibrarian/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-lazylibrarian/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-lazylibrarian/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-lazylibrarian/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-lazylibrarian/#versions","title":"Versions","text":""},{"location":"images/docker-ldap-auth/","title":"ldap-auth","text":""},{"location":"images/docker-ldap-auth/#linuxserverldap-auth","title":"linuxserver/ldap-auth","text":"

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).

"},{"location":"images/docker-ldap-auth/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/ldap-auth:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-ldap-auth/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-ldap-auth/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-ldap-auth/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-ldap-auth/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-ldap-auth/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-ldap-auth/#ports-p","title":"Ports (-p)","text":"Parameter Function 8888 the port for ldap auth daemon 9000 the port for ldap login page"},{"location":"images/docker-ldap-auth/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function FERNETKEY= Optionally define a custom valid fernet key (only needed if container is frequently recreated, or if using multi-node setups, invalidating previous authentications) CERTFILE= Optionally point this to a certificate file to enable HTTP over SSL (HTTPS) for the ldap auth daemon KEYFILE= 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 (-v)","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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-ldap-auth/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-ldap-auth/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-ldap-auth/#support-info","title":"Support Info","text":""},{"location":"images/docker-ldap-auth/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-ldap-auth/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-ldap-auth/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-ldap-auth/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-ldap-auth/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-ldap-auth/#versions","title":"Versions","text":""},{"location":"images/docker-libreoffice/","title":"libreoffice","text":""},{"location":"images/docker-libreoffice/#linuxserverlibreoffice","title":"linuxserver/libreoffice","text":"

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.

"},{"location":"images/docker-libreoffice/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/libreoffice:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-libreoffice/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-libreoffice/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

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.

"},{"location":"images/docker-libreoffice/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-libreoffice/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-libreoffice/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-libreoffice/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-libreoffice/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 LibreOffice desktop gui. 3001 LibreOffice desktop gui HTTPS."},{"location":"images/docker-libreoffice/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-libreoffice/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and documents"},{"location":"images/docker-libreoffice/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-libreoffice/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-libreoffice/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-libreoffice/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-libreoffice/#support-info","title":"Support Info","text":""},{"location":"images/docker-libreoffice/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-libreoffice/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-libreoffice/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-libreoffice/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-libreoffice/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-libreoffice/#versions","title":"Versions","text":""},{"location":"images/docker-librespeed/","title":"librespeed","text":""},{"location":"images/docker-librespeed/#linuxserverlibrespeed","title":"linuxserver/librespeed","text":"

Librespeed is a very lightweight Speedtest implemented in Javascript, using XMLHttpRequest and Web Workers.

No Flash, No Java, No Websocket, No Bullshit.

"},{"location":"images/docker-librespeed/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/librespeed:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-librespeed/#application-setup","title":"Application Setup","text":"

Access the speedtest webui at http://SERVERIP. The results database can be accessed at http://SERVERIP/results/stats.php with the password set. The default template used is based on example-singleServer-full.html. However, all templates are provided for reference at /config/www/. Feel free to customize /config/www/index.html as you like. Delete the file and restart to go back to the image default.

You can optionally place customized speedtest.js and speedtest_worker.js files under /config/www 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.

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

To enable a custom results page set the environment variable CUSTOM_RESULTS=true and start (or restart) the container at least once for /config/www/results/index.php to be created and modify this file to your liking.

"},{"location":"images/docker-librespeed/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-librespeed/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-librespeed/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-librespeed/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-librespeed/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 web gui"},{"location":"images/docker-librespeed/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PASSWORD=PASSWORD Set the password for the results database. CUSTOM_RESULTS=false (optional) set to true to enable custom results page in /config/www/results/index.php. DB_TYPE=sqlite Defaults to sqlite, can also be set to mysql or postgresql. DB_NAME=DB_NAME Database name. Required for mysql and pgsql. DB_HOSTNAME=DB_HOSTNAME Database address. Required for mysql and pgsql. DB_USERNAME=DB_USERNAME Database username. Required for mysql and pgsql. DB_PASSWORD=DB_PASSWORD Database password. Required for mysql and pgsql. DB_PORT=DB_PORT Database port. Required for mysql. IPINFO_APIKEY=ACCESS_TOKEN Access token from ipinfo.io. Required for detailed IP information."},{"location":"images/docker-librespeed/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-librespeed/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-librespeed/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-librespeed/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-librespeed/#support-info","title":"Support Info","text":""},{"location":"images/docker-librespeed/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-librespeed/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-librespeed/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-librespeed/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-librespeed/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-librespeed/#versions","title":"Versions","text":""},{"location":"images/docker-lidarr/","title":"lidarr","text":""},{"location":"images/docker-lidarr/#linuxserverlidarr","title":"linuxserver/lidarr","text":"

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.

"},{"location":"images/docker-lidarr/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/lidarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-lidarr/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Access the webui at <your-ip>:8686, for more information check out Lidarr.

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.

Another item to keep in mind, is that within Lidarr itself, you should then map your download client folder to your Lidarr folder: Settings -> Download Client -> advanced -> 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.

"},{"location":"images/docker-lidarr/#media-folders","title":"Media folders","text":"

We have set /music and /downloads 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.

Use the optional paths if you don't understand, or don't want hardlinks/atomic moves.

The folks over at servarr.com wrote a good write-up on how to get started with this.

"},{"location":"images/docker-lidarr/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-lidarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-lidarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-lidarr/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-lidarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 8686 Application WebUI"},{"location":"images/docker-lidarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-lidarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files for Lidarr. /music Music files (See note in Application setup). /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-lidarr/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-lidarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-lidarr/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-lidarr/#support-info","title":"Support Info","text":""},{"location":"images/docker-lidarr/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-lidarr/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-lidarr/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-lidarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-lidarr/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-lidarr/#versions","title":"Versions","text":""},{"location":"images/docker-limnoria/","title":"limnoria","text":""},{"location":"images/docker-limnoria/#linuxserverlimnoria","title":"linuxserver/limnoria","text":"

Limnoria A robust, full-featured, and user/programmer-friendly Python IRC bot, with many existing plugins. Successor of the well-known Supybot.

"},{"location":"images/docker-limnoria/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/limnoria:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-limnoria/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-limnoria/#new-configuration","title":"New Configuration","text":"

If you do not have an existing config you will need to start the container and then run the following wizard command:

docker exec -it -w /config -u abc limnoria limnoria-wizard

"},{"location":"images/docker-limnoria/#existing-configuration","title":"Existing Configuration","text":"

If you have an existing config, adjust the directory settings in your conf file as follows:

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

NOTE: These are not grouped together in the file. You will need to search your conf file for the variables.

Then place your conf file and any of your existing directories in /config and start up the container.

"},{"location":"images/docker-limnoria/#plugin-requirements","title":"Plugin Requirements","text":"

The container will pip install any requirements.txt it finds in the /config/plugins folder on startup.

If you install a plugin using the PluginDownloader that includes a requirements.txt you can execute a shell into the container and then use pip install /config/plugins/ThePlugin/requirements.txt or restart the container and the requirements will be installed.

"},{"location":"images/docker-limnoria/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-limnoria/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-limnoria/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-limnoria/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-limnoria/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Port for Limnoria's web interface."},{"location":"images/docker-limnoria/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-limnoria/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-limnoria/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-limnoria/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-limnoria/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-limnoria/#support-info","title":"Support Info","text":""},{"location":"images/docker-limnoria/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-limnoria/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-limnoria/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-limnoria/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-limnoria/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-limnoria/#versions","title":"Versions","text":""},{"location":"images/docker-lollypop/","title":"lollypop","text":""},{"location":"images/docker-lollypop/#linuxserverlollypop","title":"linuxserver/lollypop","text":"

Lollypop is a lightweight modern music player designed to work excellently on the GNOME desktop environment.

"},{"location":"images/docker-lollypop/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/lollypop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-lollypop/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-lollypop/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-lollypop/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-lollypop/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-lollypop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-lollypop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-lollypop/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-lollypop/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Lollypop desktop gui. 3001 Lollypop desktop gui HTTPS."},{"location":"images/docker-lollypop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-lollypop/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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 --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-lollypop/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-lollypop/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-lollypop/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-lollypop/#support-info","title":"Support Info","text":""},{"location":"images/docker-lollypop/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-lollypop/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-lollypop/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-lollypop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-lollypop/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-lollypop/#versions","title":"Versions","text":""},{"location":"images/docker-lychee/","title":"lychee","text":""},{"location":"images/docker-lychee/#linuxserverlychee","title":"linuxserver/lychee","text":"

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.\"

"},{"location":"images/docker-lychee/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/lychee:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-lychee/#application-setup","title":"Application Setup","text":"

This image will not work with a prefilled /pictures mount, Lychee wants total control over this folder

Setup account via the webui, accessible at http://SERVERIP:PORT

More info at lychee.

"},{"location":"images/docker-lychee/#customization","title":"Customization","text":"

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.

"},{"location":"images/docker-lychee/#increasing-upload-limit","title":"Increasing Upload Limit","text":"

The upload limit is defined in the user.ini file located in the config directory (/config). You can increase this limit by modifying the following values:

post_max_size = 500M\nupload_max_filesize = 500M\n

After making these changes, you'll need to restart the Docker container for the changes to take effect.

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.

"},{"location":"images/docker-lychee/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-lychee/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-lychee/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-lychee/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-lychee/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui"},{"location":"images/docker-lychee/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. DB_CONNECTION= DB type, from sqlite, mysql, pqsql. DB_HOST= DB server hostname. For mysql and pgsql only. DB_PORT= DB server port. For mysql and pgsql only. DB_USERNAME= DB user. For mysql and pgsql only. DB_PASSWORD= DB password. For mysql and pgsql only. DB_DATABASE= Path to DB file for sqlite. DB name for mysql and pgsql. APP_NAME=Lychee The gallery name. APP_URL= The URL you will use to access Lychee including protocol, and port where appropriate. TRUSTED_PROXIES= Set to the IP or netmask covering your reverse proxy, if running behind one. Set to * to trust all IPs (do not use * if exposed to the internet`)."},{"location":"images/docker-lychee/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files. /pictures 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-lychee/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-lychee/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-lychee/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-lychee/#support-info","title":"Support Info","text":""},{"location":"images/docker-lychee/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-lychee/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-lychee/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-lychee/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-lychee/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-lychee/#versions","title":"Versions","text":""},{"location":"images/docker-mariadb/","title":"mariadb","text":""},{"location":"images/docker-mariadb/#linuxservermariadb","title":"linuxserver/mariadb","text":"

Mariadb is one of the most popular database servers. Made by the original developers of MySQL.

"},{"location":"images/docker-mariadb/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/mariadb:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-mariadb/#application-setup","title":"Application Setup","text":"

If you didn't set a password during installation, (see logs for warning) use mariadb-admin -u root -p<PASSWORD> to set one at the docker prompt...

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.

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.

Unraid users, it is advisable to edit the template/webui after setup and remove reference to this variable.

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

"},{"location":"images/docker-mariadb/#loading-passwords-and-users-from-files","title":"Loading passwords and users from files","text":"

The MYSQL_ROOT_PASSWORD MYSQL_DATABASE MYSQL_USER MYSQL_PASSWORD REMOTE_SQL env values can be set in a file:

/config/env\n

Using the following format:

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

These settings can be mixed and matched with Docker ENV settings as you require, but the settings in the file will always take precedence.

"},{"location":"images/docker-mariadb/#bootstrapping-a-new-instance","title":"Bootstrapping a new instance","text":"

We support a one time run of custom sql files on init. In order to use this place *.sql files in:

/config/initdb.d/\n
This will have the same effect as setting the REMOTE_SQL environment variable. The sql will only be run on the containers first boot and setup.

"},{"location":"images/docker-mariadb/#check-and-repair","title":"Check and Repair","text":"

If user databases are not in a healthy state (sometimes caused by a failed upgrade), it may be remedied by running:

mariadb-check -u root -p<PASSWORD> -c -A # check all databases for errors\nmariadb-check -u root -p<PASSWORD> -r -A # repair all databases\nmariadb-check -u root -p<PASSWORD> -a -A # analyze all databases\nmariadb-check -u root -p<PASSWORD> -o -A # optimize all databases\n

After running the above commands, you may need to run the upgrade command again.

"},{"location":"images/docker-mariadb/#upgrading","title":"Upgrading","text":"

When this container initializes, if MYSQL_ROOT_PASSWORD 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:

mariadb-upgrade -u root -p<PASSWORD>\n
"},{"location":"images/docker-mariadb/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-mariadb/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-mariadb/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-mariadb/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-mariadb/#ports-p","title":"Ports (-p)","text":"Parameter Function 3306 Mariadb listens on this port."},{"location":"images/docker-mariadb/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD Set this to root password for installation (minimum 4 characters & non-alphanumeric passwords must be properly escaped). MYSQL_DATABASE=USER_DB_NAME Specify the name of a database to be created on image startup. MYSQL_USER=MYSQL_USER This user will have superuser access to the database specified by MYSQL_DATABASE (do not use root here). MYSQL_PASSWORD=DATABASE_PASSWORD Set this to the password you want to use for you MYSQL_USER (minimum 4 characters & non-alphanumeric passwords must be properly escaped). REMOTE_SQL=http://URL1/your.sql,https://URL2/your.sql Set this to ingest sql files from an http/https endpoint (comma seperated array)."},{"location":"images/docker-mariadb/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-mariadb/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-mariadb/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-mariadb/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-mariadb/#support-info","title":"Support Info","text":""},{"location":"images/docker-mariadb/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-mariadb/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-mariadb/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-mariadb/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-mariadb/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-mariadb/#versions","title":"Versions","text":""},{"location":"images/docker-mastodon/","title":"mastodon","text":""},{"location":"images/docker-mastodon/#linuxservermastodon","title":"linuxserver/mastodon","text":"

Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones..

"},{"location":"images/docker-mastodon/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/mastodon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-mastodon/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

We provide aliases for the common commands that execute in the correct context so that environment variables from secrets are available to them:

Both of the secret generation aliases above can be run without any other setup having been carried out.

Using tootctl requires you to complete the initial Mastodon configuration first.

This container requires separate postgres and redis instances to run.

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.

For more information check out the mastodon documentation.

"},{"location":"images/docker-mastodon/#running-separate-sidekiq-instances","title":"Running separate sidekiq instances","text":"

It is currently only supported to run a single queue per container instance or all queues in a single container instance.

All containers must share the same /config mount and be on a common docker network.

"},{"location":"images/docker-mastodon/#no_chown-option","title":"NO_CHOWN Option","text":"

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 NO_CHOWN to true to skip that step of the init.

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.

"},{"location":"images/docker-mastodon/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

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.

"},{"location":"images/docker-mastodon/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-mastodon/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-mastodon/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-mastodon/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-mastodon/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Port for web frontend 443 Port for web frontend"},{"location":"images/docker-mastodon/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. LOCAL_DOMAIN=example.com This is the unique identifier of your server in the network. It cannot be safely changed later. REDIS_HOST=redis Redis server hostname REDIS_PORT=6379 Redis port DB_HOST=db Postgres database hostname DB_USER=mastodon Postgres username DB_NAME=mastodon Postgres db name DB_PASS=mastodon Postgres password DB_PORT=5432 Portgres port ES_ENABLED=false Enable or disable Elasticsearch (requires a separate ES instance) SECRET_KEY_BASE= Browser session secret. Changing it will break all active browser sessions. OTP_SECRET= MFA secret. Changing it after initial setup will break two-factor authentication. VAPID_PRIVATE_KEY= Push notification private key. Changing it after initial setup will break push notifications. VAPID_PUBLIC_KEY= Push notification public key. Changing it after initial setup will break push notifications. SMTP_SERVER=mail.example.com SMTP server for email notifications SMTP_PORT=25 SMTP server port SMTP_LOGIN= SMTP username SMTP_PASSWORD= SMTP password SMTP_FROM_ADDRESS=notifications@example.com From address for emails send from Mastodon S3_ENABLED=false Enable or disable S3 storage of uploaded files WEB_DOMAIN=mastodon.example.com 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 ES_HOST=es Elasticsearch server hostname ES_PORT=9200 Elasticsearch port ES_USER=elastic Elasticsearch username ES_PASS=elastic Elasticsearch password S3_BUCKET= S3 bucket hostname AWS_ACCESS_KEY_ID= S3 bucket access key ID AWS_SECRET_ACCESS_KEY= S3 bucket secret access key S3_ALIAS_HOST= Alternate hostname for object fetching if you are front the S3 connections. SIDEKIQ_ONLY=false Only run the sidekiq service in this container instance. For large scale instances that need better queue handling. SIDEKIQ_QUEUE= The name of the sidekiq queue to run in this container. See notes. SIDEKIQ_DEFAULT=false Set to true on the main container if you're running additional sidekiq instances. It will run the default queue. SIDEKIQ_THREADS=5 The number of threads for sidekiq to use. See notes. DB_POOL=5 The size of the DB connection pool, must be at least the same as SIDEKIQ_THREADS. See notes. NO_CHOWN= Set to true to skip chown of /config on init. READ THE APPLICATION NOTES BEFORE SETTING THIS."},{"location":"images/docker-mastodon/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-mastodon/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-mastodon/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-mastodon/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-mastodon/#support-info","title":"Support Info","text":""},{"location":"images/docker-mastodon/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-mastodon/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-mastodon/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-mastodon/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-mastodon/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-mastodon/#versions","title":"Versions","text":""},{"location":"images/docker-mediaelch/","title":"mediaelch","text":""},{"location":"images/docker-mediaelch/#linuxservermediaelch","title":"linuxserver/mediaelch","text":"

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.

"},{"location":"images/docker-mediaelch/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/mediaelch:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-mediaelch/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-mediaelch/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-mediaelch/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-mediaelch/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-mediaelch/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-mediaelch/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-mediaelch/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-mediaelch/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 MediaElch desktop gui. 3001 MediaElch desktop gui HTTPS."},{"location":"images/docker-mediaelch/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-mediaelch/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and files."},{"location":"images/docker-mediaelch/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-mediaelch/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-mediaelch/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-mediaelch/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-mediaelch/#support-info","title":"Support Info","text":""},{"location":"images/docker-mediaelch/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-mediaelch/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-mediaelch/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-mediaelch/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-mediaelch/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-mediaelch/#versions","title":"Versions","text":""},{"location":"images/docker-medusa/","title":"medusa","text":""},{"location":"images/docker-medusa/#linuxservermedusa","title":"linuxserver/medusa","text":"

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.

"},{"location":"images/docker-medusa/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/medusa:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-medusa/#application-setup","title":"Application Setup","text":"

Web interface is at <your ip>:8081.

Set paths for downloads, tv-shows to match docker mappings via the webui, for more information check out Medusa.

"},{"location":"images/docker-medusa/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-medusa/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-medusa/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-medusa/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-medusa/#ports-p","title":"Ports (-p)","text":"Parameter Function 8081 The port for the Medusa webui"},{"location":"images/docker-medusa/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-medusa/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /downloads Download location /tv 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-medusa/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-medusa/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-medusa/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-medusa/#support-info","title":"Support Info","text":""},{"location":"images/docker-medusa/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-medusa/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-medusa/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-medusa/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-medusa/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-medusa/#versions","title":"Versions","text":""},{"location":"images/docker-minetest/","title":"minetest","text":""},{"location":"images/docker-minetest/#linuxserverminetest","title":"linuxserver/minetest","text":"

Minetest (server) is a near-infinite-world block sandbox game and a game engine, inspired by InfiniMiner, Minecraft, and the like.

"},{"location":"images/docker-minetest/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/minetest:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-minetest/#application-setup","title":"Application Setup","text":"

You can find the world maps, mods folder and config files in /config/.minetest.

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

Client and server must be the same version, please browse the tags here to pull the appropriate version for your server:

https://hub.docker.com/r/linuxserver/minetest/tags

"},{"location":"images/docker-minetest/#bundled-games","title":"Bundled Games","text":"

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 /config/.minetest/games/minetest

"},{"location":"images/docker-minetest/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-minetest/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-minetest/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-minetest/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-minetest/#ports-p","title":"Ports (-p)","text":"Parameter Function 30000/udp Port Minetest listens on."},{"location":"images/docker-minetest/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. CLI_ARGS=--gameid minetest --port 30000 Optionally specify any CLI variables you want to launch the app with"},{"location":"images/docker-minetest/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config/.minetest 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-minetest/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-minetest/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-minetest/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-minetest/#support-info","title":"Support Info","text":""},{"location":"images/docker-minetest/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-minetest/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-minetest/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-minetest/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-minetest/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-minetest/#versions","title":"Versions","text":""},{"location":"images/docker-minisatip/","title":"minisatip","text":""},{"location":"images/docker-minisatip/#linuxserverminisatip","title":"linuxserver/minisatip","text":"

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.

"},{"location":"images/docker-minisatip/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/minisatip:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-minisatip/#application-setup","title":"Application Setup","text":"

Best used in conjunction with tvheadend

There is no setup per se, other than adding your cards for passthrough.

You can then use your cards as DVB inputs in apps such as tvheadend.

"},{"location":"images/docker-minisatip/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-minisatip/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-minisatip/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-minisatip/#additional-runtime-parameters","title":"Additional runtime parameters","text":"

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.

"},{"location":"images/docker-minisatip/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-minisatip/#ports-p","title":"Ports (-p)","text":"Parameter Function 8875 Status Page WebUI 554 RTSP Port 1900/udp App Discovery"},{"location":"images/docker-minisatip/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. RUN_OPTS= Specify specific run params for minisatip"},{"location":"images/docker-minisatip/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Configuration files and minisatip data"},{"location":"images/docker-minisatip/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/dvb 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-minisatip/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-minisatip/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-minisatip/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-minisatip/#support-info","title":"Support Info","text":""},{"location":"images/docker-minisatip/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-minisatip/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-minisatip/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-minisatip/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-minisatip/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-minisatip/#versions","title":"Versions","text":""},{"location":"images/docker-monica/","title":"monica","text":""},{"location":"images/docker-monica/#linuxservermonica","title":"linuxserver/monica","text":"

Monica is an open source personal relationship management system, that lets you document your life.

"},{"location":"images/docker-monica/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/monica:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-monica/#application-setup","title":"Application Setup","text":"

Setup account via the webui, accessible at http://SERVERIP:PORT

For more info see the Monica documentation.

"},{"location":"images/docker-monica/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-monica/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-monica/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-monica/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-monica/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http gui 443 https gui"},{"location":"images/docker-monica/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. DB_HOST= Mariadb DB server hostname. DB_PORT= Mariadb DB server port. DB_USERNAME= Mariadb DB user. DB_PASSWORD= Mariadb DB password. DB_DATABASE= Mariadb DB name. APP_URL=http://localhost:80 The URL you will use to access Monica including protocol, and port where appropriate. TRUSTED_PROXIES= Set to the IP or netmask covering your reverse proxy, if running behind one. Set to * to trust all IPs (do not use * if exposed to the internet`). APP_ENV=local Set to production when exposing the container to anyone else; this also makes https mandatory. APP_DISABLE_SIGNUP=true Set to false to enable new account sign-ups."},{"location":"images/docker-monica/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-monica/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-monica/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-monica/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-monica/#support-info","title":"Support Info","text":""},{"location":"images/docker-monica/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-monica/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-monica/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-monica/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-monica/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-monica/#versions","title":"Versions","text":""},{"location":"images/docker-mstream/","title":"mstream","text":""},{"location":"images/docker-mstream/#linuxservermstream","title":"linuxserver/mstream","text":"

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":"images/docker-mstream/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/mstream:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-mstream/#application-setup","title":"Application Setup","text":"

Access the webui at http://<your-ip>:3000

Settings are adjusted through the web ui or via editing of config.json. For more information check out Mstream.

"},{"location":"images/docker-mstream/#important-notice","title":"IMPORTANT NOTICE:","text":"

mStream v5 no longer accepts cli arguments for setting the user and password and requires the use of config.json. Therefore, the environment variables USER, PASSWORD and USE_JSON are deprecated.

v4's config.json is not compatible with v5. Existing config.json will be renamed to config.json.v4-bak for your reference and a new default config.json will be created upon upgrade from v4 to v5.

"},{"location":"images/docker-mstream/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-mstream/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-mstream/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-mstream/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-mstream/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 The port for the mStream webinterface"},{"location":"images/docker-mstream/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-mstream/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config mStream config /music 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-mstream/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-mstream/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-mstream/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-mstream/#support-info","title":"Support Info","text":""},{"location":"images/docker-mstream/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-mstream/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-mstream/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-mstream/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-mstream/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-mstream/#versions","title":"Versions","text":""},{"location":"images/docker-mullvad-browser/","title":"mullvad-browser","text":""},{"location":"images/docker-mullvad-browser/#linuxservermullvad-browser","title":"linuxserver/mullvad-browser","text":"

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.

"},{"location":"images/docker-mullvad-browser/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/mullvad-browser:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-mullvad-browser/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-mullvad-browser/#vpn-connectivity","title":"VPN Connectivity","text":"

Generate a Wireguard conf from your VPN provider and copy it into the /config mount with a name of wg0.conf. 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.

"},{"location":"images/docker-mullvad-browser/#maintaining-local-access-to-attached-services","title":"Maintaining local access to attached services","text":"

When routing traffic via Wireguard you will typically lose access to the webUI. For simple LAN environments you can set the LOCAL_NET environment variable and we will configure routing for you.

If you have more complex network setup, you will need to manually exclude your local networks from being routed via Wireguard by modifying your wg0.conf like so, modifying the HOMENET subnets to match your LAN range(s):

[Interface]\nPrivateKey = <private key>\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
"},{"location":"images/docker-mullvad-browser/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-mullvad-browser/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-mullvad-browser/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-mullvad-browser/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-mullvad-browser/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-mullvad-browser/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-mullvad-browser/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Mullvad Browser GUI. 3001 Mullvad Browser GUI HTTPS."},{"location":"images/docker-mullvad-browser/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. LOCAL_NET=192.168.0.0/16 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 (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-mullvad-browser/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= This is needed for any modern website to function like youtube. --security-opt seccomp=unconfined 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":"

Warning

This image utilises cap_add or sysctl to work properly. This is not implemented properly in some versions of Portainer, thus this image may not work if deployed through Portainer.

"},{"location":"images/docker-mullvad-browser/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-mullvad-browser/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-mullvad-browser/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-mullvad-browser/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-mullvad-browser/#support-info","title":"Support Info","text":""},{"location":"images/docker-mullvad-browser/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-mullvad-browser/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-mullvad-browser/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-mullvad-browser/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-mullvad-browser/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-mullvad-browser/#versions","title":"Versions","text":""},{"location":"images/docker-mylar3/","title":"mylar3","text":""},{"location":"images/docker-mylar3/#linuxservermylar3","title":"linuxserver/mylar3","text":"

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.

"},{"location":"images/docker-mylar3/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/mylar3:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-mylar3/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable Mylar3 releases nightly \u2705 Commits to Mylar3 python3-dev branch"},{"location":"images/docker-mylar3/#application-setup","title":"Application Setup","text":"

The web ui for settings etc, is on http://SERVERIP:8090 For more detailed setup options, refer to Mylar3.

"},{"location":"images/docker-mylar3/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-mylar3/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-mylar3/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-mylar3/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-mylar3/#ports-p","title":"Ports (-p)","text":"Parameter Function 8090 WebUI"},{"location":"images/docker-mylar3/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-mylar3/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /comics Map to your comics folder. /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-mylar3/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-mylar3/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-mylar3/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-mylar3/#support-info","title":"Support Info","text":""},{"location":"images/docker-mylar3/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-mylar3/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-mylar3/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-mylar3/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-mylar3/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-mylar3/#versions","title":"Versions","text":""},{"location":"images/docker-mysql-workbench/","title":"mysql-workbench","text":""},{"location":"images/docker-mysql-workbench/#linuxservermysql-workbench","title":"linuxserver/mysql-workbench","text":"

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.

"},{"location":"images/docker-mysql-workbench/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/mysql-workbench:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-mysql-workbench/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-mysql-workbench/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-mysql-workbench/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-mysql-workbench/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-mysql-workbench/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-mysql-workbench/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-mysql-workbench/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-mysql-workbench/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Mysql Workbench desktop gui. 3001 Mysql Workbench desktop gui HTTPS."},{"location":"images/docker-mysql-workbench/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-mysql-workbench/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings."},{"location":"images/docker-mysql-workbench/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --cap-add= Required for keyring functionality"},{"location":"images/docker-mysql-workbench/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-mysql-workbench/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-mysql-workbench/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-mysql-workbench/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-mysql-workbench/#support-info","title":"Support Info","text":""},{"location":"images/docker-mysql-workbench/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-mysql-workbench/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-mysql-workbench/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-mysql-workbench/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-mysql-workbench/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-mysql-workbench/#versions","title":"Versions","text":""},{"location":"images/docker-nano-wallet/","title":"nano-wallet","text":""},{"location":"images/docker-nano-wallet/#linuxservernano-wallet","title":"linuxserver/nano-wallet","text":"

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.

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.

"},{"location":"images/docker-nano-wallet/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/nano-wallet:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u2705 arm32v7-<version tag>"},{"location":"images/docker-nano-wallet/#application-setup","title":"Application Setup","text":"

This container requires a Nano RPC endpoint to communicate with whether a public network or your own, see here for more information.

Simply access the container at the URL:

http://localhost/#/THE_IP_OR_HOSTNAME_OF_RPC_ENDPOINT

"},{"location":"images/docker-nano-wallet/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-nano-wallet/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-nano-wallet/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
docker run -d \\\n  --name=nano-wallet \\\n  -p 80:80 \\\n  --restart unless-stopped \\\n  lscr.io/linuxserver/nano-wallet:latest\n
"},{"location":"images/docker-nano-wallet/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-nano-wallet/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Webserver port"},{"location":"images/docker-nano-wallet/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function"},{"location":"images/docker-nano-wallet/#volume-mappings-v","title":"Volume Mappings (-v)","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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"images/docker-nano-wallet/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-nano-wallet/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-nano-wallet/#support-info","title":"Support Info","text":""},{"location":"images/docker-nano-wallet/#versions","title":"Versions","text":""},{"location":"images/docker-nano/","title":"nano","text":""},{"location":"images/docker-nano/#linuxservernano","title":"linuxserver/nano","text":"

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.

"},{"location":"images/docker-nano/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/nano:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-nano/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

By default this container will launch with a genesis block based on the private key 0000000000000000000000000000000000000000000000000000000000000000, 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:

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

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.

"},{"location":"images/docker-nano/#rpc-proxy-settings","title":"RPC Proxy settings","text":"

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.

The default proxy config is stored in /config/rpc-proxy.json:

{\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

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 process 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.

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.

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

"},{"location":"images/docker-nano/#node-configuration-via-environment","title":"Node configuration via environment","text":"

Before you get started please review the configuration docs here

We will pass the CLI_OPTIONS to the node, here is a run command example:

-e CLI_OPTIONS='--config node.preconfigured_peers=[\"peering.yourhost.com\",\"peering.yourhost2.com\"] \\\n                --config node.enable_voting=true'\n

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.

"},{"location":"images/docker-nano/#quickstart-guide","title":"Quickstart Guide","text":"

Here we are going to cover the bare minimum commands needed to spinup a local payment network and wallet.

First spinup your containers:

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
docker run -d \\\n--name=wallet \\\n-p 80:80 \\\n--restart unless-stopped \\\nlinuxserver/nano-wallet\n
Then unlock the Genesis funds on the local node to allow it to confirm transactions:
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

Here we are using the default private key of 0000000000000000000000000000000000000000000000000000000000000000 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.

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.

"},{"location":"images/docker-nano/#network-design","title":"Network design","text":"

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:

"},{"location":"images/docker-nano/#principle-nodes-and-voting-representatives","title":"Principle nodes and voting representatives","text":"

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.

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.

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.

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.

"},{"location":"images/docker-nano/#network-peers","title":"Network peers","text":"

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.

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 Your Genesis account section:

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

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.

"},{"location":"images/docker-nano/#public-rpc-endpoints","title":"Public RPC endpoints","text":"

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.

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.

"},{"location":"images/docker-nano/#clientside-javascript-wallet","title":"Clientside javascript wallet","text":"

Currently we publish a pure javascript clientside wallet located here:

https://github.com/linuxserver/nano-wallet

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.

"},{"location":"images/docker-nano/#running-a-node-on-the-linuxserver-network","title":"Running a node on the LinuxServer network","text":"

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:

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

"},{"location":"images/docker-nano/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-nano/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-nano/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-nano/#parameters","title":"Parameters","text":"

Docker images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-nano/#ports-p","title":"Ports (-p)","text":"Parameter Function 8075 Nano communication port 3000 RPC interface filtered through a proxy 3001 Https RPC interface filtered through a proxy"},{"location":"images/docker-nano/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Europe/London Specify a timezone to use EG Europe/London PEER_HOST=localhost Default peer host (can be overidden with an array by command line options) LIVE_GENESIS_PUB=GENESIS_PUBLIC Genesis block public key LIVE_GENESIS_ACCOUNT=nano_xxxxxx Genesis block account LIVE_GENESIS_WORK=WORK_FOR_BLOCK Genesis block proof of work LIVE_GENESIS_SIG=BLOCK_SIGNATURE Genesis block signature CLI_OPTIONS=--config node.enable_voting=true Node run command cli args LMDB_BOOTSTRAP_URL=http://example.com/Nano_64_version_20.7z 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 (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__PASSWORD=/run/secrets/mysecretpassword\n

Will set the environment variable PASSWORD based on the contents of the /run/secrets/mysecretpassword file.

"},{"location":"images/docker-nano/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-nano/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id user as below:

  $ id username\n    uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup)\n
"},{"location":"images/docker-nano/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-nano/#support-info","title":"Support Info","text":""},{"location":"images/docker-nano/#versions","title":"Versions","text":""},{"location":"images/docker-netbootxyz/","title":"netbootxyz","text":""},{"location":"images/docker-netbootxyz/#linuxservernetbootxyz","title":"linuxserver/netbootxyz","text":"

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.

"},{"location":"images/docker-netbootxyz/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/netbootxyz:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-netbootxyz/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

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.

"},{"location":"images/docker-netbootxyz/#router-setup-examples","title":"Router Setup Examples","text":""},{"location":"images/docker-netbootxyz/#pfsense","title":"PFSense","text":"

Services -> DHCP Server

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- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi

"},{"location":"images/docker-netbootxyz/#opnsense","title":"OPNsense","text":"

Services -> DHCP Server

Under the Advanced \"Network Booting\" section. * check enable * Next server- IP of docker host * Default BIOS file name- netboot.xyz.kpxe * UEFI 32 bit file name- netboot.xyz.efi * UEFI 64 bit file name- netboot.xyz.efi

"},{"location":"images/docker-netbootxyz/#unifi-security-gateway-with-the-controller","title":"Unifi Security Gateway (with the controller)","text":"

Networks -> LAN (or the network you want to boot from) -> ADVANCED DHCP OPTIONS * tick Enable network boot * Server- YOURSERVERIP * Filename- netboot.xyz.kpxe 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.

"},{"location":"images/docker-netbootxyz/#edgeosvyos","title":"EdgeOS/VyOS","text":"

Connect via SSH

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

"},{"location":"images/docker-netbootxyz/#dnsmasqdd-wrtopenwrttomatopihole","title":"Dnsmasq/DD-WRT/OpenWRT/Tomato/PIHOLE","text":"

Various locations to set Additional/Custom DNSMASQ options in UI or config files Set the following lines:

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
Ensure you restart the DNSMASQ service after the changes.

"},{"location":"images/docker-netbootxyz/#microsoft-server-dhcp","title":"Microsoft Server DHCP","text":"

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 netboot.xyz.efi 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.

"},{"location":"images/docker-netbootxyz/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-netbootxyz/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-netbootxyz/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-netbootxyz/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-netbootxyz/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Web configuration interface. 69/udp TFTP Port. 80 NGINX server for hosting assets."},{"location":"images/docker-netbootxyz/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. MENU_VERSION=1.9.9 Specify a specific version of boot files you want to use from NETBOOT.XYZ (unset pulls latest) PORT_RANGE=30000:30010 Specify the port range tftp will use for data transfers (see Wikipedia) SUBFOLDER=/ Specify a sobfolder if running this behind a reverse proxy (IE /proxy/) NGINX_PORT=80 Specify a different internal port for the asset server WEB_APP_PORT=3000 Specify a different internal port for the configuration UI"},{"location":"images/docker-netbootxyz/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Storage for boot menu files and web application config /assets 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-netbootxyz/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-netbootxyz/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-netbootxyz/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-netbootxyz/#support-info","title":"Support Info","text":""},{"location":"images/docker-netbootxyz/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-netbootxyz/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-netbootxyz/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-netbootxyz/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-netbootxyz/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-netbootxyz/#versions","title":"Versions","text":""},{"location":"images/docker-netbox/","title":"netbox","text":""},{"location":"images/docker-netbox/#linuxservernetbox","title":"linuxserver/netbox","text":"

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.

"},{"location":"images/docker-netbox/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/netbox:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-netbox/#application-setup","title":"Application Setup","text":"

Netbox requires a postgres database and a redis instance.

Access the WebUI at :8000. For more information, check out NetBox."},{"location":"images/docker-netbox/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-netbox/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-netbox/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-netbox/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-netbox/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 will map the container's port 8000 to port 8000 on the host"},{"location":"images/docker-netbox/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SUPERUSER_EMAIL= Email address for admin account SUPERUSER_PASSWORD= Password for admin account ALLOWED_HOST= The hostname you will use to access the app (i.e., netbox.example.com) DB_NAME= Database name (default: netbox) DB_USER= Database user DB_PASSWORD= Database password DB_HOST= Database host (default: postgres) DB_PORT= Database port (defaul: 5432) REDIS_HOST= Redis host (default: redis) REDIS_PORT= Redis port number (default: 6379) REDIS_PASSWORD= Redis password (default: none) REDIS_DB_TASK= Redis database ID for tasks (default: 0) REDIS_DB_CACHE= Redis database ID for caching (default: 1) BASE_PATH= The path you will use to access the app (i.e., /netbox, optional, default: none) REMOTE_AUTH_ENABLED= Enable remote authentication (optional, default: False) REMOTE_AUTH_BACKEND= Python path to the custom Django authentication backend to use for external user authentication (optional, default: netbox.authentication.RemoteUserBackend) REMOTE_AUTH_HEADER= Name of the HTTP header which informs NetBox of the currently authenticated user. (optional, default: HTTP_REMOTE_USER) REMOTE_AUTH_AUTO_CREATE_USER= If true, NetBox will automatically create local accounts for users authenticated via a remote service (optional, default: False) REMOTE_AUTH_DEFAULT_GROUPS= The list of groups to assign a new user account when created using remote authentication (optional, default: []) REMOTE_AUTH_DEFAULT_PERMISSIONS= 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 (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-netbox/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-netbox/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-netbox/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-netbox/#support-info","title":"Support Info","text":""},{"location":"images/docker-netbox/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-netbox/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-netbox/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-netbox/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-netbox/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-netbox/#versions","title":"Versions","text":""},{"location":"images/docker-nextcloud/","title":"nextcloud","text":""},{"location":"images/docker-nextcloud/#linuxservernextcloud","title":"linuxserver/nextcloud","text":"

Nextcloud gives you access to all your files wherever you are.

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.

"},{"location":"images/docker-nextcloud/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/nextcloud:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-nextcloud/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Access the webui at https://<your-ip>:443, for more information check out Nextcloud.

Note: occ should be run without prepending with sudo -u abc php or sudo -u www-data php ie; docker exec -it nextcloud occ maintenance:mode --off

"},{"location":"images/docker-nextcloud/#updating-nextcloud","title":"Updating Nextcloud","text":"

Updating Nextcloud is done by pulling the new image, and recreating the container with it.

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.

Since all data is stored in the /config and /data 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.

"},{"location":"images/docker-nextcloud/#collaborative-editing","title":"Collaborative Editing","text":"

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.

If (auto) installed, those built-in packages may cause instability and should be removed.

"},{"location":"images/docker-nextcloud/#custom-app-directories","title":"Custom App Directories","text":"

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:

    volumes:\n      - /path/to/your_custom_apps_folder:/app/www/public/your_custom_apps_folder\n

Afterwards, you can set \"path\" => OC::$SERVERROOT . \"/your_custom_apps_folder\", in your config.php file, per the official documentation.

"},{"location":"images/docker-nextcloud/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

"},{"location":"images/docker-nextcloud/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-nextcloud/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-nextcloud/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-nextcloud/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-nextcloud/#ports-p","title":"Ports (-p)","text":"Parameter Function 443 WebUI"},{"location":"images/docker-nextcloud/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-nextcloud/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-nextcloud/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-nextcloud/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-nextcloud/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-nextcloud/#support-info","title":"Support Info","text":""},{"location":"images/docker-nextcloud/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-nextcloud/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-nextcloud/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-nextcloud/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-nextcloud/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-nextcloud/#versions","title":"Versions","text":""},{"location":"images/docker-nginx/","title":"nginx","text":""},{"location":"images/docker-nginx/#linuxservernginx","title":"linuxserver/nginx","text":"

Nginx is a simple webserver with php support. The config files reside in /config for easy user customization.

"},{"location":"images/docker-nginx/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/nginx:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-nginx/#application-setup","title":"Application Setup","text":"

Add your web files to /config/www for hosting. Modify the nginx, php and site config files under /config as needed Protip: This container is best combined with a sql server, e.g. mariadb

"},{"location":"images/docker-nginx/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-nginx/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-nginx/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-nginx/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-nginx/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 http 443 https"},{"location":"images/docker-nginx/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-nginx/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-nginx/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-nginx/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-nginx/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-nginx/#support-info","title":"Support Info","text":""},{"location":"images/docker-nginx/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-nginx/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-nginx/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-nginx/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-nginx/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-nginx/#versions","title":"Versions","text":""},{"location":"images/docker-ngircd/","title":"ngircd","text":""},{"location":"images/docker-ngircd/#linuxserverngircd","title":"linuxserver/ngircd","text":"

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.

"},{"location":"images/docker-ngircd/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/ngircd:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-ngircd/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-ngircd/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-ngircd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-ngircd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-ngircd/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-ngircd/#ports-p","title":"Ports (-p)","text":"Parameter Function 6667 ngircd port"},{"location":"images/docker-ngircd/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-ngircd/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where ngircd.conf 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-ngircd/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-ngircd/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-ngircd/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-ngircd/#support-info","title":"Support Info","text":""},{"location":"images/docker-ngircd/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-ngircd/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-ngircd/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-ngircd/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-ngircd/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-ngircd/#versions","title":"Versions","text":""},{"location":"images/docker-nzbhydra2/","title":"nzbhydra2","text":""},{"location":"images/docker-nzbhydra2/#linuxservernzbhydra2","title":"linuxserver/nzbhydra2","text":"

Nzbhydra2 is a meta search application for NZB indexers, the \"spiritual successor\" to NZBmegasearcH, and an evolution of the original application NZBHydra.

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 linuxserver/nzbhydra2:v2.10.2-ls49

"},{"location":"images/docker-nzbhydra2/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/nzbhydra2:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-nzbhydra2/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable releases dev \u2705 Prereleases from their GitHub"},{"location":"images/docker-nzbhydra2/#application-setup","title":"Application Setup","text":"

The web interface is at <your ip>:5076 , to set up indexers and connections to your nzb download applications.

"},{"location":"images/docker-nzbhydra2/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-nzbhydra2/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-nzbhydra2/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-nzbhydra2/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-nzbhydra2/#ports-p","title":"Ports (-p)","text":"Parameter Function 5076 WebUI"},{"location":"images/docker-nzbhydra2/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-nzbhydra2/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where nzbhydra2 should store config files. /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-nzbhydra2/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-nzbhydra2/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-nzbhydra2/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-nzbhydra2/#support-info","title":"Support Info","text":""},{"location":"images/docker-nzbhydra2/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-nzbhydra2/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-nzbhydra2/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-nzbhydra2/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-nzbhydra2/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-nzbhydra2/#versions","title":"Versions","text":""},{"location":"images/docker-ombi/","title":"ombi","text":""},{"location":"images/docker-ombi/#linuxserverombi","title":"linuxserver/ombi","text":"

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!

"},{"location":"images/docker-ombi/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/ombi:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-ombi/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable Ombi releases development \u2705 Releases from the develop branch of Ombi"},{"location":"images/docker-ombi/#application-setup","title":"Application Setup","text":"

Access the webui at <your-ip>:3579. Follow the setup wizard on initial install. Then configure the required services.

"},{"location":"images/docker-ombi/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-ombi/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-ombi/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-ombi/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-ombi/#ports-p","title":"Ports (-p)","text":"Parameter Function 3579 web gui"},{"location":"images/docker-ombi/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. BASE_URL=/ombi 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 (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-ombi/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-ombi/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-ombi/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-ombi/#support-info","title":"Support Info","text":""},{"location":"images/docker-ombi/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-ombi/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-ombi/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-ombi/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-ombi/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-ombi/#versions","title":"Versions","text":""},{"location":"images/docker-openssh-server/","title":"openssh-server","text":""},{"location":"images/docker-openssh-server/#linuxserveropenssh-server","title":"linuxserver/openssh-server","text":"

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.

"},{"location":"images/docker-openssh-server/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/openssh-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-openssh-server/#application-setup","title":"Application Setup","text":"

If PUBLIC_KEY or PUBLIC_KEY_FILE, or PUBLIC_KEY_DIR variables are set, the specified keys will automatically be added to authorized_keys. If not, the keys can manually be added to /config/.ssh/authorized_keys and the container should be restarted. Removing PUBLIC_KEY or PUBLIC_KEY_FILE variables from docker run environment variables will not remove the keys from authorized_keys. PUBLIC_KEY_FILE and PUBLIC_KEY_DIR can be used with docker secrets.

We provide the ability to set and allow password based access via the PASSWORD_ACCESS and USER_PASSWORD variables, though we as an organization discourage using password auth for public facing ssh endpoints.

Connect to server via ssh -i /path/to/private/key -p PORT USER_NAME@SERVERIP

Setting SUDO_ACCESS to true by itself will allow passwordless sudo. USER_PASSWORD and USER_PASSWORD_FILE allow setting an optional sudo password.

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.

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.

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.

"},{"location":"images/docker-openssh-server/#tips","title":"TIPS","text":"

You can volume map your own text file to /etc/motd to override the message displayed upon connection. You can optionally set the docker argument hostname

"},{"location":"images/docker-openssh-server/#key-generation","title":"Key Generation","text":"

This container has a helper script to generate an ssh private/public key. In order to generate a key please run:

docker run --rm -it --entrypoint /keygen.sh linuxserver/openssh-server\n

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.

"},{"location":"images/docker-openssh-server/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-openssh-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-openssh-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-openssh-server/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-openssh-server/#ports-p","title":"Ports (-p)","text":"Parameter Function 2222 ssh port"},{"location":"images/docker-openssh-server/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PUBLIC_KEY=yourpublickey Optional ssh public key, which will automatically be added to authorized_keys. PUBLIC_KEY_FILE=/path/to/file Optionally specify a file containing the public key (works with docker secrets). PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys Optionally specify a directory containing the public keys (works with docker secrets). PUBLIC_KEY_URL=https://github.com/username.keys Optionally specify a URL containing the public key. SUDO_ACCESS=false Set to true to allow linuxserver.io, the ssh user, sudo access. Without USER_PASSWORD set, this will allow passwordless sudo access. PASSWORD_ACCESS=false Set to true to allow user/password ssh access. You will want to set USER_PASSWORD or USER_PASSWORD_FILE as well. USER_PASSWORD=password Optionally set a sudo password for linuxserver.io, the ssh user. If this or USER_PASSWORD_FILE are not set but SUDO_ACCESS is set to true, the user will have passwordless sudo access. USER_PASSWORD_FILE=/path/to/file Optionally specify a file that contains the password. This setting supersedes the USER_PASSWORD option (works with docker secrets). USER_NAME=linuxserver.io Optionally specify a user name (Default:linuxserver.io) LOG_STDOUT= Set to true to log to stdout instead of file."},{"location":"images/docker-openssh-server/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files."},{"location":"images/docker-openssh-server/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname= 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-openssh-server/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-openssh-server/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-openssh-server/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-openssh-server/#support-info","title":"Support Info","text":""},{"location":"images/docker-openssh-server/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-openssh-server/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-openssh-server/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-openssh-server/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-openssh-server/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-openssh-server/#versions","title":"Versions","text":""},{"location":"images/docker-openvscode-server/","title":"openvscode-server","text":""},{"location":"images/docker-openvscode-server/#linuxserveropenvscode-server","title":"linuxserver/openvscode-server","text":"

Openvscode-server provides a version of VS Code that runs a server on a remote machine and allows access through a modern web browser.

"},{"location":"images/docker-openvscode-server/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/openvscode-server:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-openvscode-server/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

Tag Available Description latest \u2705 Stable releases insiders \u2705 Insiders releases"},{"location":"images/docker-openvscode-server/#application-setup","title":"Application Setup","text":"

If CONNECTION_TOKEN or CONNECTION_SECRET env vars are set, you can access the webui at http://<your-ip>:3000/?tkn=supersecrettoken (replace supersecrettoken with the value set). If not, you can access the webui at http://<your-ip>:3000.

For github integration, drop your ssh key in to /config/.ssh. Then open a terminal from the top menu and set your github username and email via the following commands

git config --global user.name \"username\"\ngit config --global user.email \"email address\"\n

When reverse proxied through SWAG, custom services running on specific ports inside openvscode-server can be accessed at https://PORT.openvscode-server.domain.com very much like how code-server's port proxy function is handled. For that, a wildcard CNAME *.openvscode-server.domain.com needs to be created and the SWAG cert needs to cover those subdomains.

"},{"location":"images/docker-openvscode-server/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-openvscode-server/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-openvscode-server/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-openvscode-server/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-openvscode-server/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Web UI port."},{"location":"images/docker-openvscode-server/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. CONNECTION_TOKEN= Optional security token for accessing the Web UI (ie. supersecrettoken). CONNECTION_SECRET= Optional path to a file inside the container that contains the security token for accessing the Web UI (ie. /path/to/file). Overrides CONNECTION_TOKEN. SUDO_PASSWORD=password If this optional variable is set, user will have sudo access in the openvscode-server terminal with the specified password. SUDO_PASSWORD_HASH= Optionally set sudo password via hash (takes priority over SUDO_PASSWORD var). Format is $type$salt$hashed."},{"location":"images/docker-openvscode-server/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-openvscode-server/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-openvscode-server/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-openvscode-server/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-openvscode-server/#support-info","title":"Support Info","text":""},{"location":"images/docker-openvscode-server/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-openvscode-server/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-openvscode-server/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-openvscode-server/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-openvscode-server/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-openvscode-server/#versions","title":"Versions","text":""},{"location":"images/docker-opera/","title":"opera","text":""},{"location":"images/docker-opera/#linuxserveropera","title":"linuxserver/opera","text":"

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.

"},{"location":"images/docker-opera/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/opera:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-opera/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-opera/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-opera/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-opera/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-opera/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-opera/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-opera/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-opera/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Opera desktop gui. 3001 HTTPS Opera desktop gui."},{"location":"images/docker-opera/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. OPERA_CLI=https://www.linuxserver.io/ 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 (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-opera/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size= This is required for Opera to launch and function. --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-opera/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-opera/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-opera/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-opera/#support-info","title":"Support Info","text":""},{"location":"images/docker-opera/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-opera/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-opera/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-opera/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-opera/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-opera/#versions","title":"Versions","text":""},{"location":"images/docker-orcaslicer/","title":"orcaslicer","text":""},{"location":"images/docker-orcaslicer/#linuxserverorcaslicer","title":"linuxserver/orcaslicer","text":"

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

"},{"location":"images/docker-orcaslicer/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/orcaslicer:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u274c armhf \u274c"},{"location":"images/docker-orcaslicer/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-orcaslicer/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-orcaslicer/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-orcaslicer/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-orcaslicer/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-orcaslicer/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-orcaslicer/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-orcaslicer/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Orca Slicer desktop gui. 3001 Orca Slicer desktop gui HTTPS."},{"location":"images/docker-orcaslicer/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-orcaslicer/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores program settings and files."},{"location":"images/docker-orcaslicer/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-orcaslicer/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-orcaslicer/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-orcaslicer/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-orcaslicer/#support-info","title":"Support Info","text":""},{"location":"images/docker-orcaslicer/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-orcaslicer/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-orcaslicer/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-orcaslicer/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-orcaslicer/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-orcaslicer/#versions","title":"Versions","text":""},{"location":"images/docker-oscam/","title":"oscam","text":""},{"location":"images/docker-oscam/#linuxserveroscam","title":"linuxserver/oscam","text":"

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.

"},{"location":"images/docker-oscam/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/oscam:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-oscam/#application-setup","title":"Application Setup","text":"

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.

"},{"location":"images/docker-oscam/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-oscam/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-oscam/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-oscam/#passing-through-smart-card-readers","title":"Passing through Smart Card Readers","text":"

If you want to pass through a smart card reader, you need to specify the reader with the --device= 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 dmesg | tail 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.

If there are no /dev/ttyUSBX device in dmesg | tail, you have to use the USB bus path. It will look similar to the below.

/dev/bus/usb/001/001

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 lsusb on the host, then find your USB device in the list and note the Bus and Device numbers.

Here is an example of how to find the Bus and Device. The output of the lsusb command is below.

Bus 002 Device 005: ID 076b:6622 OmniKey AG CardMan 6121

The first number, the Bus, is 002. The second number, the Device, is 005. This will look like below in the --device= tag.

--device=/dev/bus/usb/002/005

If you have multiple smart card readers, you add one --device= tag for each reader.

"},{"location":"images/docker-oscam/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-oscam/#ports-p","title":"Ports (-p)","text":"Parameter Function 8888 WebUI"},{"location":"images/docker-oscam/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-oscam/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Where oscam should store config files and logs."},{"location":"images/docker-oscam/#device-mappings-device","title":"Device Mappings (--device)","text":"Parameter Function /dev/ttyUSB0 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-oscam/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-oscam/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-oscam/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-oscam/#support-info","title":"Support Info","text":""},{"location":"images/docker-oscam/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-oscam/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-oscam/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-oscam/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-oscam/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-oscam/#versions","title":"Versions","text":""},{"location":"images/docker-overseerr/","title":"overseerr","text":""},{"location":"images/docker-overseerr/#linuxserveroverseerr","title":"linuxserver/overseerr","text":"

Overseerr is a request management and media discovery tool built to work with your existing Plex ecosystem.

"},{"location":"images/docker-overseerr/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/overseerr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-overseerr/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Access the webui at <your-ip>:5055, for more information check out Overseerr.

"},{"location":"images/docker-overseerr/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-overseerr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-overseerr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-overseerr/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-overseerr/#ports-p","title":"Ports (-p)","text":"Parameter Function 5055 Port for Overseerr's web interface."},{"location":"images/docker-overseerr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-overseerr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-overseerr/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-overseerr/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-overseerr/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-overseerr/#support-info","title":"Support Info","text":""},{"location":"images/docker-overseerr/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-overseerr/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-overseerr/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-overseerr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-overseerr/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-overseerr/#versions","title":"Versions","text":""},{"location":"images/docker-pairdrop/","title":"pairdrop","text":""},{"location":"images/docker-pairdrop/#linuxserverpairdrop","title":"linuxserver/pairdrop","text":"

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.

"},{"location":"images/docker-pairdrop/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pairdrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-pairdrop/#application-setup","title":"Application Setup","text":"

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 X-Forwarded-For header is being set correctly, otherwise all clients will be mutually visible.

Most proxies will set this header automatically but may require additional configuration if you are using something like Cloudflare Proxy.

"},{"location":"images/docker-pairdrop/#custom-stunturn-servers","title":"Custom STUN/TURN Servers","text":"

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.

You can use https://raw.githubusercontent.com/schlagmichdoch/PairDrop/master/rtc_config_example.json as a starting point.

"},{"location":"images/docker-pairdrop/#note-on-websocket-fallback","title":"Note on Websocket fallback","text":"

Enabling WS_FALLBACK provides a fallback if the peer to peer WebRTC connection is not available to the client.

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.

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.

"},{"location":"images/docker-pairdrop/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-pairdrop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-pairdrop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-pairdrop/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-pairdrop/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 http gui"},{"location":"images/docker-pairdrop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. RATE_LIMIT=false Set to true to limit clients to 100 requests per 5 min WS_FALLBACK=false Set to true to enable websocket fallback if the peer to peer WebRTC connection is not available to the client (see App Setup notes). RTC_CONFIG= Path to a json file containing custom STUN/TURN config (see App Setup notes) DEBUG_MODE=false Set to true 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 (-v)","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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-pairdrop/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-pairdrop/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-pairdrop/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-pairdrop/#support-info","title":"Support Info","text":""},{"location":"images/docker-pairdrop/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-pairdrop/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-pairdrop/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-pairdrop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-pairdrop/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-pairdrop/#versions","title":"Versions","text":""},{"location":"images/docker-phpmyadmin/","title":"phpmyadmin","text":""},{"location":"images/docker-phpmyadmin/#linuxserverphpmyadmin","title":"linuxserver/phpmyadmin","text":"

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.

"},{"location":"images/docker-phpmyadmin/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/phpmyadmin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-phpmyadmin/#application-setup","title":"Application Setup","text":"

This image uses nginx, in contrast to the official images which offer fpm-only or Apache variants.

We support all of the official environment variables for configuration as well as directly editing the config files.

For more information check out the phpmyadmin documentation.

"},{"location":"images/docker-phpmyadmin/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-phpmyadmin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-phpmyadmin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-phpmyadmin/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-phpmyadmin/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Port for web frontend"},{"location":"images/docker-phpmyadmin/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PMA_ARBITRARY=1 Set to 1 to allow you to connect to any server. Setting to 0 will only allow you to connect to specified hosts (See Application Setup) PMA_ABSOLUTE_URI=https://phpmyadmin.example.com Set the URL you will use to access the web frontend"},{"location":"images/docker-phpmyadmin/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-phpmyadmin/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-phpmyadmin/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-phpmyadmin/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-phpmyadmin/#support-info","title":"Support Info","text":""},{"location":"images/docker-phpmyadmin/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-phpmyadmin/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-phpmyadmin/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-phpmyadmin/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-phpmyadmin/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-phpmyadmin/#versions","title":"Versions","text":""},{"location":"images/docker-pidgin/","title":"pidgin","text":""},{"location":"images/docker-pidgin/#linuxserverpidgin","title":"linuxserver/pidgin","text":"

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.

"},{"location":"images/docker-pidgin/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pidgin:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-pidgin/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

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.

"},{"location":"images/docker-pidgin/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=font-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-pidgin/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-pidgin/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-pidgin/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-pidgin/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-pidgin/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-pidgin/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 Pidgin desktop gui. 3001 Pidgin desktop gui HTTPS."},{"location":"images/docker-pidgin/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-pidgin/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores local files and settings"},{"location":"images/docker-pidgin/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --security-opt seccomp=unconfined 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-pidgin/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-pidgin/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-pidgin/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-pidgin/#support-info","title":"Support Info","text":""},{"location":"images/docker-pidgin/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-pidgin/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-pidgin/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-pidgin/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-pidgin/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-pidgin/#versions","title":"Versions","text":""},{"location":"images/docker-piper/","title":"piper","text":""},{"location":"images/docker-piper/#linuxserverpiper","title":"linuxserver/piper","text":"

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.

"},{"location":"images/docker-piper/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/piper:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-piper/#application-setup","title":"Application Setup","text":"

For use with Home Assistant Assist, add the Wyoming integration and supply the hostname/IP and port that piper is running add-on.\"

For more information see the piper docs,

"},{"location":"images/docker-piper/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-piper/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-piper/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-piper/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-piper/#ports-p","title":"Ports (-p)","text":"Parameter Function 10200 Wyoming connection port."},{"location":"images/docker-piper/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PIPER_VOICE=en_US-lessac-medium The Piper voice to use, in the format <language>-<name>-<quality> PIPER_LENGTH=1.0 Voice speaking rate, 1.0 is default with < 1.0 being faster and > 1.0 being slower. PIPER_NOISE=0.667 Controls the variability of the voice by adding noise. Values above 1 will start to degrade audio. PIPER_NOISEW=0.333 Controls the variability of speaking cadence. Values above 1 produce extreme stutters and pauses. PIPER_SPEAKER=0 Speaker number to use if the voice supports multiple speakers. PIPER_PROCS=1 Number of Piper processes to run simultaneously."},{"location":"images/docker-piper/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-piper/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-piper/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-piper/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-piper/#support-info","title":"Support Info","text":""},{"location":"images/docker-piper/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-piper/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-piper/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-piper/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-piper/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-piper/#versions","title":"Versions","text":""},{"location":"images/docker-piwigo/","title":"piwigo","text":""},{"location":"images/docker-piwigo/#linuxserverpiwigo","title":"linuxserver/piwigo","text":"

Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures.

"},{"location":"images/docker-piwigo/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/piwigo:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-piwigo/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-piwigo/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-piwigo/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-piwigo/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-piwigo/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-piwigo/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 Application WebUI"},{"location":"images/docker-piwigo/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-piwigo/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /gallery 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-piwigo/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-piwigo/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-piwigo/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-piwigo/#support-info","title":"Support Info","text":""},{"location":"images/docker-piwigo/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-piwigo/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-piwigo/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-piwigo/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-piwigo/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-piwigo/#versions","title":"Versions","text":""},{"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":"

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.

"},{"location":"images/docker-plex-meta-manager/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/plex-meta-manager:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-plex-meta-manager/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

There is a walkthrough available to help get you up and running.

This image supports all of the environment variables listed here and all commandline arguments.

To perform a one-time run use docker run (or docker-compose run) with the --rm and -e PMM_RUN=True 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.

For more information see the official wiki.

"},{"location":"images/docker-plex-meta-manager/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-plex-meta-manager/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-plex-meta-manager/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-plex-meta-manager/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-plex-meta-manager/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-plex-meta-manager/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. PMM_CONFIG=/config/config.yml Specify a custom config file to use. PMM_TIME=03:00 Comma-separated list of times to update each day. Format: HH:MM. PMM_RUN=False Set to True to run without the scheduler. PMM_TEST=False Set to True to run in debug mode with only collections that have test: true. PMM_NO_MISSING=False Set to True to run without any of the missing movie/show functions."},{"location":"images/docker-plex-meta-manager/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-plex-meta-manager/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-plex-meta-manager/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-plex-meta-manager/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-plex-meta-manager/#support-info","title":"Support Info","text":""},{"location":"images/docker-plex-meta-manager/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-plex-meta-manager/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-plex-meta-manager/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-plex-meta-manager/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-plex-meta-manager/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-plex-meta-manager/#versions","title":"Versions","text":""},{"location":"images/docker-plex/","title":"plex","text":""},{"location":"images/docker-plex/#linuxserverplex","title":"linuxserver/plex","text":"

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.

"},{"location":"images/docker-plex/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/plex:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-plex/#application-setup","title":"Application Setup","text":"

Webui can be found at <your-ip>:32400/web

Note

If there is no value set for the VERSION variable, then no updates will take place.

Note

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.

Valid settings for VERSION are:-

Info

YOU CANNOT UPDATE TO A PLEXPASS ONLY (BETA) VERSION IF YOU ARE NOT LOGGED IN WITH A PLEXPASS ACCOUNT.

"},{"location":"images/docker-plex/#hardware-acceleration","title":"Hardware Acceleration","text":"

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.

"},{"location":"images/docker-plex/#intelatiamd","title":"Intel/ATI/AMD","text":"

To leverage hardware acceleration you will need to mount /dev/dri video device inside of the container.

--device=/dev/dri:/dev/dri\n

We will automatically ensure the abc user inside of the container has the proper permissions to access this device.

"},{"location":"images/docker-plex/#nvidia","title":"Nvidia","text":"

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

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 --runtime=nvidia and add an environment variable -e NVIDIA_VISIBLE_DEVICES=all (can also be set to a specific gpu's UUID, this can be discovered by running nvidia-smi --query-gpu=gpu_name,gpu_uuid --format=csv ). NVIDIA automatically mounts the GPU and drivers from your host into the container.

"},{"location":"images/docker-plex/#arm-devices","title":"Arm Devices","text":"

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 dtoverlay=vc4-fkms-v3d in your usercfg.txt.

"},{"location":"images/docker-plex/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-plex/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-plex/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-plex/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-plex/#ports-p","title":"Ports (-p)","text":"Parameter Function"},{"location":"images/docker-plex/#networking-net","title":"Networking (--net)","text":"Parameter Function --net=host Use Host Networking"},{"location":"images/docker-plex/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. VERSION=docker Set whether to update plex or not - see Application Setup section. PLEX_CLAIM= 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 (-v)","text":"Volume Function /config Plex library location. This can grow very large, 50gb+ is likely for a large collection. /tv Media goes here. Add as many as needed e.g. /movies, /tv, etc. /movies Media goes here. Add as many as needed e.g. /movies, /tv, 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-plex/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-plex/#optional-parameters","title":"Optional Parameters","text":"

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 PLEX_CLAIM to claim a server set up with bridge networking.

  -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

The application accepts a series of environment variables to further customize itself on boot:

Parameter Function --device=/dev/dri:/dev/dri Add this option to your run command if you plan on using Quicksync hardware acceleration - see Application Setup section. --device=/dev/dvb:/dev/dvb 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":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-plex/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-plex/#support-info","title":"Support Info","text":""},{"location":"images/docker-plex/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-plex/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-plex/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-plex/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-plex/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-plex/#versions","title":"Versions","text":""},{"location":"images/docker-projectsend/","title":"projectsend","text":""},{"location":"images/docker-projectsend/#linuxserverprojectsend","title":"linuxserver/projectsend","text":"

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.

"},{"location":"images/docker-projectsend/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/projectsend:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-projectsend/#application-setup","title":"Application Setup","text":"

IMPORTANT This image no longer supports MSSQL since being migrated to PHP7, if you want MSSQL support please use the tag linuxserver/projectsend:r1053-ls27

Requires a user and database in either mysql or mariadb.

To use translations, follow the instructions here. The necessary paths are symlinked under /config/translations (note that the \"templates\" paths don't need lang subdirectories).

More info at ProjectSend.

"},{"location":"images/docker-projectsend/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-projectsend/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-projectsend/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-projectsend/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-projectsend/#ports-p","title":"Ports (-p)","text":"Parameter Function 80 WebUI"},{"location":"images/docker-projectsend/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. MAX_UPLOAD=5000 To set maximum upload size (in MB), default if unset is 5000."},{"location":"images/docker-projectsend/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-projectsend/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-projectsend/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-projectsend/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-projectsend/#support-info","title":"Support Info","text":""},{"location":"images/docker-projectsend/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-projectsend/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-projectsend/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-projectsend/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-projectsend/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-projectsend/#versions","title":"Versions","text":""},{"location":"images/docker-prowlarr/","title":"prowlarr","text":""},{"location":"images/docker-prowlarr/#linuxserverprowlarr","title":"linuxserver/prowlarr","text":"

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":"images/docker-prowlarr/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/prowlarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-prowlarr/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Access the webui at <your-ip>:9696, for more information check out Prowlarr.

Setup info can be found here.

"},{"location":"images/docker-prowlarr/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-prowlarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-prowlarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-prowlarr/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-prowlarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 9696 The port for the Prowlarr web UI"},{"location":"images/docker-prowlarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-prowlarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-prowlarr/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-prowlarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-prowlarr/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-prowlarr/#support-info","title":"Support Info","text":""},{"location":"images/docker-prowlarr/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-prowlarr/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-prowlarr/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-prowlarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-prowlarr/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-prowlarr/#versions","title":"Versions","text":""},{"location":"images/docker-pwndrop/","title":"pwndrop","text":""},{"location":"images/docker-pwndrop/#linuxserverpwndrop","title":"linuxserver/pwndrop","text":"

Pwndrop is a self-deployable file hosting service for sending out red teaming payloads or securely sharing your private files over HTTP and WebDAV.

"},{"location":"images/docker-pwndrop/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pwndrop:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-pwndrop/#application-setup","title":"Application Setup","text":"

Access the web gui at http://<your-ip>:8080/pwndrop (replace /pwndrop with your SECRET_PATH if you set one).

"},{"location":"images/docker-pwndrop/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-pwndrop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-pwndrop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-pwndrop/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-pwndrop/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 web gui"},{"location":"images/docker-pwndrop/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. SECRET_PATH=/pwndrop Secret path for admin access. Defaults to /pwndrop. 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 (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-pwndrop/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-pwndrop/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-pwndrop/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-pwndrop/#support-info","title":"Support Info","text":""},{"location":"images/docker-pwndrop/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-pwndrop/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-pwndrop/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-pwndrop/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-pwndrop/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-pwndrop/#versions","title":"Versions","text":""},{"location":"images/docker-pydio-cells/","title":"pydio-cells","text":""},{"location":"images/docker-pydio-cells/#linuxserverpydio-cells","title":"linuxserver/pydio-cells","text":"

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.

"},{"location":"images/docker-pydio-cells/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pydio-cells:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-pydio-cells/#application-setup","title":"Application Setup","text":"

You must first create a mysql database for Pydio Cells. Using our mariadb image is recommended.

Then access the web gui setup wizard at https://SERVER_IP:8080 if accessing locally (must set SERVER_IP env var), or at https://pydio-cells.domain.com if reverse proxying.

"},{"location":"images/docker-pydio-cells/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

"},{"location":"images/docker-pydio-cells/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-pydio-cells/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-pydio-cells/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-pydio-cells/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-pydio-cells/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 Http port"},{"location":"images/docker-pydio-cells/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. EXTERNALURL=yourdomain.url The external url you would like to use to access Pydio Cells (Can be https://domain.url or https://IP:PORT). SERVER_IP=0.0.0.0 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 (-v)","text":"Volume Function /config All the config files reside here."},{"location":"images/docker-pydio-cells/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname= 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-pydio-cells/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-pydio-cells/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-pydio-cells/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-pydio-cells/#support-info","title":"Support Info","text":""},{"location":"images/docker-pydio-cells/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-pydio-cells/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-pydio-cells/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-pydio-cells/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-pydio-cells/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-pydio-cells/#versions","title":"Versions","text":""},{"location":"images/docker-pyload-ng/","title":"pyload-ng","text":""},{"location":"images/docker-pyload-ng/#linuxserverpyload-ng","title":"linuxserver/pyload-ng","text":"

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.

"},{"location":"images/docker-pyload-ng/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pyload-ng:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-pyload-ng/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Access the web interface at http://your-ip:8000 the default login is: username - pyload password - pyload

For general usage please see the pyLoad wiki here .

"},{"location":"images/docker-pyload-ng/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-pyload-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-pyload-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-pyload-ng/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-pyload-ng/#ports-p","title":"Ports (-p)","text":"Parameter Function 8000 Allows HTTP access to the application 9666 Click'n'Load port."},{"location":"images/docker-pyload-ng/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-pyload-ng/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Persistent config files /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-pyload-ng/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-pyload-ng/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-pyload-ng/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-pyload-ng/#support-info","title":"Support Info","text":""},{"location":"images/docker-pyload-ng/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-pyload-ng/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-pyload-ng/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-pyload-ng/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-pyload-ng/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-pyload-ng/#versions","title":"Versions","text":""},{"location":"images/docker-pylon/","title":"pylon","text":""},{"location":"images/docker-pylon/#linuxserverpylon","title":"linuxserver/pylon","text":"

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":"images/docker-pylon/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/pylon:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-pylon/#application-setup","title":"Application Setup","text":"

Access the webui at http://your-ip:3131, more information here.

"},{"location":"images/docker-pylon/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-pylon/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-pylon/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-pylon/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-pylon/#ports-p","title":"Ports (-p)","text":"Parameter Function 3131 The port for the Pylon web interface"},{"location":"images/docker-pylon/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. GITURL=https://github.com/linuxserver/docker-pylon.git Specify a git repo to checkout on first startup PYUSER=myuser Specify a basic auth user. PYPASS=mypass Specify a basic auth password."},{"location":"images/docker-pylon/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-pylon/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-pylon/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-pylon/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-pylon/#support-info","title":"Support Info","text":""},{"location":"images/docker-pylon/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-pylon/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-pylon/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-pylon/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-pylon/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-pylon/#versions","title":"Versions","text":""},{"location":"images/docker-python/","title":"python","text":"

The LinuxServer.io team brings you another container release featuring:

Find us at:

"},{"location":"images/docker-python/#linuxserverpython","title":"linuxserver/python","text":""},{"location":"images/docker-python/#usage","title":"Usage","text":"

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.

"},{"location":"images/docker-python/#versions","title":"Versions","text":""},{"location":"images/docker-qbittorrent/","title":"qbittorrent","text":""},{"location":"images/docker-qbittorrent/#linuxserverqbittorrent","title":"linuxserver/qbittorrent","text":"

The Qbittorrent project aims to provide an open-source software alternative to \u00b5Torrent. qBittorrent is based on the Qt toolkit and libtorrent-rasterbar library.

"},{"location":"images/docker-qbittorrent/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/qbittorrent:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-qbittorrent/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

The web UI is at <your-ip>:8080 and a temporary password for the admin user will be printed to the container log on startup.

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.

If you are running a very old (3.x) kernel you may run into this issue which can be worked around using this method

"},{"location":"images/docker-qbittorrent/#webui_port-variable","title":"WEBUI_PORT variable","text":"

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.

For example, to set the port to 8090 you need to set -p 8090:8090 and -e WEBUI_PORT=8090

"},{"location":"images/docker-qbittorrent/#torrenting_port","title":"TORRENTING_PORT","text":"

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.

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.

"},{"location":"images/docker-qbittorrent/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-qbittorrent/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-qbittorrent/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-qbittorrent/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-qbittorrent/#ports-p","title":"Ports (-p)","text":"Parameter Function 8080 WebUI 6881 tcp connection port 6881/udp udp connection port"},{"location":"images/docker-qbittorrent/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. WEBUI_PORT=8080 for changing the port of the web UI, see below for explanation TORRENTING_PORT=6881 for changing the port of tcp/udp connection, see below for explanation"},{"location":"images/docker-qbittorrent/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Contains all relevant configuration files. /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-qbittorrent/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-qbittorrent/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-qbittorrent/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-qbittorrent/#support-info","title":"Support Info","text":""},{"location":"images/docker-qbittorrent/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-qbittorrent/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-qbittorrent/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-qbittorrent/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-qbittorrent/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-qbittorrent/#versions","title":"Versions","text":""},{"location":"images/docker-qdirstat/","title":"qdirstat","text":""},{"location":"images/docker-qdirstat/#linuxserverqdirstat","title":"linuxserver/qdirstat","text":"

QDirStat Qt-based directory statistics: KDirStat without any KDE -- from the author of the original KDirStat.

"},{"location":"images/docker-qdirstat/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/qdirstat:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-qdirstat/#application-setup","title":"Application Setup","text":"

The application can be accessed at:

"},{"location":"images/docker-qdirstat/#options-in-all-kasmvnc-based-gui-containers","title":"Options in all KasmVNC based GUI containers","text":"

This container is based on Docker Baseimage KasmVNC which means there are additional environment variables and run configurations to enable or disable specific functionality.

"},{"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 /subfolder/ 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 /dev/dri/renderD128 LC_ALL Set the Language for the container to run as IE fr_FR.UTF-8 ar_AE.UTF-8 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 --privileged 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 -v /home/user/docker-data:/var/lib/docker. -v /var/run/docker.sock:/var/run/docker.sock Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. --device /dev/dri:/dev/dri Mount a GPU into the container, this can be used in conjunction with the DRINODE 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":"

The environment variable LC_ALL can be used to start this image in a different language than English simply pass for example to launch the Desktop session in French LC_ALL=fr_FR.UTF-8. 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.

To install cjk fonts on startup as an example pass the environment variables:

-e DOCKER_MODS=linuxserver/mods:universal-package-install\n-e INSTALL_PACKAGES=fonts-noto-cjk\n-e LC_ALL=zh_CN.UTF-8\n

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.

"},{"location":"images/docker-qdirstat/#lossless-mode","title":"Lossless mode","text":"

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.

"},{"location":"images/docker-qdirstat/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-qdirstat/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-qdirstat/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-qdirstat/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-qdirstat/#ports-p","title":"Ports (-p)","text":"Parameter Function 3000 QdirStat desktop gui. 3001 QdirStat desktop gui HTTPS."},{"location":"images/docker-qdirstat/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-qdirstat/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Users home directory in the container, stores qdirstat settings and scans. /data 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-qdirstat/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-qdirstat/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-qdirstat/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-qdirstat/#support-info","title":"Support Info","text":""},{"location":"images/docker-qdirstat/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-qdirstat/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-qdirstat/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-qdirstat/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-qdirstat/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-qdirstat/#versions","title":"Versions","text":""},{"location":"images/docker-quassel-core/","title":"quassel-core","text":""},{"location":"images/docker-quassel-core/#linuxserverquassel-core","title":"linuxserver/quassel-core","text":"

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.

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.

"},{"location":"images/docker-quassel-core/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/quassel-core:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-quassel-core/#application-setup","title":"Application Setup","text":"

Quassel wiki: quassel

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).

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 docker run command default: 4242. Create an admin user, select SQLite as your storage backend (Quassel limitation). Setup your real name and nick, then press Save & Connect.

You're now connected to IRC. Let's add you to our IRC #linuxserver.io room on Freenode. Click 'File' > 'Networks' > 'Configure Networks' > 'Add' (under Networks section, not Servers) > 'Use preset' > Select 'Freenode' and then configure your identity using the tabs in the 'Network details' section. Once connected to Freenode, click #join and enter #linuxserver.io. That's it, you're done.

"},{"location":"images/docker-quassel-core/#stateless-usage","title":"Stateless usage","text":"

To use Quassel in stateless mode, where it needs to be configured through environment arguments, run it with the --config-from-environment RUN_OPTS environment setting.

Env Usage DB_BACKEND SQLite or PostgreSQL DB_PGSQL_USERNAME PostgreSQL User DB_PGSQL_PASSWORD PostgreSQL Password DB_PGSQL_HOSTNAME PostgreSQL Host DB_PGSQL_PORT PostgreSQL Port AUTH_AUTHENTICATOR Database or LDAP 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

Additionally you have RUN_OPTS that can be used to customize pathing and behavior.

Option Example --strict-ident strictly bool --strict-ident --ident-daemon strictly bool --ident-daemon --ident-port --ident-port \"10113\" --ident-listen --ident-listen \"::,0.0.0.0\" --ssl-cert --ssl-cert /config/keys/cert.crt --ssl-key --ssl-key /config/keys/cert.key --require-ssl strictly bool --require-ssl

Minimal example with SQLite:

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 <path to data>:/config \\\n  --restart unless-stopped \\\n  linuxserver/quassel-core\n
"},{"location":"images/docker-quassel-core/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-quassel-core/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-quassel-core/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-quassel-core/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-quassel-core/#ports-p","title":"Ports (-p)","text":"Parameter Function 4242 The port quassel-core listens for connections on. 10113 Optional Ident Port"},{"location":"images/docker-quassel-core/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. RUN_OPTS=--config-from-environment Custom CLI options for Quassel"},{"location":"images/docker-quassel-core/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-quassel-core/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-quassel-core/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-quassel-core/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-quassel-core/#support-info","title":"Support Info","text":""},{"location":"images/docker-quassel-core/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-quassel-core/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-quassel-core/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-quassel-core/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-quassel-core/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-quassel-core/#versions","title":"Versions","text":""},{"location":"images/docker-quassel-web/","title":"quassel-web","text":""},{"location":"images/docker-quassel-web/#linuxserverquassel-web","title":"linuxserver/quassel-web","text":"

Quassel-web is a web client for Quassel. Note that a Quassel-Core instance is required, we have a container available here.

"},{"location":"images/docker-quassel-web/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/quassel-web:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-quassel-web/#application-setup","title":"Application Setup","text":"

By default this container webui will be available on https://$SERVER_IP:64443. To setup this container you can either use the environment variables we recommend or manually setup the configuration file by leaving out the QUASSEL_CORE environment variable among others. The configuration file using this method can be found at:

/config/settings-user.js\n

"},{"location":"images/docker-quassel-web/#strict-reverse-proxies","title":"Strict reverse proxies","text":"

This image uses a self-signed certificate by default. This naturally means the scheme is https. If you are using a reverse proxy which validates certificates, you need to disable this check for the container.

"},{"location":"images/docker-quassel-web/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-quassel-web/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-quassel-web/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-quassel-web/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-quassel-web/#ports-p","title":"Ports (-p)","text":"Parameter Function 64080 Quassel-web http webui 64443 Quassel-web https webui"},{"location":"images/docker-quassel-web/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list. QUASSEL_CORE=192.168.1.10 specify the URL or IP address of your Quassel Core instance QUASSEL_PORT=4242 specify the port of your Quassel Core instance QUASSEL_HTTPS= Set to true to have Quassel web serve over https on port 64443 instead of http on port 64080. URL_BASE=/quassel Specify a url-base in reverse proxy setups ie. /quassel"},{"location":"images/docker-quassel-web/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-quassel-web/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-quassel-web/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-quassel-web/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-quassel-web/#support-info","title":"Support Info","text":""},{"location":"images/docker-quassel-web/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-quassel-web/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-quassel-web/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-quassel-web/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-quassel-web/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-quassel-web/#versions","title":"Versions","text":""},{"location":"images/docker-radarr/","title":"radarr","text":""},{"location":"images/docker-radarr/#linuxserverradarr","title":"linuxserver/radarr","text":"

Radarr - A fork of Sonarr to work with movies \u00e0 la Couchpotato.

"},{"location":"images/docker-radarr/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/radarr:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-radarr/#version-tags","title":"Version Tags","text":"

This image provides various versions that are available via tags. Please read the descriptions carefully and exercise caution when using unstable or development tags.

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":"

Access the webui at <your-ip>:7878, for more information check out Radarr.

"},{"location":"images/docker-radarr/#media-folders","title":"Media folders","text":"

We have set /movies and /downloads 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.

Use the optional paths if you don't understand, or don't want hardlinks/atomic moves.

The folks over at servarr.com wrote a good write-up on how to get started with this.

"},{"location":"images/docker-radarr/#usage","title":"Usage","text":"

To help you get started creating a container from this image you can either use docker-compose or the docker cli.

"},{"location":"images/docker-radarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"
---\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
"},{"location":"images/docker-radarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"
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
"},{"location":"images/docker-radarr/#parameters","title":"Parameters","text":"

Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate <external>:<internal> respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

"},{"location":"images/docker-radarr/#ports-p","title":"Ports (-p)","text":"Parameter Function 7878 The port for the Radarr Web UI"},{"location":"images/docker-radarr/#environment-variables-e","title":"Environment Variables (-e)","text":"Env Function PUID=1000 for UserID - see below for explanation PGID=1000 for GroupID - see below for explanation TZ=Etc/UTC specify a timezone to use, see this list."},{"location":"images/docker-radarr/#volume-mappings-v","title":"Volume Mappings (-v)","text":"Volume Function /config Database and Radarr configs /movies Location of Movie library on disk (See note in Application setup) /downloads 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":"

You can set any environment variable from a file by using a special prepend FILE__.

As an example:

-e FILE__MYVAR=/run/secrets/mysecretvariable\n

Will set the environment variable MYVAR based on the contents of the /run/secrets/mysecretvariable file.

"},{"location":"images/docker-radarr/#umask-for-running-applications","title":"Umask for running applications","text":"

For all of our images we provide the ability to override the default umask settings for services started within the containers using the optional -e UMASK=022 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.

"},{"location":"images/docker-radarr/#user-group-identifiers","title":"User / Group Identifiers","text":"

When using volumes (-v flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user PUID and group PGID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance PUID=1000 and PGID=1000, to find yours use id your_user as below:

id your_user\n

Example output:

uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)\n
"},{"location":"images/docker-radarr/#docker-mods","title":"Docker Mods","text":"

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.

"},{"location":"images/docker-radarr/#support-info","title":"Support Info","text":""},{"location":"images/docker-radarr/#updating-info","title":"Updating Info","text":"

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.

Below are the instructions for updating containers:

"},{"location":"images/docker-radarr/#via-docker-compose","title":"Via Docker Compose","text":""},{"location":"images/docker-radarr/#via-docker-run","title":"Via Docker Run","text":""},{"location":"images/docker-radarr/#image-update-notifications-diun-docker-image-update-notifier","title":"Image Update Notifications - Diun (Docker Image Update Notifier)","text":"

Tip

We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.

"},{"location":"images/docker-radarr/#building-locally","title":"Building locally","text":"

If you want to make local modifications to these images for development purposes or just to customize the logic:

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

The ARM variants can be built on x86_64 hardware using multiarch/qemu-user-static

docker run --rm --privileged multiarch/qemu-user-static:register --reset\n

Once registered you can define the dockerfile to use with -f Dockerfile.aarch64.

"},{"location":"images/docker-radarr/#versions","title":"Versions","text":""},{"location":"images/docker-raneto/","title":"raneto","text":""},{"location":"images/docker-raneto/#linuxserverraneto","title":"linuxserver/raneto","text":"

Raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase.

"},{"location":"images/docker-raneto/#supported-architectures","title":"Supported Architectures","text":"

We utilise the docker manifest for multi-platform awareness. More information is available from docker here and our announcement here.

Simply pulling lscr.io/linuxserver/raneto:latest should retrieve the correct image for your arch, but you can also pull specific arch images via tags.

The architectures supported by this image are:

Architecture Available Tag x86-64 \u2705 amd64-<version tag> arm64 \u2705 arm64v8-<version tag> armhf \u274c"},{"location":"images/docker-raneto/#application-setup","title":"Application Setup","text":"

Access the webui at http://:3000

The default username and password is admin/password

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: