{"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.ioFor 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.
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":"Error starting framework core
messages in the docker log for Plex. linuxserver/docker-plex#247error getting time:crypto/asn1/a_time.c:330
docker exec <container-name> date
returns 1970Some 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:
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
).
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.
-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.
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.
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":"docker exec -it airsonic /bin/bash
docker logs -f airsonic
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic
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:
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.
-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:
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:
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.
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.
-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.
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.
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":"docker exec -it booksonic /bin/bash
docker logs -f booksonic
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic
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.
-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 ).
docker exec -it cardigann /bin/bash
docker logs -f cardigann
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cardigann
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/cardigann
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).
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.
-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.
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.
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":"docker exec -it chevereto /bin/bash
docker logs -f chevereto
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' chevereto
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/chevereto:latest
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.
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.
-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.
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.
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":"docker exec -it clarkson /bin/bash
docker logs -f clarkson
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' clarkson
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/clarkson
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.
-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.
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.
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":"docker exec -it cloud9 /bin/bash
docker logs -f cloud9
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cloud9
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cloud9:latest
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
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.
-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":"docker exec -it codiad /bin/bash
docker logs -f codiad
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codiad
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/codiad
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.
-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.
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.
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":"docker exec -it codimd /bin/bash
docker logs -f codimd
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' codimd
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/codimd
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.
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.
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.
-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.
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.
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":"docker exec -it couchpotato /bin/bash
docker logs -f couchpotato
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' couchpotato
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/couchpotato
UMASK_SET
in favor of UMASK in baseimage, see above for more information.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it dillinger /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f dillinger\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dillinger\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dillinger:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull dillinger\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d dillinger\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/dillinger:latest\n
Stop the running container:
docker stop dillinger\n
Delete the container:
docker rm dillinger\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"docker exec -it docker-compose /bin/bash
docker logs -f docker-compose
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' docker-compose
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/docker-compose:latest
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":"docker pull lscr.io/linuxserver/docker-compose:latest
docker image prune
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
.
DOCKER_COMPOSE_IMAGE_TAG
in the run.sh
script.alpine
tag.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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it endlessh /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f endlessh\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' endlessh\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/endlessh:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull endlessh\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d endlessh\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/endlessh:latest\n
Stop the running container:
docker stop endlessh\n
Delete the container:
docker rm endlessh\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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:
admin
gazee
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":"docker exec -it gazee /bin/bash
docker logs -f gazee
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gazee
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/gazee
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.
-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.
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.
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":"docker exec -it gmail-order-bot /bin/bash
docker logs -f gmail-order-bot
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gmail-order-bot
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/lsiodev/gmail-order-bot:latest
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.
-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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"docker exec -it guacd /bin/bash
docker logs -f guacd
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' guacd
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/guacd:latest
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.
-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.
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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"docker exec -it hydra /bin/bash
docker logs -f hydra
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hydra
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
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.
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.
-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.
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":"docker exec -it hydra2 /bin/bash
docker logs -f hydra2
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hydra2
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/hydra2
linuxserver/docker-nzbhydra2
.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.
-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.
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.
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":"docker exec -it ipfs /bin/bash
docker logs -f ipfs
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ipfs
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ipfs
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":"/config
directory of the docker container docker exec -itw /config kanzi bash
lexigram login --no-browser true
to setup your AWS credentials and copy the URL into a browser, login to your Amazon Developer Account and copy/paste the resulting authorisation code back into the terminal and press enter.kodi.config
according to your local setup and this will be used by the included gunicorn server to respond to requests. 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.
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.
-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.
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.
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":"docker exec -it kanzi /bin/bash
docker logs -f kanzi
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kanzi
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kanzi:latest
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.
-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.
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.
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":"
http
validation, port 80 on the internet side of the router should be forwarded to this container's port 80dns
validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf
duckdns
validation, either leave the SUBDOMAINS
variable empty or set it to wildcard
, and set the DUCKDNSTOKEN
variable with your duckdns token. Due to a limitation of duckdns, the resulting cert will only cover either main subdomain (ie. yoursubdomain.duckdns.org
), or sub-subdomains (ie. *.yoursubdomain.duckdns.org
), but will not both at the same time. You can use our duckdns image to update your IP on duckdns.org.--cap-add=NET_ADMIN
is required for fail2ban to modify iptablesURL
will be yoursubdomain.duckdns.org
and the SUBDOMAINS
can be www,ftp,cloud
with http validation, or wildcard
with dns validation.https://yourdomain.url
to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default
)./config/log/letsencrypt
to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.docker exec letsencrypt openssl dhparam -out /config/nginx/dhparams.pem 4096
WARNING: This takes a very long timedocker exec -it letsencrypt htpasswd -c /config/nginx/.htpasswd <username>
.htpasswd
. For the first user, use the above command, for others, use the above command without the -c
flag, as it will force deletion of the existing .htpasswd
and creation of a new one/config/nginx/site-confs/default
. Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default
file, a new default will be created on container start.README.md
file under /config/nginx/proxy_confs
for instructions on how to enable them. The preset confs reside in and get imported from this repo.add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\";
This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines-v /path-to-le-config:/le-ssl
) and in the other containers, use the cert location /le-ssl/keys/letsencrypt/
etc/letsencrypt
that resides under /config
in other containers (ie. -v /path-to-le-config/etc/letsencrypt:/le-ssl
) and in the other containers, use the cert location /le-ssl/live/<your.domain.url>/
(This is more secure because the first method shares the entire letsencrypt config folder with other containers, including the www files, whereas the second method only shares the ssl certs)cert.pem
, chain.pem
, fullchain.pem
and privkey.pem
, which are generated by Let's Encrypt and used by nginx and various other appsprivkey.pfx
, a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password)priv-fullchain-bundle.pem
, a pem cert that bundles the private key and the fullchain, used by apps like ZNC/config/fail2ban/jail.local
.conf
files, create .local
files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local
files will append whatever's in the .conf
files (ie. nginx-http-auth.conf
--> nginx-http-auth.local
)docker exec -it swag fail2ban-client status
docker exec -it swag fail2ban-client status <jail name>
docker exec -it swag fail2ban-client set <jail name> unbanip <IP>
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":"docker exec -it swag /bin/bash
docker logs -f swag
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/letsencrypt
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":"docker pull linuxserver/letsencrypt
docker stop swag
docker rm swag
/config
folder and settings will be preserved)docker start swag
docker image prune
docker-compose pull
docker-compose pull swag
docker-compose up -d
docker-compose up -d swag
docker image prune
docker run --rm \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\ncontainrrr/watchtower \\\n--run-once swag\n
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.
docker image prune
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
.
DHLEVEL
param./ldaplogin
to avoid clashes (existing users need to manually update).authelia-server.conf
and authelia-location.conf
, and restart to update).php7-pecl-imagick
due to upstream issues. Add support for Geoip2
auto db retrieval.whois
to replace the built-in busybox version. Update jail.local
to change default fail2ban ban action to more widely supported iptables-allports
./config/nginx/nginx.conf
and restart the container).proxy.conf
to fix CSRF issues.feature
of up to 8 minute random delay.linuxserver/reverse-proxy-confs
, update baseimage packages during buildVALIDATION
parameter added for choosing certbot validation methods, including dns through official plugins. HTTPVAL
is deprecated. STAGING
parameter added for testing. Backwards compatibility for the short term. Since tls-sni is disabled by letsencrypt, most users will have to change their settings and adopt the new parameters within the next 90 days. Reorganized the nginx default config, split ssl settings into new ssl.conf/config/fail2ban/action.d/iptables-common.local
and restarting the container after updating the image--privileged
is no longer required as long as --cap-add=NET_ADMIN
is added, instructions modified accordingly, disabled fail2ban ipv6 actions due to requiring access to host kernel modulesThis image is deprecated. We will not offer support for this image and it will not be updated. PLEASE USE AIRSONIC linuxserver/airsonic
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.
-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":"docker exec -it libresonic /bin/bash
docker logs -f libresonic
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libresonic
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/libresonic
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.
-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.
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.
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":"
For all updates you should pull the latest image, clear all files and folders in /config and /data and reinitiate the database import by (re)starting the docker. We do not officially support upgrading this container in place with existing data sets.
If you did not set WEBADDRESS env variable, then AFTER iniatilisation is complete you will need to edit the line sub WEB_SERVER { \"localhost:5000\" }
in file /config/DBDefs.pm changing localhost to the ip of your host, this is to allow css to display properly
You must register here to receive a MusicBrainz code to allow you to receive database updates, it is free. Get Code here.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"docker exec -it musicbrainz /bin/bash
docker logs -f musicbrainz
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' musicbrainz
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/musicbrainz
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":"docker-compose pull
docker-compose pull musicbrainz
docker-compose up -d
docker-compose up -d musicbrainz
docker image prune
docker pull lscr.io/linuxserver/musicbrainz
docker stop musicbrainz
docker rm musicbrainz
/config
folder and settings will be preserved)docker image prune
docker run --rm \\\n-v /var/run/docker.sock:/var/run/docker.sock \\\ncontainrrr/watchtower \\\n--run-once musicbrainz\n
docker image prune
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":"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
.
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
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.
-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.
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.
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":"docker exec -it muximux /bin/bash
docker logs -f muximux
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' muximux
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/muximux:latest
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.
-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.
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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"docker exec -it mylar /bin/bash
docker logs -f mylar
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar
html5lib
python package.requests
python package.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.
-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.
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.
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":"docker exec -it nano-discord-bot /bin/bash
docker logs -f nano-discord-bot
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-discord-bot
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lsiodev/nano-discord-bot
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.
-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.
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.
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":"docker exec -it nntp2nntp /bin/bash
docker logs -f nntp2nntp
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nntp2nntp
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nntp2nntp:latest
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
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.
-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.
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.
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":"docker exec -it nzbget /bin/bash
docker logs -f nzbget
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbget
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbget:latest
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.
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.
-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.
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.
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":"docker exec -it openvpn-as /bin/bash
docker logs -f openvpn-as
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvpn-as
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvpn-as
xenial
tag is deprecated and there will be no further releases for that tag.privileged
and host
networking requirements, added cap-add=NET_ADMIN
requirement instead. INTERFACE
no longer needs to be defined as in bridge mode, it will use the container's eth0 interface by default.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.
-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.
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.
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":"docker exec -it organizr /bin/bash
docker logs -f organizr
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' organizr
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/organizr
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
.
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.
-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.
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.
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":"docker exec -it paperless-ng /bin/bash
docker logs -f paperless-ng
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ng
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ng:latest
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
.
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.
-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.
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.
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":"docker exec -it paperless-ngx /bin/bash
docker logs -f paperless-ngx
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' paperless-ngx
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/paperless-ngx:latest
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.
-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.
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.
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":"docker exec -it papermerge /bin/bash
docker logs -f papermerge
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' papermerge
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/papermerge:latest
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.
-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.
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.
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":"docker exec -it photoshow /bin/bash
docker logs -f photoshow
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' photoshow
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/photoshow:latest
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.
-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.
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.
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":"docker exec -it pixapop /bin/bash
docker logs -f pixapop
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pixapop
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pixapop:latest
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.
-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.
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.
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":"docker exec -it pydio /bin/bash
docker logs -f pydio
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio
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.
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.
-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.
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.
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":"docker exec -it pyload /bin/bash
docker logs -f pyload
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload
passlib
.ng
tag for pyload-ng (currently alpha).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 :-
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 toexternal
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.
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.
-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.
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.
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":"docker exec -it requestrr /bin/bash
docker logs -f requestrr
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' requestrr
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/requestrr:latest
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.
-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.
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.
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":"docker exec -it rutorrent /bin/bash
docker logs -f rutorrent
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rutorrent
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rutorrent
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.
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.
-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.
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.
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.
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":"docker exec -it scrutiny /bin/bash
docker logs -f scrutiny
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' scrutiny
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/scrutiny:latest
nsswitch.conf
to resolve local hostsThis image is deprecated. We will not offer support for this image and it will not be updated. PLEASE MIGRATE TO THELOUNGE linuxserver/thelounge
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.
-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":"/config/config.json
Change the value public: true,
to public: false,
restart the container and enter the following from the command line of the host: docker exec -it thelounge thelounge add <user>
Enter a password when prompted, refresh your browser. You should now be prompted for a password on the webinterface. docker exec -it shout-irc /bin/bash
docker logs -f shout-irc
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' shout-irc
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/shout-irc
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.
-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.
docker exec -it sickrage /bin/bash
docker logs -f sickrage
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickrage
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/sickrage
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:
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.
-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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"docker exec -it taisun /bin/bash
docker logs -f taisun
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' taisun
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/taisun
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.
-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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"docker exec -it tester /bin/bash
docker logs -f tester
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tester
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tester:latest
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it unifi-controller /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f unifi-controller\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' unifi-controller\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/unifi-controller:latest\n
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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull unifi-controller\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d unifi-controller\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/unifi-controller:latest\n
Stop the running container:
docker stop unifi-controller\n
Delete the container:
docker rm unifi-controller\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Pull the latest image at its tag and replace it with the same env variables in one run:
docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower \\\n --run-once unifi-controller\n
You can also remove the old dangling images: docker image prune
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
.
apt-get install
during build to reduce image size.run
from /config
volume.LTS
tag as Unifi no longer releases LTS stable builds. Existing users can switch to the latest
tag. Direct upgrade from 5.6.42 (LTS) to 6.0.42 (latest) tested successfully.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.
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.
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>
.
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.
There are a few terms you might find useful to understand when working with containers:
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.
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.
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.
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.
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).
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
.
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.
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.
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.
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
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
).
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.
We have curated various base images which our main application images derive from. This is beneficial for two main reasons:
/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!
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:
ini
files under /config/dns-conf/
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.
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.
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.
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.
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
.
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.
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.
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.
/config/nginx/site-confs/default
that reads root /config/www;
and change it to root /config/www/wordpress;
/config/nginx/site-confs/default
that reads try_files $uri $uri/ /index.html /index.php$is_args$args =404;
and change it to try_files $uri $uri/ /index.html /index.php$is_args$args;
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;
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.
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.
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
.
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.
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:
The application and SWAG is not on the same custom docker network
Further up we talk about how to set up Docker networking, however there are some other common traps
The container name does not match the application name.
Covered in the section for Understanding the proxy conf structure
You manually changed the port.
Also covered in the section for Understanding the proxy conf structure
The container originally ran with host networking, or the default bridge.
In most cases the contents of /config/nginx/resolver.conf;
should be ...resolver 127.0.0.11 valid=30s;
, if this is not the case, you can:
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:
docker logs swag
)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.
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it adguardhome-sync /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f adguardhome-sync\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' adguardhome-sync\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/adguardhome-sync:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull adguardhome-sync\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d adguardhome-sync\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/adguardhome-sync:latest\n
Stop the running container:
docker stop adguardhome-sync\n
Delete the container:
docker rm adguardhome-sync\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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
).
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it airsonic-advanced /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f airsonic-advanced\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' airsonic-advanced\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/airsonic-advanced:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull airsonic-advanced\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d airsonic-advanced\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/airsonic-advanced:latest\n
Stop the running container:
docker stop airsonic-advanced\n
Delete the container:
docker rm airsonic-advanced\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it altus /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f altus\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' altus\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/altus:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull altus\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d altus\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/altus:latest\n
Stop the running container:
docker stop altus\n
Delete the container:
docker rm altus\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it apprise-api /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f apprise-api\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' apprise-api\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/apprise-api:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull apprise-api\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d apprise-api\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/apprise-api:latest\n
Stop the running container:
docker stop apprise-api\n
Delete the container:
docker rm apprise-api\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it audacity /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f audacity\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' audacity\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/audacity:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull audacity\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d audacity\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/audacity:latest\n
Stop the running container:
docker stop audacity\n
Delete the container:
docker rm audacity\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it babybuddy /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f babybuddy\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' babybuddy\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/babybuddy:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull babybuddy\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d babybuddy\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/babybuddy:latest\n
Stop the running container:
docker stop babybuddy\n
Delete the container:
docker rm babybuddy\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
CSRF_TRUSTED_ORIGINS
env var.WORKER_TIMEOUT
issue.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it bambustudio /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f bambustudio\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bambustudio\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bambustudio:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull bambustudio\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d bambustudio\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/bambustudio:latest\n
Stop the running container:
docker stop bambustudio\n
Delete the container:
docker rm bambustudio\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
#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:
#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:
#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:
#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:
#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:
#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:
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:
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
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.
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.
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 supportThe DRINODE
environment variable can be used to point to a specific GPU. Up to date information can be found here
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:
#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:
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":"http://<host-ip>:6767
.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it bazarr /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f bazarr\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bazarr\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bazarr:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull bazarr\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d bazarr\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/bazarr:latest\n
Stop the running container:
docker stop bazarr\n
Delete the container:
docker rm bazarr\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
package_info
.UMASK_SET
in favor of UMASK in baseimage, see above for more information.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it beets /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f beets\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' beets\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/beets:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull beets\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d beets\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/beets:latest\n
Stop the running container:
docker stop beets\n
Delete the container:
docker rm beets\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it blender /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f blender\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' blender\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/blender:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull blender\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d blender\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/blender:latest\n
Stop the running container:
docker stop blender\n
Delete the container:
docker rm blender\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it boinc /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f boinc\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' boinc\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/boinc:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull boinc\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d boinc\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/boinc:latest\n
Stop the running container:
docker stop boinc\n
Delete the container:
docker rm boinc\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
GUAC_USER
and GUAC_PASS
env vars. Existing users can set the new var PASSWORD
for the user abc
.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it booksonic-air /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f booksonic-air\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' booksonic-air\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/booksonic-air:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull booksonic-air\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d booksonic-air\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/booksonic-air:latest\n
Stop the running container:
docker stop booksonic-air\n
Delete the container:
docker rm booksonic-air\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
/config/www/.env
=> .env
/config/www/laravel.log
=> storage/logs/laravel.log
/config/www/backups/
=> storage/backups/
/config/www/files/
=> storage/uploads/files/
/config/www/images/
=> storage/uploads/images/
/config/www/themes/
=> themes/
/config/www/uploads/
=> public/uploads/
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it bookstack /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f bookstack\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' bookstack\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/bookstack:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull bookstack\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d bookstack\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/bookstack:latest\n
Stop the running container:
docker stop bookstack\n
Delete the container:
docker rm bookstack\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
.env
values in quotes.&
).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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it budge /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f budge\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' budge\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/budge:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull budge\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d budge\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/budge:latest\n
Stop the running container:
docker stop budge\n
Delete the container:
docker rm budge\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it calibre-web /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f calibre-web\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre-web\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre-web:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull calibre-web\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d calibre-web\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/calibre-web:latest\n
Stop the running container:
docker stop calibre-web\n
Delete the container:
docker rm calibre-web\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
67
have vulnerability.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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it calibre /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f calibre\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calibre\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calibre:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull calibre\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d calibre\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/calibre:latest\n
Stop the running container:
docker stop calibre\n
Delete the container:
docker rm calibre\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
Calibre
. Remove websocat as it is now handled properly in the baseimage.GUAC_USER
and GUAC_PASS
env vars. Existing users can set the new var PASSWORD
for the user abc
.CLI_ARGS
to pass start arguments to calibre.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it calligra /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f calligra\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' calligra\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/calligra:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull calligra\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d calligra\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/calligra:latest\n
Stop the running container:
docker stop calligra\n
Delete the container:
docker rm calligra\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it changedetection.io /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f changedetection.io\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' changedetection.io\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/changedetection.io:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull changedetection.io\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d changedetection.io\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/changedetection.io:latest\n
Stop the running container:
docker stop changedetection.io\n
Delete the container:
docker rm changedetection.io\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it chromium /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f chromium\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' chromium\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/chromium:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull chromium\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d chromium\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/chromium:latest\n
Stop the running container:
docker stop chromium\n
Delete the container:
docker rm chromium\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
#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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it code-server /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f code-server\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' code-server\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/code-server:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull code-server\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d code-server\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/code-server:latest\n
Stop the running container:
docker stop code-server\n
Delete the container:
docker rm code-server\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
/config/workspace
contents.install-extension
as a helper for mods to install extensions.DEFAULT_WORKSPACE
env var.chown
on large workspace (contents of workspace folder no longer chowned).HASHED_PASSWORD
.SUDO_PASSWORD_HASH
.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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it cops /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f cops\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cops\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cops:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull cops\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d cops\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/cops:latest\n
Stop the running container:
docker stop cops\n
Delete the container:
docker rm cops\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it cura /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f cura\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' cura\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/cura:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull cura\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d cura\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/cura:latest\n
Stop the running container:
docker stop cura\n
Delete the container:
docker rm cura\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it daapd /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f daapd\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' daapd\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/daapd:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull daapd\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d daapd\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/daapd:latest\n
Stop the running container:
docker stop daapd\n
Delete the container:
docker rm daapd\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it darktable /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f darktable\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' darktable\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/darktable:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull darktable\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d darktable\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/darktable:latest\n
Stop the running container:
docker stop darktable\n
Delete the container:
docker rm darktable\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it davos /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f davos\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' davos\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/davos:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull davos\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d davos\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/davos:latest\n
Stop the running container:
docker stop davos\n
Delete the container:
docker rm davos\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it ddclient /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f ddclient\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ddclient\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ddclient:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull ddclient\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d ddclient\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/ddclient:latest\n
Stop the running container:
docker stop ddclient\n
Delete the container:
docker rm ddclient\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
ddclient.conf
.server=www.cloudflare.com
from your ddclient.conf
.Deluge is a lightweight, Free Software, cross-platform BitTorrent client.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it deluge /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f deluge\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' deluge\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/deluge:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull deluge\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d deluge\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/deluge:latest\n
Stop the running container:
docker stop deluge\n
Delete the container:
docker rm deluge\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
UMASK_SET
in favor of UMASK in baseimage, see above for more information.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it digikam /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f digikam\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' digikam\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/digikam:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull digikam\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d digikam\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/digikam:latest\n
Stop the running container:
docker stop digikam\n
Delete the container:
docker rm digikam\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it dillinger /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f dillinger\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dillinger\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dillinger:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull dillinger\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d dillinger\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/dillinger:latest\n
Stop the running container:
docker stop dillinger\n
Delete the container:
docker rm dillinger\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
docker exec -u abc -d diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data
Will run an index in the backgrounddocker exec -u abc -it diskover python3 /app/diskover/diskover.py -i diskover-my_index_name /data
Will run an index in the foregroundTo 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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it diskover /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f diskover\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' diskover\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/diskover:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull diskover\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d diskover\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/diskover:latest\n
Stop the running container:
docker stop diskover\n
Delete the container:
docker rm diskover\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it dokuwiki /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f dokuwiki\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' dokuwiki\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/dokuwiki:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull dokuwiki\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d dokuwiki\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/dokuwiki:latest\n
Stop the running container:
docker stop dokuwiki\n
Delete the container:
docker rm dokuwiki\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
vendor
folder to deny list.savedir
.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it domoticz /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f domoticz\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' domoticz\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/domoticz:latest\n
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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull domoticz\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d domoticz\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/domoticz:latest\n
Stop the running container:
docker stop domoticz\n
Delete the container:
docker rm domoticz\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Pull the latest image at its tag and replace it with the same env variables in one run:
docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower \\\n --run-once domoticz\n
You can also remove the old dangling images: docker image prune
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it doplarr /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f doplarr\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doplarr\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doplarr:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull doplarr\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d doplarr\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/doplarr:latest\n
Stop the running container:
docker stop doplarr\n
Delete the container:
docker rm doplarr\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
DISCORD__ROLE_ID
environment variable, see Permissions Configuration.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it doublecommander /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f doublecommander\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' doublecommander\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/doublecommander:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull doublecommander\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d doublecommander\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/doublecommander:latest\n
Stop the running container:
docker stop doublecommander\n
Delete the container:
docker rm doublecommander\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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":"SUBDOMAINS=user
you would NOT put a sub subdomain like overseerr from overseerr.user.ducksdns.orgUsing 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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it duckdns /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f duckdns\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duckdns\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duckdns:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull duckdns\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d duckdns\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/duckdns:latest\n
Stop the running container:
docker stop duckdns\n
Delete the container:
docker rm duckdns\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it duplicati /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f duplicati\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' duplicati\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/duplicati:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull duplicati\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d duplicati\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/duplicati:latest\n
Stop the running container:
docker stop duplicati\n
Delete the container:
docker rm duplicati\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it emby /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f emby\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emby\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emby:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull emby\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d emby\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/emby:latest\n
Stop the running container:
docker stop emby\n
Delete the container:
docker rm emby\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
UMASK_SET
in favor of UMASK in baseimage, see above for more information. Remove no longer used mapping for /transcode.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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it embystat /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f embystat\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' embystat\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/embystat:latest\n
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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull embystat\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d embystat\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/embystat:latest\n
Stop the running container:
docker stop embystat\n
Delete the container:
docker rm embystat\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Pull the latest image at its tag and replace it with the same env variables in one run:
docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower \\\n --run-once embystat\n
You can also remove the old dangling images: docker image prune
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
.
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it emulatorjs /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f emulatorjs\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' emulatorjs\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/emulatorjs:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull emulatorjs\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d emulatorjs\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/emulatorjs:latest\n
Stop the running container:
docker stop emulatorjs\n
Delete the container:
docker rm emulatorjs\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it endlessh /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f endlessh\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' endlessh\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/endlessh:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull endlessh\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d endlessh\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/endlessh:latest\n
Stop the running container:
docker stop endlessh\n
Delete the container:
docker rm endlessh\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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
.
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
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.
-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.
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.
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.
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":"Shell access whilst the container is running:
docker exec -it fail2ban /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f fail2ban\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fail2ban\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fail2ban:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull fail2ban\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d fail2ban\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/fail2ban:latest\n
Stop the running container:
docker stop fail2ban\n
Delete the container:
docker rm fail2ban\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it faster-whisper /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f faster-whisper\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' faster-whisper\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/faster-whisper:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull faster-whisper\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d faster-whisper\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/faster-whisper:latest\n
Stop the running container:
docker stop faster-whisper\n
Delete the container:
docker rm faster-whisper\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it feed2toot /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f feed2toot\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' feed2toot\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/feed2toot:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull feed2toot\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d feed2toot\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/feed2toot:latest\n
Stop the running container:
docker stop feed2toot\n
Delete the container:
docker rm feed2toot\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it ferdium /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f ferdium\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ferdium\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ferdium:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull ferdium\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d ferdium\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/ferdium:latest\n
Stop the running container:
docker stop ferdium\n
Delete the container:
docker rm ferdium\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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":"LIBVA_DRIVER_NAME=i965
in docker arguments)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
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
.
ENABLE_VULKAN=true
no longer needed)(tested with Intel).ENABLE_VULKAN=true
) to x86_64. Bump Intel drivers and other libs.--enable-small
from ffmpeg build options to add back some features.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it filezilla /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f filezilla\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' filezilla\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/filezilla:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull filezilla\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d filezilla\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/filezilla:latest\n
Stop the running container:
docker stop filezilla\n
Delete the container:
docker rm filezilla\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it firefox /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f firefox\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' firefox\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/firefox:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull firefox\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d firefox\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/firefox:latest\n
Stop the running container:
docker stop firefox\n
Delete the container:
docker rm firefox\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it fleet /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f fleet\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' fleet\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/fleet:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull fleet\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d fleet\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/fleet:latest\n
Stop the running container:
docker stop fleet\n
Delete the container:
docker rm fleet\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it flexget /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f flexget\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' flexget\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/flexget:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull flexget\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d flexget\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/flexget:latest\n
Stop the running container:
docker stop flexget\n
Delete the container:
docker rm flexget\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it foldingathome /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f foldingathome\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' foldingathome\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/foldingathome:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull foldingathome\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d foldingathome\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/foldingathome:latest\n
Stop the running container:
docker stop foldingathome\n
Delete the container:
docker rm foldingathome\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it freecad /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f freecad\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' freecad\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/freecad:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull freecad\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d freecad\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/freecad:latest\n
Stop the running container:
docker stop freecad\n
Delete the container:
docker rm freecad\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it freshrss /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f freshrss\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' freshrss\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/freshrss:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull freshrss\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d freshrss\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/freshrss:latest\n
Stop the running container:
docker stop freshrss\n
Delete the container:
docker rm freshrss\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it gimp /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f gimp\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gimp\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/gimp:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull gimp\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d gimp\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/gimp:latest\n
Stop the running container:
docker stop gimp\n
Delete the container:
docker rm gimp\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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.
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":"Shell access whilst the container is running:
docker exec -it github-desktop /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f github-desktop\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' github-desktop\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/github-desktop:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull github-desktop\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d github-desktop\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/github-desktop:latest\n
Stop the running container:
docker stop github-desktop\n
Delete the container:
docker rm github-desktop\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it gitqlient /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f gitqlient\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' gitqlient\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/gitqlient:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull gitqlient\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d gitqlient\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/gitqlient:latest\n
Stop the running container:
docker stop gitqlient\n
Delete the container:
docker rm gitqlient\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it grav /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f grav\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grav\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grav:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull grav\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d grav\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/grav:latest\n
Stop the running container:
docker stop grav\n
Delete the container:
docker rm grav\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it grocy /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f grocy\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' grocy\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/grocy:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull grocy\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d grocy\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/grocy:latest\n
Stop the running container:
docker stop grocy\n
Delete the container:
docker rm grocy\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it habridge /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f habridge\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' habridge\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/habridge:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull habridge\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d habridge\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/habridge:latest\n
Stop the running container:
docker stop habridge\n
Delete the container:
docker rm habridge\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it headphones /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f headphones\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' headphones\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/headphones:latest\n
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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull headphones\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d headphones\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/headphones:latest\n
Stop the running container:
docker stop headphones\n
Delete the container:
docker rm headphones\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Pull the latest image at its tag and replace it with the same env variables in one run:
docker run --rm \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n containrrr/watchtower \\\n --run-once headphones\n
You can also remove the old dangling images: docker image prune
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it healthchecks /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f healthchecks\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' healthchecks\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/healthchecks:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull healthchecks\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d healthchecks\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/healthchecks:latest\n
Stop the running container:
docker stop healthchecks\n
Delete the container:
docker rm healthchecks\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
REGENERATE_SETTINGS
as it is now obsolete.git pull
is now in Dockerfile so each tagged container contains the same code versionlocal_settings.py
outputHedgeDoc 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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it hedgedoc /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f hedgedoc\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hedgedoc\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hedgedoc:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull hedgedoc\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d hedgedoc\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/hedgedoc:latest\n
Stop the running container:
docker stop hedgedoc\n
Delete the container:
docker rm hedgedoc\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
CMD_PORT
that is needed for accessing at port other than 80, 443 and 3000.CMD_PROTOCOL_USESSL
that is needed for reverse proxy.CMD_DOMAIN
.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it heimdall /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f heimdall\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' heimdall\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/heimdall:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull heimdall\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d heimdall\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/heimdall:latest\n
Stop the running container:
docker stop heimdall\n
Delete the container:
docker rm heimdall\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
development
tag..env
rather than copy. It now resides under /config/www
.env
to /config
.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it hishtory-server /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f hishtory-server\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' hishtory-server\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/hishtory-server:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull hishtory-server\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d hishtory-server\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/hishtory-server:latest\n
Stop the running container:
docker stop hishtory-server\n
Delete the container:
docker rm hishtory-server\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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
.
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.
--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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it homeassistant /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f homeassistant\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' homeassistant\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/homeassistant:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull homeassistant\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d homeassistant\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/homeassistant:latest\n
Stop the running container:
docker stop homeassistant\n
Delete the container:
docker rm homeassistant\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
/config
for pip installs.2023.4.6
.build.yaml
to determine HA base version.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it htpcmanager /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f htpcmanager\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' htpcmanager\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/htpcmanager:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull htpcmanager\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d htpcmanager\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/htpcmanager:latest\n
Stop the running container:
docker stop htpcmanager\n
Delete the container:
docker rm htpcmanager\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it inkscape /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f inkscape\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' inkscape\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/inkscape:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull inkscape\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d inkscape\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/inkscape:latest\n
Stop the running container:
docker stop inkscape\n
Delete the container:
docker rm inkscape\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it jackett /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f jackett\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jackett\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jackett:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull jackett\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d jackett\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/jackett:latest\n
Stop the running container:
docker stop jackett\n
Delete the container:
docker rm jackett\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it jellyfin /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f jellyfin\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' jellyfin\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/jellyfin:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull jellyfin\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d jellyfin\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/jellyfin:latest\n
Stop the running container:
docker stop jellyfin\n
Delete the container:
docker rm jellyfin\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
bionic
tag.UMASK_SET
in favor of UMASK in baseimage, see above for more information./dev/vc-mem
with /dev/vcsm
as the former was not sufficient for raspbian./config
).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.
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
.
The following line is only in this repo for loop testing:
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.
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.
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.
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.
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.
-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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"Shell access whilst the container is running:
docker exec -it kasm /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f kasm\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kasm\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kasm:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull kasm\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d kasm\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/kasm:latest\n
Stop the running container:
docker stop kasm\n
Delete the container:
docker rm kasm\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it kavita /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f kavita\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kavita\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kavita:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull kavita\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d kavita\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/kavita:latest\n
Stop the running container:
docker stop kavita\n
Delete the container:
docker rm kavita\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it kdenlive /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f kdenlive\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kdenlive\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kdenlive:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull kdenlive\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d kdenlive\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/kdenlive:latest\n
Stop the running container:
docker stop kdenlive\n
Delete the container:
docker rm kdenlive\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it kicad /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f kicad\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kicad\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kicad:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull kicad\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d kicad\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/kicad:latest\n
Stop the running container:
docker stop kicad\n
Delete the container:
docker rm kicad\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
SELECT VERSION();
in your MariaDB/MySQL database to get the versionDATABASE_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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it kimai /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f kimai\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' kimai\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/kimai:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull kimai\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d kimai\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/kimai:latest\n
Stop the running container:
docker stop kimai\n
Delete the container:
docker rm kimai\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
DATABASE_URL
with version 2.0.30 and later.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it krita /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f krita\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' krita\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/krita:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull krita\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d krita\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/krita:latest\n
Stop the running container:
docker stop krita\n
Delete the container:
docker rm krita\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it lazylibrarian /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f lazylibrarian\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lazylibrarian\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lazylibrarian:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull lazylibrarian\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d lazylibrarian\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/lazylibrarian:latest\n
Stop the running container:
docker stop lazylibrarian\n
Delete the container:
docker rm lazylibrarian\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
Levenshtein
, add cmake as build dep on armhf.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":"/ldaplogin
(as well as /login
) to prevent clashes with reverse proxied apps that may also use /login
for their internal auth.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.
-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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"Shell access whilst the container is running:
docker exec -it ldap-auth /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f ldap-auth\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ldap-auth\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ldap-auth:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull ldap-auth\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d ldap-auth\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/ldap-auth:latest\n
Stop the running container:
docker stop ldap-auth\n
Delete the container:
docker rm ldap-auth\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
X-Ldap-DisableReferrals
.CERTFILE
and KEYFILE
vars./ldaplogin
as well as /login
, to prevent clashes with reverese proxied apps.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it libreoffice /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f libreoffice\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' libreoffice\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/libreoffice:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull libreoffice\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d libreoffice\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/libreoffice:latest\n
Stop the running container:
docker stop libreoffice\n
Delete the container:
docker rm libreoffice\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it librespeed /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f librespeed\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' librespeed\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/librespeed:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull librespeed\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d librespeed\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/librespeed:latest\n
Stop the running container:
docker stop librespeed\n
Delete the container:
docker rm librespeed\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
index.html
is recreated.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it lidarr /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f lidarr\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lidarr\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lidarr:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull lidarr\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d lidarr\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/lidarr:latest\n
Stop the running container:
docker stop lidarr\n
Delete the container:
docker rm lidarr\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
latest
tag to net core.develop
tag.UMASK_SET
in favor of UMASK in baseimage, see above for more information.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
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it limnoria /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f limnoria\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' limnoria\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/limnoria:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull limnoria\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d limnoria\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/limnoria:latest\n
Stop the running container:
docker stop limnoria\n
Delete the container:
docker rm limnoria\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it lollypop /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f lollypop\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lollypop\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lollypop:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull lollypop\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d lollypop\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/lollypop:latest\n
Stop the running container:
docker stop lollypop\n
Delete the container:
docker rm lollypop\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it lychee /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f lychee\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lychee\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/lychee:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull lychee\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d lychee\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/lychee:latest\n
Stop the running container:
docker stop lychee\n
Delete the container:
docker rm lychee\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it mariadb /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f mariadb\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mariadb\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mariadb:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull mariadb\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d mariadb\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/mariadb:latest\n
Stop the running container:
docker stop mariadb\n
Delete the container:
docker rm mariadb\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
To generate keys for SECRET_KEY_BASE
& OTP_SECRET
run docker run --rm -it --entrypoint /bin/bash lscr.io/linuxserver/mastodon generate-secret
once for each.
To generate keys for VAPID_PRIVATE_KEY
& VAPID_PUBLIC_KEY
run docker run --rm -it --entrypoint /bin/bash lscr.io/linuxserver/mastodon generate-vapid
Both of the secret generation aliases above can be run without any other setup having been carried out.
tootctl
you can run something like docker exec -it lscr.io/linuxserver/mastodon /tootctl <command>
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it mastodon /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f mastodon\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mastodon\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mastodon:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull mastodon\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d mastodon\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/mastodon:latest\n
Stop the running container:
docker stop mastodon\n
Delete the container:
docker rm mastodon\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it mediaelch /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f mediaelch\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mediaelch\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mediaelch:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull mediaelch\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d mediaelch\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/mediaelch:latest\n
Stop the running container:
docker stop mediaelch\n
Delete the container:
docker rm mediaelch\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it medusa /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f medusa\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' medusa\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/medusa:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull medusa\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d medusa\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/medusa:latest\n
Stop the running container:
docker stop medusa\n
Delete the container:
docker rm medusa\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it minetest /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f minetest\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minetest\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minetest:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull minetest\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d minetest\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/minetest:latest\n
Stop the running container:
docker stop minetest\n
Delete the container:
docker rm minetest\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it minisatip /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f minisatip\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' minisatip\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/minisatip:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull minisatip\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d minisatip\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/minisatip:latest\n
Stop the running container:
docker stop minisatip\n
Delete the container:
docker rm minisatip\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it monica /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f monica\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' monica\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/monica:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull monica\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d monica\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/monica:latest\n
Stop the running container:
docker stop monica\n
Delete the container:
docker rm monica\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it mstream /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f mstream\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mstream\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mstream:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull mstream\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d mstream\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/mstream:latest\n
Stop the running container:
docker stop mstream\n
Delete the container:
docker rm mstream\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
sync
folder to /config
.USER
, PASSWORD
and USE_JSON
as mStream v5 requires the use of config.json
.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:
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.
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.
-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.
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.
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.
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":"Shell access whilst the container is running:
docker exec -it mullvad-browser /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f mullvad-browser\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mullvad-browser\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mullvad-browser:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull mullvad-browser\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d mullvad-browser\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/mullvad-browser:latest\n
Stop the running container:
docker stop mullvad-browser\n
Delete the container:
docker rm mullvad-browser\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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 Mylar3python3-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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it mylar3 /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f mylar3\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mylar3\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mylar3:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull mylar3\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d mylar3\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/mylar3:latest\n
Stop the running container:
docker stop mylar3\n
Delete the container:
docker rm mylar3\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
pathlib.py
.libwebp
support.nightly
tag based on commits to upstream python3-dev
branch.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it mysql-workbench /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f mysql-workbench\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' mysql-workbench\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/mysql-workbench:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull mysql-workbench\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d mysql-workbench\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/mysql-workbench:latest\n
Stop the running container:
docker stop mysql-workbench\n
Delete the container:
docker rm mysql-workbench\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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":"docker exec -it nano-wallet /bin/bash
docker logs -f nano-wallet
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano-wallet
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano-wallet:latest
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.
-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.
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.
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":"docker exec -it nano /bin/bash
docker logs -f nano
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nano
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nano:latest
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
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
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it netbootxyz /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f netbootxyz\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbootxyz\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbootxyz:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull netbootxyz\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d netbootxyz\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/netbootxyz:latest\n
Stop the running container:
docker stop netbootxyz\n
Delete the container:
docker rm netbootxyz\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it netbox /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f netbox\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' netbox\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/netbox:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull netbox\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d netbox\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/netbox:latest\n
Stop the running container:
docker stop netbox\n
Delete the container:
docker rm netbox\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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
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.
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it nextcloud /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f nextcloud\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nextcloud\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nextcloud:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull nextcloud\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d nextcloud\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/nextcloud:latest\n
Stop the running container:
docker stop nextcloud\n
Delete the container:
docker rm nextcloud\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
/config/nginx/site-confs/default.conf
- Security fix for real ip settings.output_buffering
as per [nextcloud docs](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html/config/nginx/site-confs/default.conf
and restart the container). Fix LDAP connection.php8
tag for testing./config/nginx/site-confs/default.conf
and restart the container)./config/nginx/site-confs/default.conf
and restart the container)./config/nginx/site-confs/default.conf
and restart the container)./config/nginx/site-confs/default.conf
and restart the container)./config/nginx/site-confs/default.conf
and restart the container)./config/nginx/site-confs/default.conf
and restart the container).Nginx is a simple webserver with php support. The config files reside in /config
for easy user customization.
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
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it nginx /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f nginx\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nginx\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nginx:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull nginx\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d nginx\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/nginx:latest\n
Stop the running container:
docker stop nginx\n
Delete the container:
docker rm nginx\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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":"/config/ngircd.conf
which is created the first time the container is run, edit the file and restart the container to implement any config changes.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it ngircd /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f ngircd\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ngircd\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ngircd:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull ngircd\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d ngircd\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/ngircd:latest\n
Stop the running container:
docker stop ngircd\n
Delete the container:
docker rm ngircd\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it nzbhydra2 /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f nzbhydra2\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' nzbhydra2\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/nzbhydra2:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull nzbhydra2\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d nzbhydra2\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/nzbhydra2:latest\n
Stop the running container:
docker stop nzbhydra2\n
Delete the container:
docker rm nzbhydra2\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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 thedevelop
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it ombi /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f ombi\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ombi\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ombi:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull ombi\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d ombi\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/ombi:latest\n
Stop the running container:
docker stop ombi\n
Delete the container:
docker rm ombi\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
v4-preview
tag, which is merged to development
tag upstream.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
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it openssh-server /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f openssh-server\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openssh-server\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openssh-server:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull openssh-server\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d openssh-server\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/openssh-server:latest\n
Stop the running container:
docker stop openssh-server\n
Delete the container:
docker rm openssh-server\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it openvscode-server /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f openvscode-server\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' openvscode-server\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/openvscode-server:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull openvscode-server\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d openvscode-server\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/openvscode-server:latest\n
Stop the running container:
docker stop openvscode-server\n
Delete the container:
docker rm openvscode-server\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
/config/workspace
contents.install-extension
helper to compensate for upstream changes.install-extension
as a helper for mods to install extensions..profile
and .bashrc
for the user.insiders
tag.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it opera /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f opera\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' opera\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/opera:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull opera\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d opera\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/opera:latest\n
Stop the running container:
docker stop opera\n
Delete the container:
docker rm opera\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it orcaslicer /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f orcaslicer\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' orcaslicer\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/orcaslicer:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull orcaslicer\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d orcaslicer\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/orcaslicer:latest\n
Stop the running container:
docker stop orcaslicer\n
Delete the container:
docker rm orcaslicer\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it oscam /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f oscam\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' oscam\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/oscam:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull oscam\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d oscam\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/oscam:latest\n
Stop the running container:
docker stop oscam\n
Delete the container:
docker rm oscam\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it overseerr /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f overseerr\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' overseerr\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/overseerr:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull overseerr\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d overseerr\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/overseerr:latest\n
Stop the running container:
docker stop overseerr\n
Delete the container:
docker rm overseerr\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it pairdrop /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f pairdrop\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pairdrop\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pairdrop:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull pairdrop\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d pairdrop\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/pairdrop:latest\n
Stop the running container:
docker stop pairdrop\n
Delete the container:
docker rm pairdrop\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it phpmyadmin /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f phpmyadmin\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' phpmyadmin\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/phpmyadmin:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull phpmyadmin\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d phpmyadmin\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/phpmyadmin:latest\n
Stop the running container:
docker stop phpmyadmin\n
Delete the container:
docker rm phpmyadmin\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it pidgin /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f pidgin\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pidgin\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pidgin:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull pidgin\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d pidgin\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/pidgin:latest\n
Stop the running container:
docker stop pidgin\n
Delete the container:
docker rm pidgin\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it piper /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f piper\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' piper\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/piper:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull piper\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d piper\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/piper:latest\n
Stop the running container:
docker stop piper\n
Delete the container:
docker rm piper\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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":"You must create a user and database for piwigo to use in a mysql/mariadb server.
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.
The easiest way to edit the configuration file is to enable local files editor from the plugins page and use it to configure email settings etc.\"
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it piwigo /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f piwigo\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' piwigo\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/piwigo:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull piwigo\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d piwigo\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/piwigo:latest\n
Stop the running container:
docker stop piwigo\n
Delete the container:
docker rm piwigo\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it plex-meta-manager /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f plex-meta-manager\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex-meta-manager\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex-meta-manager:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull plex-meta-manager\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d plex-meta-manager\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/plex-meta-manager:latest\n
Stop the running container:
docker stop plex-meta-manager\n
Delete the container:
docker rm plex-meta-manager\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
docker
: Let Docker handle the Plex Version, we keep our Dockerhub Endpoint up to date with the latest public builds. This is the same as leaving this setting out of your create command.latest
: will update plex to the latest version available that you are entitled to.public
: will update plexpass users to the latest public version, useful for plexpass users that don't want to be on the bleeding edge but still want the latest public updates.<specific-version>
: will select a specific version (eg 0.9.12.4.1192-9a47d21) of plex to install, note you cannot use this to access plexpass versions if you do not have plexpass.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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it plex /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f plex\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' plex\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/plex:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull plex\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d plex\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/plex:latest\n
Stop the running container:
docker stop plex\n
Delete the container:
docker rm plex\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
UMASK_SET
in favor of UMASK in baseimage, see above for more information./transcode
volume mapping as it is now set via plex gui and defaults to a location under /config
.VERSION=public
./transcode
volume support (upstream Plex change) and modified PlexPass download method to prevent unauthorised usage of paid PMSProjectsend 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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it projectsend /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f projectsend\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' projectsend\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/projectsend:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull projectsend\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d projectsend\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/projectsend:latest\n
Stop the running container:
docker stop projectsend\n
Delete the container:
docker rm projectsend\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it prowlarr /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f prowlarr\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' prowlarr\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/prowlarr:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull prowlarr\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d prowlarr\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/prowlarr:latest\n
Stop the running container:
docker stop prowlarr\n
Delete the container:
docker rm prowlarr\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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).
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it pwndrop /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f pwndrop\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pwndrop\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pwndrop:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull pwndrop\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d pwndrop\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/pwndrop:latest\n
Stop the running container:
docker stop pwndrop\n
Delete the container:
docker rm pwndrop\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it pydio-cells /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f pydio-cells\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pydio-cells\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pydio-cells:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull pydio-cells\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d pydio-cells\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/pydio-cells:latest\n
Stop the running container:
docker stop pydio-cells\n
Delete the container:
docker rm pydio-cells\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
SERVER_IP
var for adding to cert as SAN. Add optional gRPC port mapping for CellsSync.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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it pyload-ng /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f pyload-ng\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pyload-ng\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pyload-ng:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull pyload-ng\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d pyload-ng\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/pyload-ng:latest\n
Stop the running container:
docker stop pyload-ng\n
Delete the container:
docker rm pyload-ng\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it pylon /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f pylon\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' pylon\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/pylon:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull pylon\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d pylon\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/pylon:latest\n
Stop the running container:
docker stop pylon\n
Delete the container:
docker rm pylon\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
The LinuxServer.io team brings you another container release featuring:
Find us at:
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":"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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it qbittorrent /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f qbittorrent\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qbittorrent\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qbittorrent:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull qbittorrent\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d qbittorrent\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/qbittorrent:latest\n
Stop the running container:
docker stop qbittorrent\n
Delete the container:
docker rm qbittorrent\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
UMASK_SET
in favor of UMASK in baseimage, see above for more information.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:
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it qdirstat /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f qdirstat\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' qdirstat\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/qdirstat:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull qdirstat\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d qdirstat\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/qdirstat:latest\n
Stop the running container:
docker stop qdirstat\n
Delete the container:
docker rm qdirstat\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it quassel-core /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f quassel-core\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-core\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-core:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull quassel-core\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d quassel-core\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/quassel-core:latest\n
Stop the running container:
docker stop quassel-core\n
Delete the container:
docker rm quassel-core\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
0.13.0
See here..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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it quassel-web /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f quassel-web\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' quassel-web\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/quassel-web:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull quassel-web\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d quassel-web\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/quassel-web:latest\n
Stop the running container:
docker stop quassel-web\n
Delete the container:
docker rm quassel-web\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
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.
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.
-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.
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.
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":"Shell access whilst the container is running:
docker exec -it radarr /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f radarr\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' radarr\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/radarr:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull radarr\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d radarr\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/radarr:latest\n
Stop the running container:
docker stop radarr\n
Delete the container:
docker rm radarr\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
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
.
UMASK_SET
.UMASK_SET
in favor of UMASK in baseimage, see above for more information.develop
tag.5.14
tag is deprecated). Rebase to Focal (for issues on arm32v7, see here).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:
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-raneto/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n raneto:\n image: lscr.io/linuxserver/raneto:latest\n container_name: raneto\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/raneto/data:/config\n ports:\n - 3000:3000\n restart: unless-stopped\n
"},{"location":"images/docker-raneto/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=raneto \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -v /path/to/raneto/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/raneto:latest\n
"},{"location":"images/docker-raneto/#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.
-p
)","text":"Parameter Function 3000
The port for the Raneto web interface"},{"location":"images/docker-raneto/#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-raneto/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Raneto config and Markdown files"},{"location":"images/docker-raneto/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-raneto/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-raneto/#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-raneto/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it raneto /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f raneto\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' raneto\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/raneto:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-raneto/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull raneto\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d raneto\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/raneto:latest\n
Stop the running container:
docker stop raneto\n
Delete the container:
docker rm raneto\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-raneto/#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-raneto.git\ncd docker-raneto\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/raneto: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
.
Rdesktop - Containers containing full desktop environments in many popular flavors for Alpine, Ubuntu, Arch, and Fedora accessible via RDP.
"},{"location":"images/docker-rdesktop/#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/rdesktop: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-rdesktop/#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 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch"},{"location":"images/docker-rdesktop/#application-setup","title":"Application Setup","text":"The Default USERNAME and PASSWORD is: abc/abc
Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directoy but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program
You will need a Remote Desktop client to access this container Wikipedia List, by default it listens on 3389, but you can change that port to whatever you wish on the host side IE 3390:3389
. The first thing you should do when you login to the container is to change the abc users password by issuing the passwd
command.
Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined
setting to allow these syscalls or try podman as they have updated their codebase to support them
If you ever lose your password you can always reset it by execing into the container as root:
docker exec -it rdesktop passwd abc\n
By default we perform all logic for the abc user and we reccomend using that user only in the container, but new users can be added as long as there is a startwm.sh
executable script in their home directory. All of these containers are configured with passwordless sudo, we make no efforts to secure or harden these containers and we do not reccomend ever publishing their ports to the public Internet."},{"location":"images/docker-rdesktop/#hardware-acceleration-ubuntu-container-only","title":"Hardware Acceleration (Ubuntu Container Only)","text":"Many desktop application will need access to a GPU to function properly and even some Desktop Environments have compisitor effects that will not function without a GPU. This is not a hard requirement and all base images will function without a video device mounted into the container.
"},{"location":"images/docker-rdesktop/#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-rdesktop/#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.
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.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-rdesktop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n rdesktop:\n image: lscr.io/linuxserver/rdesktop:latest\n container_name: rdesktop\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock #optional\n - /path/to/data:/config #optional\n ports:\n - 3389:3389\n devices:\n - /dev/dri:/dev/dri #optional\n shm_size: \"1gb\" #optional\n restart: unless-stopped\n
"},{"location":"images/docker-rdesktop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=rdesktop \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3389:3389 \\\n -v /var/run/docker.sock:/var/run/docker.sock `#optional` \\\n -v /path/to/data:/config `#optional` \\\n --device /dev/dri:/dev/dri `#optional` \\\n --shm-size=\"1gb\" `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/rdesktop:latest\n
"},{"location":"images/docker-rdesktop/#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.
-p
)","text":"Parameter Function 3389
RDP access port"},{"location":"images/docker-rdesktop/#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-rdesktop/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /var/run/docker.sock
Docker Socket on the system, if you want to use Docker in the container /config
abc users home directory"},{"location":"images/docker-rdesktop/#device-mappings-device","title":"Device Mappings (--device
)","text":"Parameter Function /dev/dri
Add this for GL support (Linux hosts only)"},{"location":"images/docker-rdesktop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size=
We set this to 1 gig to prevent modern web browsers from crashing --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-rdesktop/#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.
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.
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-rdesktop/#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-rdesktop/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it rdesktop /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f rdesktop\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rdesktop\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rdesktop:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-rdesktop/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull rdesktop\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d rdesktop\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/rdesktop:latest\n
Stop the running container:
docker stop rdesktop\n
Delete the container:
docker rm rdesktop\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-rdesktop/#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-rdesktop.git\ncd docker-rdesktop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/rdesktop: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
.
Readarr - Book Manager and Automation (Sonarr for Ebooks)
"},{"location":"images/docker-readarr/#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/readarr:develop
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-readarr/#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 \u274c develop \u2705 Readarr releases from their develop branch nightly \u2705 Readarr releases from their nightly branch"},{"location":"images/docker-readarr/#application-setup","title":"Application Setup","text":"Access the webui at <your-ip>:8787
, for more information check out Readarr.
We have set /books
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 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-readarr/#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-readarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n readarr:\n image: lscr.io/linuxserver/readarr:develop\n container_name: readarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n - /path/to/books:/books #optional\n - /path/to/downloadclient-downloads:/downloads #optional\n ports:\n - 8787:8787\n restart: unless-stopped\n
"},{"location":"images/docker-readarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=readarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8787:8787 \\\n -v /path/to/data:/config \\\n -v /path/to/books:/books `#optional` \\\n -v /path/to/downloadclient-downloads:/downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/readarr:develop\n
"},{"location":"images/docker-readarr/#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.
-p
)","text":"Parameter Function 8787
The port for the Readarr webinterface"},{"location":"images/docker-readarr/#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-readarr/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Database and Readarr configs /books
Location of Book library on disk (See note in Application setup) /downloads
Location of download managers output directory (See note in Application setup)"},{"location":"images/docker-readarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-readarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-readarr/#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-readarr/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it readarr /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f readarr\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' readarr\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/readarr:develop\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-readarr/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull readarr\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d readarr\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/readarr:develop\n
Stop the running container:
docker stop readarr\n
Delete the container:
docker rm readarr\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-readarr/#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-readarr.git\ncd docker-readarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/readarr:develop .\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
.
Remmina is a remote desktop client written in GTK, aiming to be useful for system administrators and travellers, who need to work with lots of remote computers in front of either large or tiny screens. Remmina supports multiple network protocols, in an integrated and consistent user interface. Currently RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC are supported.
"},{"location":"images/docker-remmina/#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/remmina: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-remmina/#application-setup","title":"Application Setup","text":"The application can be accessed at:
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-remmina/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-remmina/#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-remmina/#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-remmina/#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-remmina/#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-remmina/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n remmina:\n image: lscr.io/linuxserver/remmina:latest\n container_name: remmina\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n
"},{"location":"images/docker-remmina/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=remmina \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/remmina:latest\n
"},{"location":"images/docker-remmina/#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.
-p
)","text":"Parameter Function 3000
Remmina desktop gui. 3001
Remmina desktop gui HTTPS."},{"location":"images/docker-remmina/#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-remmina/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Users home directory in the container, stores program settings."},{"location":"images/docker-remmina/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-remmina/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-remmina/#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-remmina/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it remmina /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f remmina\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' remmina\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/remmina:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-remmina/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull remmina\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d remmina\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/remmina:latest\n
Stop the running container:
docker stop remmina\n
Delete the container:
docker rm remmina\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-remmina/#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-remmina.git\ncd docker-remmina\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/remmina: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
.
Resilio-sync (formerly BitTorrent Sync) uses the BitTorrent protocol to sync files and folders between all of your devices. There are both free and paid versions, this container supports both. There is an official sync image but we created this one as it supports user mapping to simplify permissions for volumes.
"},{"location":"images/docker-resilio-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/resilio-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-resilio-sync/#application-setup","title":"Application Setup","text":"<your-ip>:8888
, for account creation and configuration.To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-resilio-sync/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n resilio-sync:\n image: lscr.io/linuxserver/resilio-sync:latest\n container_name: resilio-sync\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n - /path/to/downloads:/downloads\n - /path/to/data:/sync\n ports:\n - 8888:8888\n - 55555:55555\n restart: unless-stopped\n
"},{"location":"images/docker-resilio-sync/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=resilio-sync \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8888:8888 \\\n -p 55555:55555 \\\n -v /path/to/config:/config \\\n -v /path/to/downloads:/downloads \\\n -v /path/to/data:/sync \\\n --restart unless-stopped \\\n lscr.io/linuxserver/resilio-sync:latest\n
"},{"location":"images/docker-resilio-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.
-p
)","text":"Parameter Function 8888
WebUI 55555
Sync Port."},{"location":"images/docker-resilio-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."},{"location":"images/docker-resilio-sync/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Where resilio-sync should store its config file. /downloads
Folder for downloads/cache. /sync
Sync folders root."},{"location":"images/docker-resilio-sync/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-resilio-sync/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-resilio-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-resilio-sync/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it resilio-sync /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f resilio-sync\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' resilio-sync\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/resilio-sync:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-resilio-sync/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull resilio-sync\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d resilio-sync\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/resilio-sync:latest\n
Stop the running container:
docker stop resilio-sync\n
Delete the container:
docker rm resilio-sync\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-resilio-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-resilio-sync.git\ncd docker-resilio-sync\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/resilio-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
.
UMASK_SET
in favor of UMASK in baseimage, see above for more information.Rsnapshot is a filesystem snapshot utility based on rsync. rsnapshot makes it easy to make periodic snapshots of local machines, and remote machines over ssh. The code makes extensive use of hard links whenever possible, to greatly reduce the disk space required.\"
"},{"location":"images/docker-rsnapshot/#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/rsnapshot: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-rsnapshot/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-rsnapshot/#important-notes","title":"IMPORTANT NOTES:","text":"After starting the container you will need to edit /config/rsnapshot.conf
.
rsnapshot is configured to backup data to the /.snapshots
volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.
rsnapshot retains backups based on configurations in this section. Please see the rsnapshot readme for more information.
"},{"location":"images/docker-rsnapshot/#backup-points","title":"BACKUP POINTS","text":"rsnapshot is configured to backup data from the /data
volume by default. This can be changed in the config, but be sure you mount a volume to the container to match.
You will then need to edit /config/crontabs/root
to set cron jobs to run rsnapshot. By default no cron jobs are enabled. Examples are includes based on information from the rsnapshot readme.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-rsnapshot/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n rsnapshot:\n image: lscr.io/linuxserver/rsnapshot:latest\n container_name: rsnapshot\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/rsnapshot/config:/config\n - /path/to/snapshots:/.snapshots #optional\n - /path/to/data:/data #optional\n restart: unless-stopped\n
"},{"location":"images/docker-rsnapshot/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=rsnapshot \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -v /path/to/rsnapshot/config:/config \\\n -v /path/to/snapshots:/.snapshots `#optional` \\\n -v /path/to/data:/data `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/rsnapshot:latest\n
"},{"location":"images/docker-rsnapshot/#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.
-p
)","text":"Parameter Function"},{"location":"images/docker-rsnapshot/#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-rsnapshot/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files /.snapshots
Storage location for all snapshots. /data
Storage location for data to be backed up."},{"location":"images/docker-rsnapshot/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-rsnapshot/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-rsnapshot/#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-rsnapshot/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it rsnapshot /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f rsnapshot\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' rsnapshot\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/rsnapshot:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-rsnapshot/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull rsnapshot\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d rsnapshot\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/rsnapshot:latest\n
Stop the running container:
docker stop rsnapshot\n
Delete the container:
docker rm rsnapshot\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-rsnapshot/#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-rsnapshot.git\ncd docker-rsnapshot\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/rsnapshot: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
.
Sabnzbd makes Usenet as simple and streamlined as possible by automating everything we can. All you have to do is add an .nzb. SABnzbd takes over from there, where it will be automatically downloaded, verified, repaired, extracted and filed away with zero human interaction.
"},{"location":"images/docker-sabnzbd/#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/sabnzbd: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-sabnzbd/#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 SABnzbd releases unstable \u2705 Pre-releases from the develop branch nightly \u2705 Latest commits from the develop branch"},{"location":"images/docker-sabnzbd/#application-setup","title":"Application Setup","text":"Initial setup is done via http://<docker host ip>:<mapped http port>
ie, http://192.168.1.100:8080.
See the SABnzbd wiki for more information.
"},{"location":"images/docker-sabnzbd/#nzb-notify","title":"nzb-notify","text":"nzb-notify is included with this image as a convenience script. To use it set the Scripts folder in the Folder settings to /app/nzbnotify and then configure it under Notifications. See nzb-notify for more information.
"},{"location":"images/docker-sabnzbd/#download-folders","title":"Download folders","text":"In Sabnzbd gui settings, under Folders
, make sure to set the Completed Download Folder
as /downloads
and the Temporary Download Folder
as /incomplete-downloads
We have set /incomplete-downloads
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 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-sabnzbd/#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-sabnzbd/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n sabnzbd:\n image: lscr.io/linuxserver/sabnzbd:latest\n container_name: sabnzbd\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/sabnzbd/config:/config\n - /path/to/downloads:/downloads #optional\n - /path/to/incomplete/downloads:/incomplete-downloads #optional\n ports:\n - 8080:8080\n restart: unless-stopped\n
"},{"location":"images/docker-sabnzbd/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=sabnzbd \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8080:8080 \\\n -v /path/to/sabnzbd/config:/config \\\n -v /path/to/downloads:/downloads `#optional` \\\n -v /path/to/incomplete/downloads:/incomplete-downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sabnzbd:latest\n
"},{"location":"images/docker-sabnzbd/#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.
-p
)","text":"Parameter Function 8080
HTTP port for the WebUI."},{"location":"images/docker-sabnzbd/#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-sabnzbd/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files /downloads
Local path for finished downloads. /incomplete-downloads
Local path for incomplete-downloads."},{"location":"images/docker-sabnzbd/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sabnzbd/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-sabnzbd/#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-sabnzbd/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it sabnzbd /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f sabnzbd\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sabnzbd\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sabnzbd:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-sabnzbd/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull sabnzbd\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d sabnzbd\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/sabnzbd:latest\n
Stop the running container:
docker stop sabnzbd\n
Delete the container:
docker rm sabnzbd\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-sabnzbd/#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-sabnzbd.git\ncd docker-sabnzbd\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sabnzbd: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
.
python
to python3
.Series Troxide a Simple and Modern Series Tracker
"},{"location":"images/docker-series-troxide/#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/series-troxide: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-series-troxide/#application-setup","title":"Application Setup","text":"The application can be accessed at:
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-series-troxide/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-series-troxide/#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-series-troxide/#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-series-troxide/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n series-troxide:\n image: lscr.io/linuxserver/series-troxide:latest\n container_name: series-troxide\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n
"},{"location":"images/docker-series-troxide/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=series-troxide \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/series-troxide:latest\n
"},{"location":"images/docker-series-troxide/#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.
-p
)","text":"Parameter Function 3000
Series Troxide desktop gui. 3001
HTTPS Series Troxide desktop gui."},{"location":"images/docker-series-troxide/#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-series-troxide/#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-series-troxide/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size=
This is required for the application to run properly."},{"location":"images/docker-series-troxide/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-series-troxide/#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-series-troxide/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it series-troxide /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f series-troxide\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' series-troxide\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/series-troxide:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-series-troxide/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull series-troxide\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d series-troxide\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/series-troxide:latest\n
Stop the running container:
docker stop series-troxide\n
Delete the container:
docker rm series-troxide\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-series-troxide/#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-series-troxide.git\ncd docker-series-troxide\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/series-troxide: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
.
Shotcut is a free, open source, cross-platform video editor.
"},{"location":"images/docker-shotcut/#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/shotcut: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-shotcut/#application-setup","title":"Application Setup","text":"The application can be accessed at:
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-shotcut/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-shotcut/#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-shotcut/#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-shotcut/#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-shotcut/#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-shotcut/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n shotcut:\n image: lscr.io/linuxserver/shotcut:latest\n container_name: shotcut\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n
"},{"location":"images/docker-shotcut/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=shotcut \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/shotcut:latest\n
"},{"location":"images/docker-shotcut/#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.
-p
)","text":"Parameter Function 3000
Shotcut desktop gui. 3001
Shotcut desktop gui HTTPS."},{"location":"images/docker-shotcut/#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-shotcut/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Where Shotcut should store its config."},{"location":"images/docker-shotcut/#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-shotcut/#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.
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.
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-shotcut/#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-shotcut/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it shotcut /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f shotcut\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' shotcut\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/shotcut:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-shotcut/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull shotcut\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d shotcut\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/shotcut:latest\n
Stop the running container:
docker stop shotcut\n
Delete the container:
docker rm shotcut\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-shotcut/#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-shotcut.git\ncd docker-shotcut\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/shotcut: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
.
Sickchill is an Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.
"},{"location":"images/docker-sickchill/#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/sickchill: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-sickchill/#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.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-sickchill/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n sickchill:\n image: lscr.io/linuxserver/sickchill:latest\n container_name: sickchill\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/sickchill/config:/config\n - /path/to/data:/downloads\n - /path/to/data:/tv\n ports:\n - 8081:8081\n restart: unless-stopped\n
"},{"location":"images/docker-sickchill/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=sickchill \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8081:8081 \\\n -v /path/to/sickchill/config:/config \\\n -v /path/to/data:/downloads \\\n -v /path/to/data:/tv \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sickchill:latest\n
"},{"location":"images/docker-sickchill/#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.
-p
)","text":"Parameter Function 8081
will map the container's port 8081 to port 8081 on the host"},{"location":"images/docker-sickchill/#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-sickchill/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files /downloads
this will store any downloaded data on the docker host /tv
this will allow sickchill to view what you already have"},{"location":"images/docker-sickchill/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sickchill/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-sickchill/#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-sickchill/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it sickchill /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f sickchill\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickchill\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickchill:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-sickchill/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull sickchill\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d sickchill\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/sickchill:latest\n
Stop the running container:
docker stop sickchill\n
Delete the container:
docker rm sickchill\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-sickchill/#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-sickchill.git\ncd docker-sickchill\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sickchill: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
.
SickGear provides management of TV shows and/or Anime, it detects new episodes, links downloader apps, and more..
For more information on SickGear visit their website and check it out: https://github.com/SickGear/SickGear
"},{"location":"images/docker-sickgear/#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/sickgear: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-sickgear/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-sickgear/#setting-up-the-application","title":"Setting up the application","text":"Access the webui at <your-ip>:8081
, for more information check out SickGear.
Non linuxserver.io containers are known to have the following configuration differences and may need SickGear or docker changes to migrate an existing setup
The post processing directory which is volume mounted as downloads
within this container may be incoming
in other versions.
The permissions environmental variables which are defined as PGID
and PUID
within this container may have been APP_UID
and APP_UID
in other versions.
The configuration file directory which is volume mounted as config
within this container may be set as the environmental variable APP_DATA
in other versions.
The cache directory which is set in config.ini
may be configured as a fixed path cache_dir = /data/cache
. Symptoms of this issue include port usage problems and a failure to start the web server log entries. Whilst the container is stopped alter this directive to cache_dir = cache
which will allow SickGear to look for the folder relative to the volume mounted /config
directory.
It is recommended that a clean install be completed, rather than a migration, however if migration is necessary:
start a new instance of this image
compare and align SickGear version numbers between old and new. Ideally they should match but at a minimum the old version should be a lower version number to allow SickGear itself to try and migrate
stop both containers
notice the configuration difference and migrate copies of the old settings into the new app
start the new container and test
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-sickgear/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n sickgear:\n image: lscr.io/linuxserver/sickgear:latest\n container_name: sickgear\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/sickgear/data:/config\n - /path/to/data:/tv\n - /path/to/data:/downloads\n ports:\n - 8081:8081\n restart: unless-stopped\n
"},{"location":"images/docker-sickgear/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=sickgear \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8081:8081 \\\n -v /path/to/sickgear/data:/config \\\n -v /path/to/data:/tv \\\n -v /path/to/data:/downloads \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sickgear:latest\n
"},{"location":"images/docker-sickgear/#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.
-p
)","text":"Parameter Function 8081
will map the container's port 8081 to port 8081 on the host"},{"location":"images/docker-sickgear/#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-sickgear/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent configuration files. /tv
where you store your tv shows /downloads
your downloads folder for post processing (must not be download in progress)"},{"location":"images/docker-sickgear/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sickgear/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-sickgear/#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-sickgear/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it sickgear /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f sickgear\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sickgear\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sickgear:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-sickgear/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull sickgear\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d sickgear\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/sickgear:latest\n
Stop the running container:
docker stop sickgear\n
Delete the container:
docker rm sickgear\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-sickgear/#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-sickgear.git\ncd docker-sickgear\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sickgear: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
.
UMASK_SET
in favor of UMASK in baseimage, see above for more information.Smokeping keeps track of your network latency. For a full example of what this application is capable of visit UCDavis.
"},{"location":"images/docker-smokeping/#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/smokeping: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-smokeping/#application-setup","title":"Application Setup","text":"http://<host-ip>/smokeping/smokeping.cgi
. For example, a full URL might look like https://smokeping.yourdomain.com/smokeping/smokeping.cgi
.Targets
file to ping the hosts you're interested in to match the format found there.docker exec smokeping pkill -f -HUP '/usr/bin/perl /usr/s?bin/smokeping(_cgi)?'
, where smokeping
is the container ID.docker restart smokeping
, where smokeping
is the container ID.Targets
file includes items that may or may not work. These are simply to provide examples of configuration.Targets
, Slaves
, and smokeping_secrets
files on the master host, per the documentation.To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-smokeping/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n smokeping:\n image: lscr.io/linuxserver/smokeping:latest\n container_name: smokeping\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MASTER_URL=http://<master-host-ip>:80/smokeping/ #optional\n - SHARED_SECRET=password #optional\n - CACHE_DIR=/tmp #optional\n volumes:\n - /path/to/smokeping/config:/config\n - /path/to/smokeping/data:/data\n ports:\n - 80:80\n restart: unless-stopped\n
"},{"location":"images/docker-smokeping/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=smokeping \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MASTER_URL=http://<master-host-ip>:80/smokeping/ `#optional` \\\n -e SHARED_SECRET=password `#optional` \\\n -e CACHE_DIR=/tmp `#optional` \\\n -p 80:80 \\\n -v /path/to/smokeping/config:/config \\\n -v /path/to/smokeping/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/smokeping:latest\n
"},{"location":"images/docker-smokeping/#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.
-p
)","text":"Parameter Function 80
Allows HTTP access to the internal webserver."},{"location":"images/docker-smokeping/#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. MASTER_URL=http://<master-host-ip>:80/smokeping/
Specify the master url to connect to. Used when in slave mode. SHARED_SECRET=password
Specify the master shared secret for this host. Used when in slave mode. CACHE_DIR=/tmp
Specify the cache directory for this host. Used when in slave mode."},{"location":"images/docker-smokeping/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files /data
Storage location for db and application data (graphs etc)"},{"location":"images/docker-smokeping/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-smokeping/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-smokeping/#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-smokeping/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it smokeping /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f smokeping\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' smokeping\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/smokeping:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-smokeping/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull smokeping\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d smokeping\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/smokeping:latest\n
Stop the running container:
docker stop smokeping\n
Delete the container:
docker rm smokeping\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-smokeping/#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-smokeping.git\ncd docker-smokeping\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/smokeping: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
.
Snapdrop A local file sharing in your browser. Inspired by Apple's Airdrop.
"},{"location":"images/docker-snapdrop/#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/snapdrop: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-snapdrop/#application-setup","title":"Application Setup","text":"Webui is accessible at http://SERVERIP:PORT
"},{"location":"images/docker-snapdrop/#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-snapdrop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n snapdrop:\n image: lscr.io/linuxserver/snapdrop:latest\n container_name: snapdrop\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/snapdrop/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n
"},{"location":"images/docker-snapdrop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=snapdrop \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/snapdrop/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/snapdrop:latest\n
"},{"location":"images/docker-snapdrop/#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.
-p
)","text":"Parameter Function 80
http gui 443
https gui"},{"location":"images/docker-snapdrop/#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-snapdrop/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files"},{"location":"images/docker-snapdrop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-snapdrop/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-snapdrop/#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-snapdrop/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it snapdrop /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f snapdrop\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snapdrop\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snapdrop:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-snapdrop/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull snapdrop\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d snapdrop\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/snapdrop:latest\n
Stop the running container:
docker stop snapdrop\n
Delete the container:
docker rm snapdrop\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-snapdrop/#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-snapdrop.git\ncd docker-snapdrop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/snapdrop: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
.
Snipe-it makes asset management easy. It was built by people solving real-world IT and asset management problems, and a solid UX has always been a top priority. Straightforward design and bulk actions mean getting things done faster.
"},{"location":"images/docker-snipe-it/#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/snipe-it: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-snipe-it/#application-setup","title":"Application Setup","text":"\"Access the webui at <your-ip>:8080
, for more information check out Snipe-it.
This container requires a MySQL or MariaDB server to connect to, we recommend ours
"},{"location":"images/docker-snipe-it/#php-customization","title":"PHP customization","text":"This image uses our NGINX base image all override configuration files for PHP are located in /config/php
.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-snipe-it/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n snipe-it:\n image: lscr.io/linuxserver/snipe-it:latest\n container_name: snipe-it\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - APP_URL=http://localhost:8080\n - MYSQL_PORT_3306_TCP_ADDR=\n - MYSQL_PORT_3306_TCP_PORT=\n - MYSQL_DATABASE=\n - MYSQL_USER=\n - MYSQL_PASSWORD=\n - APP_ENV=production #optional\n - APP_DEBUG=false #optional\n - APP_LOCALE= #optional\n - MAIL_PORT_587_TCP_ADDR=US/Pacific #optional\n - MAIL_PORT_587_TCP_PORT=US/Pacific #optional\n - MAIL_ENV_FROM_ADDR=US/Pacific #optional\n - MAIL_ENV_FROM_NAME=US/Pacific #optional\n - MAIL_ENV_ENCRYPTION=US/Pacific #optional\n - MAIL_ENV_USERNAME=US/Pacific #optional\n - MAIL_ENV_PASSWORD=US/Pacific #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 8080:80\n restart: unless-stopped\n
"},{"location":"images/docker-snipe-it/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=snipe-it \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e APP_URL=http://localhost:8080 \\\n -e MYSQL_PORT_3306_TCP_ADDR= \\\n -e MYSQL_PORT_3306_TCP_PORT= \\\n -e MYSQL_DATABASE= \\\n -e MYSQL_USER= \\\n -e MYSQL_PASSWORD= \\\n -e APP_ENV=production `#optional` \\\n -e APP_DEBUG=false `#optional` \\\n -e APP_LOCALE= `#optional` \\\n -e MAIL_PORT_587_TCP_ADDR=US/Pacific `#optional` \\\n -e MAIL_PORT_587_TCP_PORT=US/Pacific `#optional` \\\n -e MAIL_ENV_FROM_ADDR=US/Pacific `#optional` \\\n -e MAIL_ENV_FROM_NAME=US/Pacific `#optional` \\\n -e MAIL_ENV_ENCRYPTION=US/Pacific `#optional` \\\n -e MAIL_ENV_USERNAME=US/Pacific `#optional` \\\n -e MAIL_ENV_PASSWORD=US/Pacific `#optional` \\\n -p 8080:80 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/snipe-it:latest\n
"},{"location":"images/docker-snipe-it/#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.
-p
)","text":"Parameter Function 80
Snipe-IT Web UI"},{"location":"images/docker-snipe-it/#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=http://localhost:8080
Hostname or IP and port if applicable, be sure to define https/http MYSQL_PORT_3306_TCP_ADDR=
Mysql hostname or IP to use MYSQL_PORT_3306_TCP_PORT=
Mysql port to use MYSQL_DATABASE=
Mysql database to use MYSQL_USER=
Mysql user to use MYSQL_PASSWORD=
Mysql password to use APP_ENV=production
Default is production
but can use testing
or develop
. APP_DEBUG=false
Set to true
to see debugging output in the web UI. APP_LOCALE=
Default is en
. Set to a language from this list. MAIL_PORT_587_TCP_ADDR=US/Pacific
SMTP mail server ip or hostname. MAIL_PORT_587_TCP_PORT=US/Pacific
SMTP mail server port. MAIL_ENV_FROM_ADDR=US/Pacific
The email address mail should be replied to and listed when sent. MAIL_ENV_FROM_NAME=US/Pacific
The name listed on email sent from the default account on the system. MAIL_ENV_ENCRYPTION=US/Pacific
Mail encryption to use e.g. tls
. MAIL_ENV_USERNAME=US/Pacific
SMTP server login username. MAIL_ENV_PASSWORD=US/Pacific
SMTP server login password."},{"location":"images/docker-snipe-it/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Contains your config files and data storage for Snipe-IT"},{"location":"images/docker-snipe-it/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-snipe-it/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-snipe-it/#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-snipe-it/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it snipe-it /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f snipe-it\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' snipe-it\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/snipe-it:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-snipe-it/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull snipe-it\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d snipe-it\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/snipe-it:latest\n
Stop the running container:
docker stop snipe-it\n
Delete the container:
docker rm snipe-it\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-snipe-it/#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-snipe-it.git\ncd docker-snipe-it\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/snipe-it: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
.
Sonarr (formerly NZBdrone) is a PVR for usenet and bittorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them. It can also be configured to automatically upgrade the quality of files already downloaded when a better quality format becomes available.
"},{"location":"images/docker-sonarr/#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/sonarr: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-sonarr/#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 Sonarr develop \u2705 Development releases from Sonarr"},{"location":"images/docker-sonarr/#application-setup","title":"Application Setup","text":"Access the webui at <your-ip>:8989
, for more information check out Sonarr.
We have set /tv
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 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-sonarr/#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-sonarr/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n sonarr:\n image: lscr.io/linuxserver/sonarr:latest\n container_name: sonarr\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/data:/config\n - /path/to/tvseries:/tv #optional\n - /path/to/downloadclient-downloads:/downloads #optional\n ports:\n - 8989:8989\n restart: unless-stopped\n
"},{"location":"images/docker-sonarr/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=sonarr \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8989:8989 \\\n -v /path/to/data:/config \\\n -v /path/to/tvseries:/tv `#optional` \\\n -v /path/to/downloadclient-downloads:/downloads `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sonarr:latest\n
"},{"location":"images/docker-sonarr/#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.
-p
)","text":"Parameter Function 8989
The port for the Sonarr webinterface"},{"location":"images/docker-sonarr/#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-sonarr/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Database and sonarr configs /tv
Location of TV library on disk (See note in Application setup) /downloads
Location of download managers output directory (See note in Application setup)"},{"location":"images/docker-sonarr/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-sonarr/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-sonarr/#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-sonarr/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it sonarr /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f sonarr\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sonarr\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sonarr:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-sonarr/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull sonarr\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d sonarr\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/sonarr:latest\n
Stop the running container:
docker stop sonarr\n
Delete the container:
docker rm sonarr\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-sonarr/#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-sonarr.git\ncd docker-sonarr\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sonarr: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
.
UMASK_SET
in favor of UMASK in baseimage, see above for more information.Speedtest-tracker is a self-hosted internet performance tracking application that runs speedtest checks against Ookla's Speedtest service.
"},{"location":"images/docker-speedtest-tracker/#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/speedtest-tracker: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-speedtest-tracker/#application-setup","title":"Application Setup","text":"Access the web UI at <your-ip>:80
, for more information check out the project documentation.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-speedtest-tracker/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n speedtest-tracker:\n image: lscr.io/linuxserver/speedtest-tracker:latest\n container_name: speedtest-tracker\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DB_CONNECTION=sqlite\n - APP_KEY= #optional\n - DB_HOST= #optional\n - DB_PORT= #optional\n - DB_DATABASE= #optional\n - DB_USERNAME= #optional\n - DB_PASSWORD= #optional\n volumes:\n - /path/to/data:/config\n ports:\n - 80:80\n restart: unless-stopped\n
"},{"location":"images/docker-speedtest-tracker/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=speedtest-tracker \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DB_CONNECTION=sqlite \\\n -e APP_KEY= `#optional` \\\n -e DB_HOST= `#optional` \\\n -e DB_PORT= `#optional` \\\n -e DB_DATABASE= `#optional` \\\n -e DB_USERNAME= `#optional` \\\n -e DB_PASSWORD= `#optional` \\\n -p 80:80 \\\n -v /path/to/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/speedtest-tracker:latest\n
"},{"location":"images/docker-speedtest-tracker/#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.
-p
)","text":"Parameter Function 80
Web UI"},{"location":"images/docker-speedtest-tracker/#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=sqlite
Set the database type to use. sqlite
, pgsql
, or mysql
APP_KEY=
App key used for encrypting stored data. Generate with docker exec speedtest-tracker php /app/www/artisan key:generate --show
DB_HOST=
Database hostname (postgres/mysql). DB_PORT=
Database port (postgres/mysql). DB_DATABASE=
Database name (postgres/mysql). DB_USERNAME=
Database username (postgres/mysql). DB_PASSWORD=
Database password (postgres/mysql)."},{"location":"images/docker-speedtest-tracker/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Contains speedtest-tracker config and database, if using sqlite."},{"location":"images/docker-speedtest-tracker/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-speedtest-tracker/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-speedtest-tracker/#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-speedtest-tracker/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it speedtest-tracker /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f speedtest-tracker\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' speedtest-tracker\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/speedtest-tracker:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-speedtest-tracker/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull speedtest-tracker\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d speedtest-tracker\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/speedtest-tracker:latest\n
Stop the running container:
docker stop speedtest-tracker\n
Delete the container:
docker rm speedtest-tracker\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-speedtest-tracker/#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-speedtest-tracker.git\ncd docker-speedtest-tracker\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/speedtest-tracker: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
.
DB Browser for SQLite is a high quality, visual, open source tool to create, design, and edit database files compatible with SQLite.
"},{"location":"images/docker-sqlitebrowser/#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/sqlitebrowser: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-sqlitebrowser/#application-setup","title":"Application Setup","text":"The application can be accessed at:
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-sqlitebrowser/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-sqlitebrowser/#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-sqlitebrowser/#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-sqlitebrowser/#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-sqlitebrowser/#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-sqlitebrowser/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n sqlitebrowser:\n image: lscr.io/linuxserver/sqlitebrowser:latest\n container_name: sqlitebrowser\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n restart: unless-stopped\n
"},{"location":"images/docker-sqlitebrowser/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=sqlitebrowser \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/sqlitebrowser:latest\n
"},{"location":"images/docker-sqlitebrowser/#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.
-p
)","text":"Parameter Function 3000
Sqlitebrowser desktop gui. 3001
Sqlitebrowser desktop gui HTTPS."},{"location":"images/docker-sqlitebrowser/#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-sqlitebrowser/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Users home directory in the container, stores program settings and potentially dump files."},{"location":"images/docker-sqlitebrowser/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --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-sqlitebrowser/#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.
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.
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-sqlitebrowser/#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-sqlitebrowser/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it sqlitebrowser /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f sqlitebrowser\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' sqlitebrowser\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/sqlitebrowser:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-sqlitebrowser/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull sqlitebrowser\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d sqlitebrowser\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/sqlitebrowser:latest\n
Stop the running container:
docker stop sqlitebrowser\n
Delete the container:
docker rm sqlitebrowser\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-sqlitebrowser/#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-sqlitebrowser.git\ncd docker-sqlitebrowser\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/sqlitebrowser: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
.
SteamOS is an Arch based Linux distribution made by Valve Software. This container is a vanilla Arch install with Steam repositories added for software support. This container will only work with modern AMD/Intel GPUs on a real Linux Host
"},{"location":"images/docker-steamos/#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/steamos: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-steamos/#application-setup","title":"Application Setup","text":"This container is currently in a Beta state and is developing quickly, things will change constantly and it may crash or not function perfectly especially when mixing Steam remote play frame capture with the web based KasmVNC frame capture
SteamOS is designed for specific AMD based hardware, this container will only work properly on a host with a modern AMD GPU or Intel ARC/iGPU
The following limitations currently exist: * You must run the desktop mode initially to login to Steam, then you can switch to STARTUP=BIGPICTURE
* Sunshine is available in both desktop mode (KDE) and BIGPICTURE, but gamepads using Sunshine does not currently work. * In Desktop mode most proton games will kill off kwin_x11 and in turn disable keyboard and gamepad input. For remote play in Desktop mode it is mostly Valve or Linux native titles that function properly. * If games are not launching and are Windows based ensure you have forced a compatibility layer in it's settings to use Proton Experimental or Proton 8. * BIGPICTURE STARTUP mode connecting via Sunshine will have much better game compatibility and generally be less buggy. Titles are running how the Steam Deck expects them to inside a gamescope renderer, outside of the lack of gamepads this works identically to a Deck. * Sunshine auto discovery is not functional, you will need to manually enter the IP in your client. * Remote play does not function well in BIGPICTURE mode, this mode is optimized for a single resolution passed on boot using Sunshine.
To improve compatibility we ingest drivers from vanilla Arch repos, but NVIDIA will never work. This is a limitation of the KasmVNC virtual framebuffer that we use as it only has logic for the DRI3 framework which is not available for NVIDIA. We recommend using a modern RDNA AMD card or Intel ARC card, but lower end GPUs might work for some games we do bundle all the drivers that are possible to install. Compatibility should be on par with the Steam Deck, if it is certified for the Deck it will run in our testing and the game should be fully playable.
The application can be accessed at:
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-steamos/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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\". 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-steamos/#networking","title":"Networking","text":"Windows users will need to disable their firewall for remote play to function in the default setup
The Steam Link application will only function in Host or Macvlan networking modes
Steam network discovery in it's current state is pretty inflexible, to function locally it uses broadcast packets that cannot traverse subnets and this becomes a problem when using a Docker subnet. In the default configuration we recommend forwarding the ports and passing the underlying host's IP using the HOST_IP
environment variable. When the container spins up it will set this IP as it's default route allowing remote play to function over a local network given the client does not have a firewall in the way blocking the traffic. If you never plan to use remote play or only plan on using it fully remote off your LAN through a Valve relay then you can essentially rip out all the logic for Steam port forwarding and passing the host ip to the container.
Optimally Macvlan can be used to give this container a dedicated IP on your network and run closer to how a bridged VM would. This is the most compatible methodology and will avoid any potentially port conflicts.
Host Networking can also be used, but might run into a port conflict with what the container is trying to init and the underlying host.
"},{"location":"images/docker-steamos/#gameplay","title":"Gameplay","text":"Keep in mind this container thinks it is a Steam Deck, games will be optimized for it's controller layout and video settings. To get a desktop Steam experience for remote play or testing there is a desktop shortcut provided Steam Desktop Mode
. Most games will tie themselves to the current desktop resolution as set when you connect to the web interface, a method for setting the resolution via the web interface is being worked on. Authentication (not two factor) is not currently saved when closing and re-opening Steam for any reason when in Deck mode this is also being worked on. This means anytime you restart the container you will need to access the web interface and log back in. It is possible to play games over KasmVNC, but it as a protocol is not currently optimized for gaming. You will experience more frame skipping and latency as compared to Steam remote play.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-steamos/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n steamos:\n image: lscr.io/linuxserver/steamos:latest\n container_name: steamos\n hostname: hostname #optional\n cap_add:\n - NET_ADMIN\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DRINODE=/dev/dri/renderD128\n - HOST_IP=192.168.100.10 #optional\n - STARTUP=KDE #optional\n - RESOLUTION=1920x1080 #optional\n volumes:\n - /path/to/config:/config\n - /dev/input:/dev/input #optional\n - /run/udev/data:/run/udev/data #optional\n ports:\n - 3000:3000\n - 3001:3001\n - 27031-27036:27031-27036/udp #optional\n - 27031-27036:27031-27036 #optional\n - 47984-47990:47984-47990 #optional\n - 48010-48010:48010-48010 #optional\n - 47998-48000:47998-48000/udp #optional\n devices:\n - /dev/dri:/dev/dri\n shm_size: \"1gb\"\n restart: unless-stopped\n
"},{"location":"images/docker-steamos/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=steamos \\\n --hostname=hostname `#optional` \\\n --cap-add=NET_ADMIN \\\n --security-opt seccomp=unconfined \\\n --security-opt apparmor=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DRINODE=/dev/dri/renderD128 \\\n -e HOST_IP=192.168.100.10 `#optional` \\\n -e STARTUP=KDE `#optional` \\\n -e RESOLUTION=1920x1080 `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -p 27031-27036:27031-27036/udp `#optional` \\\n -p 27031-27036:27031-27036 `#optional` \\\n -p 47984-47990:47984-47990 `#optional` \\\n -p 48010-48010:48010-48010 `#optional` \\\n -p 47998-48000:47998-48000/udp `#optional` \\\n -v /path/to/config:/config \\\n -v /dev/input:/dev/input `#optional` \\\n -v /run/udev/data:/run/udev/data `#optional` \\\n --device /dev/dri:/dev/dri \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/steamos:latest\n
"},{"location":"images/docker-steamos/#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.
-p
)","text":"Parameter Function 3000
SteamOS desktop gui. 3001
HTTPS SteamOS desktop gui. 27031-27036/udp
Steam Remote Play Ports (UDP). 27031-27036
Steam Remote Play Ports (TCP). 47984-47990
Sunshine Ports (TCP). 48010-48010
Sunshine Ports (TCP). 47998-48000/udp
Sunshine Ports (UDP)."},{"location":"images/docker-steamos/#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. DRINODE=/dev/dri/renderD128
Specify the render device (GPU) for the contianer to use. HOST_IP=192.168.100.10
Specify the IP of the host, needed for LAN Remote Play. STARTUP=KDE
KDE to boot into desktop mode, BIGPICTURE to boot into gamescope. RESOLUTION=1920x1080
When booting into BIGPICTURE mode the screen resolution will be bound to this value."},{"location":"images/docker-steamos/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Users home directory in the container, stores all files and games. /dev/input
Optional for gamepad support. *Only working for Steam Remote Play /run/udev/data
Optional for gamepad support. *Only working for Steam Remote Play"},{"location":"images/docker-steamos/#device-mappings-device","title":"Device Mappings (--device
)","text":"Parameter Function /dev/dri
Video card passthrough to Steam."},{"location":"images/docker-steamos/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname=
Specify the hostname of the host, this is useful for keeping a persistent hostname between upgrades and identifying the server in the remote play Steam Client. --shm-size=
This is needed for the steam browser to function properly. --security-opt seccomp=unconfined
This is needed to allow kernel syscalls made by Steam. --security-opt apparmor=unconfined
For Debian/Ubuntu hosts Steam needs elevated perms that AppArmor blocks."},{"location":"images/docker-steamos/#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.
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.
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.
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-steamos/#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-steamos/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it steamos /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f steamos\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' steamos\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/steamos:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-steamos/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull steamos\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d steamos\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/steamos:latest\n
Stop the running container:
docker stop steamos\n
Delete the container:
docker rm steamos\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-steamos/#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-steamos.git\ncd docker-steamos\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/steamos: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
.
SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention.
"},{"location":"images/docker-swag/#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/swag: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-swag/#application-setup","title":"Application Setup","text":""},{"location":"images/docker-swag/#validation-and-initial-setup","title":"Validation and initial setup","text":"URL
will be yoursubdomain.duckdns.org
and the SUBDOMAINS
can be www,ftp,cloud
with http validation, or wildcard
with dns validation. You can use our duckdns image to update your IP on duckdns.org.http
validation, port 80 on the internet side of the router should be forwarded to this container's port 80dns
validation, make sure to enter your credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf
yoursubdomain.duckdns.org
, leave the SUBDOMAINS
variable empty)*.yoursubdomain.duckdns.org
, set the SUBDOMAINS
variable to wildcard
)--cap-add=NET_ADMIN
is required for fail2ban to modify iptableshttps://yourdomain.url
to access the default homepage (http access through port 80 is disabled by default, you can enable it by editing the default site config at /config/nginx/site-confs/default.conf
)./config/log/letsencrypt
to see why the renewals have been failing. It is recommended to input your e-mail in docker parameters so you receive expiration notices from Let's Encrypt in those circumstances.SWAG includes many Certbot plugins out of the box, but not all plugins can be includes. If you need a plugin that is not included, the quickest way to have the plugin available is to use our Universal Package Install Docker Mod.
Set the following environment variables on your container:
DOCKER_MODS=linuxserver/mods:universal-package-install\nINSTALL_PIP_PACKAGES=certbot-dns-<plugin>\n
Set the required credentials (usually found in the plugin documentation) in /config/dns-conf/<plugin>.ini
. It is recommended to attempt obtaining a certificate with STAGING=true
first to make sure the plugin is working as expected.
dhparams.pem
.docker exec -it swag htpasswd -c /config/nginx/.htpasswd <username>
.htpasswd
. For the first user, use the above command, for others, use the above command without the -c
flag, as it will force deletion of the existing .htpasswd
and creation of a new one/config/nginx/site-confs/default.conf
. Feel free to modify this file, and you can add other conf files to this directory. However, if you delete the default
file, a new default will be created on container start.README.md
file under /config/nginx/proxy_confs
for instructions on how to enable them. The preset confs reside in and get imported from this repo.add_header X-Robots-Tag \"noindex, nofollow, nosnippet, noarchive\";
This will ask Google et al not to index and list your site. Be careful with this, as you will eventually be de-listed if you leave this line in on a site you wish to be present on search engines-v /path-to-swag-config:/swag-ssl
) and in the other containers, use the cert location /swag-ssl/keys/letsencrypt/
etc
that resides under /config
in other containers (ie. -v /path-to-swag-config/etc:/swag-ssl
) and in the other containers, use the cert location /swag-ssl/letsencrypt/live/<your.domain.url>/
(This is more secure because the first method shares the entire SWAG config folder with other containers, including the www files, whereas the second method only shares the ssl certs)cert.pem
, chain.pem
, fullchain.pem
and privkey.pem
, which are generated by Certbot and used by nginx and various other appsprivkey.pfx
, a format supported by Microsoft and commonly used by dotnet apps such as Emby Server (no password)priv-fullchain-bundle.pem
, a pem cert that bundles the private key and the fullchain, used by apps like ZNC/config/fail2ban/jail.local
.conf
files, create .local
files with the same name and edit those because .conf files get overwritten when the actions and filters are updated. .local
files will append whatever's in the .conf
files (ie. nginx-http-auth.conf
--> nginx-http-auth.local
)docker exec -it swag fail2ban-client status
docker exec -it swag fail2ban-client status <jail name>
docker exec -it swag fail2ban-client set <jail name> unbanip <IP>
linuxserver/letsencrypt
image","text":"Please follow the instructions on this blog post.
"},{"location":"images/docker-swag/#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-swag/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n swag:\n image: lscr.io/linuxserver/swag:latest\n container_name: swag\n cap_add:\n - NET_ADMIN\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - URL=yourdomain.url\n - VALIDATION=http\n - SUBDOMAINS=www, #optional\n - CERTPROVIDER= #optional\n - DNSPLUGIN=cloudflare #optional\n - PROPAGATION= #optional\n - EMAIL= #optional\n - ONLY_SUBDOMAINS=false #optional\n - EXTRA_DOMAINS= #optional\n - STAGING=false #optional\n volumes:\n - /path/to/swag/config:/config\n ports:\n - 443:443\n - 80:80 #optional\n restart: unless-stopped\n
"},{"location":"images/docker-swag/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=swag \\\n --cap-add=NET_ADMIN \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e URL=yourdomain.url \\\n -e VALIDATION=http \\\n -e SUBDOMAINS=www, `#optional` \\\n -e CERTPROVIDER= `#optional` \\\n -e DNSPLUGIN=cloudflare `#optional` \\\n -e PROPAGATION= `#optional` \\\n -e EMAIL= `#optional` \\\n -e ONLY_SUBDOMAINS=false `#optional` \\\n -e EXTRA_DOMAINS= `#optional` \\\n -e STAGING=false `#optional` \\\n -p 443:443 \\\n -p 80:80 `#optional` \\\n -v /path/to/swag/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/swag:latest\n
"},{"location":"images/docker-swag/#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.
-p
)","text":"Parameter Function 443
Https port 80
Http port (required for http validation and http -> https redirect)"},{"location":"images/docker-swag/#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. URL=yourdomain.url
Top url you have control over (customdomain.com
if you own it, or customsubdomain.ddnsprovider.com
if dynamic dns). VALIDATION=http
Certbot validation method to use, options are http
or dns
(dns
method also requires DNSPLUGIN
variable set). 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
validation only) CERTPROVIDER=
Optionally define the cert provider. Set to zerossl
for ZeroSSL certs (requires existing ZeroSSL account and the e-mail address entered in EMAIL
env var). Otherwise defaults to Let's Encrypt. DNSPLUGIN=cloudflare
Required if VALIDATION
is set to dns
. Options are acmedns
, aliyun
, azure
, bunny
, cloudflare
, cpanel
, desec
, digitalocean
, directadmin
, dnsimple
, dnsmadeeasy
, dnspod
, do
, domeneshop
, dreamhost
, duckdns
, dynudns
, freedns
, gandi
, gehirn
, glesys
, godaddy
, google
, google-domains
, he
, hetzner
, infomaniak
, inwx
, ionos
, linode
, loopia
, luadns
, namecheap
, netcup
, njalla
, nsone
, ovh
, porkbun
, rfc2136
, route53
, sakuracloud
, standalone
, transip
, and vultr
. Also need to enter the credentials into the corresponding ini (or json for some plugins) file under /config/dns-conf
. PROPAGATION=
Optionally override (in seconds) the default propagation time for the dns plugins. EMAIL=
Optional e-mail address used for cert expiration notifications (Required for ZeroSSL). 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
EXTRA_DOMAINS=
Additional fully qualified domain names (comma separated, no spaces) ie. extradomain.com,subdomain.anotherdomain.org,*.anotherdomain.org
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."},{"location":"images/docker-swag/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files"},{"location":"images/docker-swag/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-swag/#portainer-notice","title":"Portainer notice","text":"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.
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.
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.
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-swag/#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-swag/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it swag /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f swag\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' swag\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/swag:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-swag/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull swag\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d swag\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/swag:latest\n
Stop the running container:
docker stop swag\n
Delete the container:
docker rm swag\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-swag/#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-swag.git\ncd docker-swag\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/swag: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
.
priv-fullchain-bundle.pem
.certbot-dns-dynudns
.stream.conf
inside the container to allow users to include their own block in nginx.conf
.google-domains
.STAGING=true
, and failures in revoking.ssl.conf
.SUBDOMAINS
var as optional.resolver.conf
and patch for CVE-2021-32637
.dhparams.pem
per RFC7919. Added worker_processes.conf
, which sets the number of nginx workers, and resolver.conf
, which sets the dns resolver. Both conf files are auto-generated only on first start and can be user modified later.CERTPROVIDER
env var. Update aliyun, domeneshop, inwx and transip dns plugins with the new plugin names. Hide donoteditthisfile.conf
because users were editing it despite its name. Suppress harmless error when no proxy confs are enabled.Synclounge is a third party tool that allows you to watch Plex in sync with your friends/family, wherever you are.
"},{"location":"images/docker-synclounge/#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/synclounge: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-synclounge/#application-setup","title":"Application Setup","text":"The web app and the server are both accessible at http://SERVERIP:8088
.
Note: It is recommended to use http
as the external proto with a reverse proxy due to https
not working with external plex clients.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-synclounge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n synclounge:\n image: lscr.io/linuxserver/synclounge:latest\n container_name: synclounge\n environment:\n - AUTH_LIST=plexuser1,plexuser2,email1,machineid1 #optional\n ports:\n - 8088:8088\n restart: unless-stopped\n
"},{"location":"images/docker-synclounge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=synclounge \\\n -e AUTH_LIST=plexuser1,plexuser2,email1,machineid1 `#optional` \\\n -p 8088:8088 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/synclounge:latest\n
"},{"location":"images/docker-synclounge/#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.
-p
)","text":"Parameter Function 8088
Web app and server port"},{"location":"images/docker-synclounge/#environment-variables-e","title":"Environment Variables (-e
)","text":"Env Function AUTH_LIST=plexuser1,plexuser2,email1,machineid1
If set, only the users defined here and the users of the plex servers defined here will be able to access the server. Use e-mails, plex usernames and/or plex server machine ids, comma separated, no spaces."},{"location":"images/docker-synclounge/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function"},{"location":"images/docker-synclounge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-synclounge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
We publish various Docker Mods to enable additional functionality within the containers. The list of Mods available for this image (if 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-synclounge/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it synclounge /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f synclounge\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' synclounge\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/synclounge:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-synclounge/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull synclounge\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d synclounge\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/synclounge:latest\n
Stop the running container:
docker stop synclounge\n
Delete the container:
docker rm synclounge\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-synclounge/#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-synclounge.git\ncd docker-synclounge\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/synclounge: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
.
AUTOJOIN_ENABLED
& AUTOJOIN_ROOM
options.EXTERNAL_URL
, EXTERNAL_SERVER_PORT
and AUTOJOIN_PASSWORD
are deprecated and no longer have any effect. Env vars AUTOJOIN_ENABLED
and AUTOJOIN_ROOM
are still working but will be removed in the future in favor of synclounge's built-in var autojoin__room
. If you are reverse proxying, do not forget to update your proxy settings (here and here) as the server port and addresses are changed.6aecc9bd
while evaluating the breaking changes upstream.Syncthing replaces proprietary sync and cloud services with something open, trustworthy and decentralized. Your data is your data alone and you deserve to choose where it is stored, if it is shared with some third party and how it's transmitted over the Internet.
"},{"location":"images/docker-syncthing/#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/syncthing: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-syncthing/#application-setup","title":"Application Setup","text":"**Note: ** The Syncthing devs highly suggest setting a password for this container as it listens on 0.0.0.0. To do this go to Actions -> Settings -> set user/password
for the webUI.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-syncthing/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n syncthing:\n image: lscr.io/linuxserver/syncthing:latest\n container_name: syncthing\n hostname: syncthing #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/syncthing/config:/config\n - /path/to/data1:/data1\n - /path/to/data2:/data2\n ports:\n - 8384:8384\n - 22000:22000/tcp\n - 22000:22000/udp\n - 21027:21027/udp\n restart: unless-stopped\n
"},{"location":"images/docker-syncthing/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=syncthing \\\n --hostname=syncthing `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8384:8384 \\\n -p 22000:22000/tcp \\\n -p 22000:22000/udp \\\n -p 21027:21027/udp \\\n -v /path/to/syncthing/config:/config \\\n -v /path/to/data1:/data1 \\\n -v /path/to/data2:/data2 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/syncthing:latest\n
"},{"location":"images/docker-syncthing/#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.
-p
)","text":"Parameter Function 8384
Application WebUI 22000/tcp
Listening port (TCP) 22000/udp
Listening port (UDP) 21027/udp
Protocol discovery"},{"location":"images/docker-syncthing/#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-syncthing/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Configuration files. /data1
Data1 /data2
Data2"},{"location":"images/docker-syncthing/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname=
Optionally the hostname can be defined."},{"location":"images/docker-syncthing/#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.
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.
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-syncthing/#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-syncthing/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it syncthing /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f syncthing\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syncthing\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syncthing:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-syncthing/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull syncthing\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d syncthing\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/syncthing:latest\n
Stop the running container:
docker stop syncthing\n
Delete the container:
docker rm syncthing\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-syncthing/#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-syncthing.git\ncd docker-syncthing\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/syncthing: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
.
UMASK_SET
in favor of UMASK in baseimage, see above for more information.syslog-ng allows you to flexibly collect, parse, classify, rewrite and correlate logs from across your infrastructure and store or route them to log analysis tools.
"},{"location":"images/docker-syslog-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/syslog-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-syslog-ng/#application-setup","title":"Application Setup","text":"Edit /config/syslog-ng.conf
to configure your logging sources and destinations.
The application pid, control file, etc. are all kept in /config so when using tools such as syslog-ng-ctl
you need to specify the path e.g. syslog-ng-ctl reload -c /config/syslog-ng.ctl
More info at syslog-ng.
"},{"location":"images/docker-syslog-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-syslog-ng/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n syslog-ng:\n image: lscr.io/linuxserver/syslog-ng:latest\n container_name: syslog-ng\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/syslog-ng/config:/config\n - /path/to/log:/var/log #optional\n ports:\n - 514:5514/udp\n - 601:6601/tcp\n - 6514:6514/tcp\n restart: unless-stopped\n
"},{"location":"images/docker-syslog-ng/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=syslog-ng \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 514:5514/udp \\\n -p 601:6601/tcp \\\n -p 6514:6514/tcp \\\n -v /path/to/syslog-ng/config:/config \\\n -v /path/to/log:/var/log `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/syslog-ng:latest\n
"},{"location":"images/docker-syslog-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.
-p
)","text":"Parameter Function 5514/udp
Syslog UDP 6601/tcp
Syslog TCP 6514/tcp
Syslog TLS"},{"location":"images/docker-syslog-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-syslog-ng/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Stores config and application files /var/log
Stores logs collected by the syslog-ng service"},{"location":"images/docker-syslog-ng/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-syslog-ng/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-syslog-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-syslog-ng/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it syslog-ng /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f syslog-ng\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' syslog-ng\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/syslog-ng:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-syslog-ng/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull syslog-ng\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d syslog-ng\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/syslog-ng:latest\n
Stop the running container:
docker stop syslog-ng\n
Delete the container:
docker rm syslog-ng\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-syslog-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-syslog-ng.git\ncd docker-syslog-ng\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/syslog-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
.
Tautulli is a python based web application for monitoring, analytics and notifications for Plex Media Server.
"},{"location":"images/docker-tautulli/#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/tautulli: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-tautulli/#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 Tautulli releases develop \u2705 Built at head of Tautulli nightly branch"},{"location":"images/docker-tautulli/#application-setup","title":"Application Setup","text":"Access the webui at <your-ip>:8181
, for more information check out Tautulli. To use the build-in Plex LogViewer you have to add a volume, preferably ReadOnly. Then in tautulli gui settings, under Plex Media Server
, turn on Show Advanced
and set the Logs Folder
to the folder you mapped.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-tautulli/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n tautulli:\n image: lscr.io/linuxserver/tautulli:latest\n container_name: tautulli\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/tautulli/config:/config\n ports:\n - 8181:8181\n restart: unless-stopped\n
"},{"location":"images/docker-tautulli/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=tautulli \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 8181:8181 \\\n -v /path/to/tautulli/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/tautulli:latest\n
"},{"location":"images/docker-tautulli/#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.
-p
)","text":"Parameter Function 8181
WebUI"},{"location":"images/docker-tautulli/#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-tautulli/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files"},{"location":"images/docker-tautulli/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-tautulli/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-tautulli/#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-tautulli/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it tautulli /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f tautulli\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tautulli\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tautulli:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-tautulli/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull tautulli\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d tautulli\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/tautulli:latest\n
Stop the running container:
docker stop tautulli\n
Delete the container:
docker rm tautulli\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-tautulli/#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-tautulli.git\ncd docker-tautulli\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/tautulli: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
.
Thelounge (a fork of shoutIRC) is a web IRC client that you host on your own server.
"},{"location":"images/docker-thelounge/#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/thelounge: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-thelounge/#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. next \u2705 Next Pre-Releases. nightly \u2705 Nightly images from commits in master."},{"location":"images/docker-thelounge/#application-setup","title":"Application Setup","text":"When the application first runs, it will populate its /config
Stop the container
Now from the host, edit /config/config.js
, wherever you've mapped it
In most cases you want the value public: false
to allow named users only
Setting the two prefetch values to true improves usability, but uses more storage
Once you have the configuration you want, save it and start the container again
For each user, run the command
docker exec -it thelounge s6-setuidgid abc thelounge add <user>
You will be prompted to enter a password that will not be echoed.
Saving logs to disk is the default, this consumes more space but allows scrollback.
To log in to the application, browse to http://<hostip>:9000
You should now be prompted for a username and password on the webinterface.
Once logged in, you can add an IRC network. Some defaults are preset for Freenode
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-thelounge/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n thelounge:\n image: lscr.io/linuxserver/thelounge:latest\n container_name: thelounge\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/thelounge/config:/config\n ports:\n - 9000:9000\n restart: unless-stopped\n
"},{"location":"images/docker-thelounge/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=thelounge \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 9000:9000 \\\n -v /path/to/thelounge/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/thelounge:latest\n
"},{"location":"images/docker-thelounge/#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.
-p
)","text":"Parameter Function 9000
Application WebUI"},{"location":"images/docker-thelounge/#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-thelounge/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files"},{"location":"images/docker-thelounge/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-thelounge/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-thelounge/#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-thelounge/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it thelounge /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f thelounge\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' thelounge\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/thelounge:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-thelounge/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull thelounge\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d thelounge\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/thelounge:latest\n
Stop the running container:
docker stop thelounge\n
Delete the container:
docker rm thelounge\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-thelounge/#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-thelounge.git\ncd docker-thelounge\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/thelounge: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
.
Transmission is designed for easy, powerful use. Transmission has the features you want from a BitTorrent client: encryption, a web interface, peer exchange, magnet links, DHT, \u00b5TP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more.
"},{"location":"images/docker-transmission/#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/transmission: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-transmission/#application-setup","title":"Application Setup","text":"Webui is on port 9091, the settings.json file in /config has extra settings not available in the webui. Stop the container before editing it or any changes won't be saved.
"},{"location":"images/docker-transmission/#securing-the-webui-with-a-usernamepassword","title":"Securing the webui with a username/password.","text":"Use the USER
and PASS
variables in docker run/create/compose to set authentication. Do not manually edit the settings.json
to input user/pass, otherwise transmission cannot be stopped cleanly by the s6 supervisor.
This requires \"blocklist-enabled\": true,
to be set. By setting this to true, it is assumed you have also populated blocklist-url
with a valid block list.
The automatic update is a shell script that downloads a blocklist from the url stored in the settings.json, gunzips it, and restarts the transmission daemon.
The automatic update will run once a day at 3am local server time.
"},{"location":"images/docker-transmission/#using-whitelist","title":"Using whitelist","text":"Use WHITELIST
to enable a list of ip as whitelist. This enable support for rpc-whitelist
. When WHITELIST
is empty support for whitelist is disabled.
Use HOST_WHITELIST
to enable an list of dns names as host-whitelist. This enable support for rpc-host-whitelist
. When HOST_WHITELIST
is empty support for host-whitelist is disabled.
Use PEERPORT
to specify the port(s) Transmission should listen on. This disables random port selection. This should be the same as the port mapped in your docker configuration.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-transmission/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n transmission:\n image: lscr.io/linuxserver/transmission:latest\n container_name: transmission\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - TRANSMISSION_WEB_HOME= #optional\n - USER= #optional\n - PASS= #optional\n - WHITELIST= #optional\n - PEERPORT= #optional\n - HOST_WHITELIST= #optional\n volumes:\n - /path/to/data:/config\n - /path/to/downloads:/downloads\n - /path/to/watch/folder:/watch\n ports:\n - 9091:9091\n - 51413:51413\n - 51413:51413/udp\n restart: unless-stopped\n
"},{"location":"images/docker-transmission/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=transmission \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e TRANSMISSION_WEB_HOME= `#optional` \\\n -e USER= `#optional` \\\n -e PASS= `#optional` \\\n -e WHITELIST= `#optional` \\\n -e PEERPORT= `#optional` \\\n -e HOST_WHITELIST= `#optional` \\\n -p 9091:9091 \\\n -p 51413:51413 \\\n -p 51413:51413/udp \\\n -v /path/to/data:/config \\\n -v /path/to/downloads:/downloads \\\n -v /path/to/watch/folder:/watch \\\n --restart unless-stopped \\\n lscr.io/linuxserver/transmission:latest\n
"},{"location":"images/docker-transmission/#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.
-p
)","text":"Parameter Function 9091
WebUI 51413
Torrent Port TCP 51413/udp
Torrent Port UDP"},{"location":"images/docker-transmission/#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. TRANSMISSION_WEB_HOME=
Specify the path to an alternative UI folder. USER=
Specify an optional username for the interface PASS=
Specify an optional password for the interface WHITELIST=
Specify an optional list of comma separated ip whitelist. Fills rpc-whitelist setting. PEERPORT=
Specify an optional port for torrent TCP/UDP connections. Fills peer-port setting. HOST_WHITELIST=
Specify an optional list of comma separated dns name whitelist. Fills rpc-host-whitelist setting."},{"location":"images/docker-transmission/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Where transmission should store config files and logs. /downloads
Local path for downloads. /watch
Watch folder for torrent files."},{"location":"images/docker-transmission/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-transmission/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-transmission/#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-transmission/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it transmission /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f transmission\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' transmission\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/transmission:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-transmission/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull transmission\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d transmission\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/transmission:latest\n
Stop the running container:
docker stop transmission\n
Delete the container:
docker rm transmission\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-transmission/#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-transmission.git\ncd docker-transmission\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/transmission: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
.
Tvheadend works as a proxy server: is a TV streaming server and recorder for Linux, FreeBSD and Android supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT>IP and HDHomeRun as input sources. Tvheadend offers the HTTP (VLC, MPlayer), HTSP (Kodi, Movian) and SAT>IP streaming. Multiple EPG sources are supported (over-the-air DVB and ATSC including OpenTV DVB extensions, XMLTV, PyXML).
"},{"location":"images/docker-tvheadend/#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/tvheadend: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-tvheadend/#application-setup","title":"Application Setup","text":"The setup depends if you run the one of the stable tags or use latest. Running latest is the easiest as it has a setup wizard.
Stable
First thing to do is to go to Configuration --> DVB Inputs --> TV adapters and add your LNB/switch info. Then create a new network in the Networks tab and set the correct pre-defined muxes and orbital position. Go back to the TV adapters tab and add the newly created network under universal LNB. Go back to the Networks tab and mark the network you created earlier and press the Force Scan button. Tvheadend will now scan the muxes for services.
After the scan is done, head to the Services tab and find the services you want as channels, mark them, and press map services. They should now appear under Configuration --> Channel/EPG.
Latest
The first thing to do is to run the setup wizard. If it doesn't pop up at first login, you can find it in Configuration --> General --> Base and click Start Wizard. This will guide you to set up the basic parts of tvheadend.
Configuring XMLTV grabber
To configure the XMLTV grabber, first check if your grabber is listed in Configuration --> Channel/EPG --> EPG Grabber Modules. If it's listed, you will have to configure the grabber before enabling. Find the path in the path field of your grabber. We will use the last part. It starts with tv_grab_. Add it after /usr/bin/ in the below command. There should be no space between Usr/bin/ and the part you added.
docker exec -it -u abc tvheadend /usr/bin/for_you_to_fill_out --configure\n
Now follow the on-screen progress. If you get asked about cache, just accept the default. After you have configured your grabber, you can go back and enable your grabber.
If you already have a configuration file, you can add it in the .xmltv folder where you mapped the /config volume. If it's not created, create it.
Comskip This container comes with Comskip for commercial flagging of recordings. This you have to add in the recording config of tvheadend. Go to Configuration --> Recording. Change the view level to advanced in the top right corner, and add the below in the Post-processor command field.
/usr/bin/comskip --ini=/config/comskip/comskip.ini \"%f\"\n
Now comskip will run after each recording is finished. You will find comskip.ini in the comskip folder of your /config volume mapping. See the Comskip homepage for tuning of the ini file.
FFmpeg
FFmpeg is installed in /usr/bin/ in case you need to use it with pipe.
EPG XML file
If you have EPG data in XML format from a supplier, you can drop it in the data folder of your /config volume mapping. If it doesn't exist, create it. Then choose the XML file grabber in Configuration --> Channel/EPG --> EPG Grabber Modules. If you use WebGrab+Plus, choose the WebGrab+Plus XML file grabber. The XML file goes in the same path as above. The xml file has to be named guide.xml.
For advanced setup of tvheadend, go to [Tvheadend][appurl]
Picons
We have added all the picons from picons in the folder /picons. To enable the use of these picons, add the path to the Channel icon path in Configuration --> General --> Base. You need to enable minimum advanced view level to see the picons options.
"},{"location":"images/docker-tvheadend/#additional-runtime-parameters","title":"Additional runtime parameters","text":"In some cases it might be necessary to start tvheadend with additional parameters, for example to enable debugging or specify webroot for reverse proxy. Be sure to have the right parameters set, as adding the wrong once might lead to the container not starting correctly.
"},{"location":"images/docker-tvheadend/#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-tvheadend/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n tvheadend:\n image: lscr.io/linuxserver/tvheadend:latest\n container_name: tvheadend\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - RUN_OPTS= #optional\n volumes:\n - /path/to/tvheadend/data:/config\n - /path/to/recordings:/recordings\n ports:\n - 9981:9981\n - 9982:9982\n devices:\n - /dev/dri:/dev/dri #optional\n - /dev/dvb:/dev/dvb #optional\n restart: unless-stopped\n
"},{"location":"images/docker-tvheadend/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=tvheadend \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e RUN_OPTS= `#optional` \\\n -p 9981:9981 \\\n -p 9982:9982 \\\n -v /path/to/tvheadend/data:/config \\\n -v /path/to/recordings:/recordings \\\n --device /dev/dri:/dev/dri `#optional` \\\n --device /dev/dvb:/dev/dvb `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/tvheadend:latest\n
"},{"location":"images/docker-tvheadend/#host-vs-bridge","title":"Host vs. Bridge","text":"If you use IPTV, SAT>IP or HDHomeRun, you need to create the container with --net=host and remove the -p flags. This is because to work with these services Tvheadend requires a multicast address of 239.255.255.250
and a UDP port of 1900
which at this time is not possible with docker bridge mode. If you have other host services which also use multicast such as SSDP/DLNA/Emby you may experience stability problems.
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.
-p
)","text":"Parameter Function 9981
WebUI 9982
HTSP server port."},{"location":"images/docker-tvheadend/#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=
Optionally specify additional arguments to be passed. See Additional runtime parameters."},{"location":"images/docker-tvheadend/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Where TVHeadend show store it's config files. /recordings
Where you want the PVR to store recordings."},{"location":"images/docker-tvheadend/#device-mappings-device","title":"Device Mappings (--device
)","text":"Parameter Function /dev/dri
Only needed if you want to use your AMD/Intel GPU for hardware accelerated video encoding (vaapi). /dev/dvb
Only needed if you want to pass through a DVB card to the container. If you use IPTV or HDHomeRun you can leave it out."},{"location":"images/docker-tvheadend/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-tvheadend/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-tvheadend/#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-tvheadend/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it tvheadend /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f tvheadend\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' tvheadend\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/tvheadend:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-tvheadend/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull tvheadend\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d tvheadend\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/tvheadend:latest\n
Stop the running container:
docker stop tvheadend\n
Delete the container:
docker rm tvheadend\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-tvheadend/#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-tvheadend.git\ncd docker-tvheadend\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/tvheadend: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
.
Ubooquity is a free, lightweight and easy-to-use home server for your comics and ebooks. Use it to access your files from anywhere, with a tablet, an e-reader, a phone or a computer.
"},{"location":"images/docker-ubooquity/#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/ubooquity: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-ubooquity/#application-setup","title":"Application Setup","text":"IMPORTANT Ubooquity has now been upgraded to version 2 and for existing v1.x users we recommend cleaning your appdata and reinstalling, due to changes in the application itself making the two versions essentially incompatible with each other. Also the admin page and library pages are now on separate ports as detailed below.
Access the admin page at http://<your-ip>:2203/ubooquity/admin
and set a password.
Then you can access the webui at http://<your-ip>:2202/ubooquity/
This container will automatically scan your files at startup.
"},{"location":"images/docker-ubooquity/#maxmem","title":"MAXMEM","text":"The quantity of memory allocated to Ubooquity depends on the hardware your are running it on. If this quantity is too small, you might sometime saturate it with when performing memory intensive operations. That\u2019s when you get java.lang.OutOfMemoryError:
Java heap space errors.
You can explicitly set the amount of memory Ubooquity is allowed to use (be careful to set a value lower than the actual physical memory of your hardware). Value is a number of megabytes ( put just a number, without MB )
If no value is set it will default to 512MB.
"},{"location":"images/docker-ubooquity/#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-ubooquity/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n ubooquity:\n image: lscr.io/linuxserver/ubooquity:latest\n container_name: ubooquity\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MAXMEM= #optional\n volumes:\n - /path/to/ubooquity/data:/config\n - /path/to/books:/books\n - /path/to/comics:/comics\n - /path/to/raw/files:/files\n ports:\n - 2202:2202\n - 2203:2203\n restart: unless-stopped\n
"},{"location":"images/docker-ubooquity/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=ubooquity \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MAXMEM= `#optional` \\\n -p 2202:2202 \\\n -p 2203:2203 \\\n -v /path/to/ubooquity/data:/config \\\n -v /path/to/books:/books \\\n -v /path/to/comics:/comics \\\n -v /path/to/raw/files:/files \\\n --restart unless-stopped \\\n lscr.io/linuxserver/ubooquity:latest\n
"},{"location":"images/docker-ubooquity/#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.
-p
)","text":"Parameter Function 2202
The library port. 2203
The admin port."},{"location":"images/docker-ubooquity/#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. MAXMEM=
To set the maximum memory. ( ex: set '1024' for 1GB )"},{"location":"images/docker-ubooquity/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Config files and database for ubooquity. /books
Location of books. /comics
Location of comics. /files
Location of raw files."},{"location":"images/docker-ubooquity/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-ubooquity/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-ubooquity/#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-ubooquity/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it ubooquity /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f ubooquity\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' ubooquity\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/ubooquity:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-ubooquity/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull ubooquity\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d ubooquity\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/ubooquity:latest\n
Stop the running container:
docker stop ubooquity\n
Delete the container:
docker rm ubooquity\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-ubooquity/#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-ubooquity.git\ncd docker-ubooquity\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/ubooquity: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
.
The Unifi-network-application software is a powerful, enterprise wireless software engine ideal for high-density client deployments requiring low latency and high uptime performance.
"},{"location":"images/docker-unifi-network-application/#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-network-application: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-unifi-network-application/#application-setup","title":"Application Setup","text":"After setup, the web UI is available at https://ip:8443. The application can be configured, or a backup restored, using the first run wizard.
This container requires an external mongodb database instance.
"},{"location":"images/docker-unifi-network-application/#setting-up-your-external-database","title":"Setting Up Your External Database","text":"Starting with version 8.1 of Unifi Network Application, mongodb 3.6 through 7.0 are supported.
Make sure you pin your database image version and do not use latest
, as mongodb does not support automatic upgrades between major versions.
If you are using the official mongodb container, you can create your user using an init-mongo.js
file with the following contents:
db.getSiblingDB(\"MONGO_DBNAME\").createUser({user: \"MONGO_USER\", pwd: \"MONGO_PASS\", roles: [{role: \"dbOwner\", db: \"MONGO_DBNAME\"}]});\ndb.getSiblingDB(\"MONGO_DBNAME_stat\").createUser({user: \"MONGO_USER\", pwd: \"MONGO_PASS\", roles: [{role: \"dbOwner\", db: \"MONGO_DBNAME_stat\"}]});\n
Being sure to replace the placeholders with the same values you supplied to the Unifi container, and mount it into your mongodb container.
For example:
unifi-db:\n image: docker.io/mongo:<version tag>\n container_name: unifi-db\n volumes:\n - /path/to/data:/data/db\n - /path/to/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro\n restart: unless-stopped\n
Note that the init script method will only work on first run. If you start the mongodb container without an init script it will generate test data automatically and you will have to manually create your databases, or restart with a clean /data/db
volume and an init script mounted.
If you are using the init script method do not also set MONGO_INITDB_ROOT_USERNAME
, MONGO_INITDB_ROOT_PASSWORD
, or any other \"INITDB\" values as they will cause conflicts.
You can also run the commands directly against the database using either mongo
(< 6.0) or mongosh
(>= 6.0).
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).
Note that you must use 8080:8080. If you MUST change the port, it must be changed on both sides and manually changed in your system.properties file. Otherwise, devices will initially communicate and then break after.
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 accessible) ip address.
"},{"location":"images/docker-unifi-network-application/#migration-from-unifi-controller","title":"Migration From Unifi-Controller","text":"If you were using the mongoless
tag for the Unifi Controller container, you can switch directly to the Unifi Network Application container without needing to perform any migration steps.
You cannot perform an in-place upgrade from an existing Unifi-Controller container, you must run a backup and then a restore.
The simplest migration approach is to take a full backup of your existing install, including history, from the Unifi-Controller web UI, then shut down the old container.
You can then start up the new container with a clean /config
mount (and a database container configured), and perform a restore using the setup wizard.
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.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-unifi-network-application/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n unifi-network-application:\n image: lscr.io/linuxserver/unifi-network-application:latest\n container_name: unifi-network-application\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - MONGO_USER=unifi\n - MONGO_PASS=\n - MONGO_HOST=unifi-db\n - MONGO_PORT=27017\n - MONGO_DBNAME=unifi\n - MEM_LIMIT=1024 #optional\n - MEM_STARTUP=1024 #optional\n - MONGO_TLS= #optional\n - MONGO_AUTHSOURCE= #optional\n volumes:\n - /path/to/unifi-network-application/data:/config\n ports:\n - 8443:8443\n - 3478:3478/udp\n - 10001:10001/udp\n - 8080:8080\n - 1900:1900/udp #optional\n - 8843:8843 #optional\n - 8880:8880 #optional\n - 6789:6789 #optional\n - 5514:5514/udp #optional\n restart: unless-stopped\n
"},{"location":"images/docker-unifi-network-application/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=unifi-network-application \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e MONGO_USER=unifi \\\n -e MONGO_PASS= \\\n -e MONGO_HOST=unifi-db \\\n -e MONGO_PORT=27017 \\\n -e MONGO_DBNAME=unifi \\\n -e MEM_LIMIT=1024 `#optional` \\\n -e MEM_STARTUP=1024 `#optional` \\\n -e MONGO_TLS= `#optional` \\\n -e MONGO_AUTHSOURCE= `#optional` \\\n -p 8443:8443 \\\n -p 3478:3478/udp \\\n -p 10001:10001/udp \\\n -p 8080:8080 \\\n -p 1900:1900/udp `#optional` \\\n -p 8843:8843 `#optional` \\\n -p 8880:8880 `#optional` \\\n -p 6789:6789 `#optional` \\\n -p 5514:5514/udp `#optional` \\\n -v /path/to/unifi-network-application/data:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/unifi-network-application:latest\n
"},{"location":"images/docker-unifi-network-application/#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.
-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":"images/docker-unifi-network-application/#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. MONGO_USER=unifi
Mongodb Username. Only evaluated on first run. Special characters must be url encoded. MONGO_PASS=
Mongodb Password. Only evaluated on first run. Special characters must be url encoded. MONGO_HOST=unifi-db
Mongodb Hostname. Only evaluated on first run. MONGO_PORT=27017
Mongodb Port. Only evaluated on first run. MONGO_DBNAME=unifi
Mongodb Database Name (stats DB is automatically suffixed with _stat
). Only evaluated on first run. 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 MONGO_TLS=
Mongodb enable TLS. Only evaluated on first run. MONGO_AUTHSOURCE=
Mongodb authSource. For Atlas set to admin
.Defaults to MONGO_DBNAME
.Only evaluated on first run."},{"location":"images/docker-unifi-network-application/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files"},{"location":"images/docker-unifi-network-application/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-unifi-network-application/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-unifi-network-application/#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-unifi-network-application/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it unifi-network-application /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f unifi-network-application\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' unifi-network-application\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/unifi-network-application:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-unifi-network-application/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull unifi-network-application\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d unifi-network-application\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/unifi-network-application:latest\n
Stop the running container:
docker stop unifi-network-application\n
Delete the container:
docker rm unifi-network-application\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-unifi-network-application/#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-network-application.git\ncd docker-unifi-network-application\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/unifi-network-application:latest .\n
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
.
The LinuxServer.io team brings you another container release featuring:
Find us at:
This image only contains the compiled unrar binaries for Alpine and Ubuntu, and is meant to be ingested by other images during build time. It is not for public consumption.
The currently included binaries are as follows: * /usr/bin/unrar-alpine * /usr/bin/unrar-ubuntu
"},{"location":"images/docker-unrar/#versions","title":"Versions","text":"VSCodium is a community-driven, freely-licensed binary distribution of Microsoft\u2019s editor VS Code.
"},{"location":"images/docker-vscodium/#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/vscodium: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-vscodium/#application-setup","title":"Application Setup","text":"The application can be accessed at:
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-vscodium/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-vscodium/#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-vscodium/#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-vscodium/#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-vscodium/#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-vscodium/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n vscodium:\n image: lscr.io/linuxserver/vscodium:latest\n container_name: vscodium\n cap_add:\n - IPC_LOCK\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n
"},{"location":"images/docker-vscodium/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=vscodium \\\n --cap-add=IPC_LOCK \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/vscodium:latest\n
"},{"location":"images/docker-vscodium/#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.
-p
)","text":"Parameter Function 3000
VSCodium desktop gui. 3001
HTTPS VSCodium desktop gui."},{"location":"images/docker-vscodium/#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-vscodium/#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-vscodium/#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. VSCodium runs in no-sandbox mode without it."},{"location":"images/docker-vscodium/#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.
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.
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.
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-vscodium/#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-vscodium/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it vscodium /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f vscodium\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' vscodium\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/vscodium:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-vscodium/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull vscodium\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d vscodium\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/vscodium:latest\n
Stop the running container:
docker stop vscodium\n
Delete the container:
docker rm vscodium\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-vscodium/#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-vscodium.git\ncd docker-vscodium\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/vscodium: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
.
WebCord can be summarized as a pack of security and privacy hardenings, Discord features reimplementations, Electron / Chromium / Discord bugs workarounds, stylesheets, internal pages and wrapped https://discord.com page, designed to conform with ToS as much as it is possible (or hide the changes that might violate it from Discord's eyes).
"},{"location":"images/docker-webcord/#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/webcord: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-webcord/#application-setup","title":"Application Setup","text":"The application can be accessed at:
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-webcord/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-webcord/#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-webcord/#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-webcord/#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-webcord/#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-webcord/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n webcord:\n image: lscr.io/linuxserver/webcord:latest\n container_name: webcord\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n
"},{"location":"images/docker-webcord/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=webcord \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/webcord:latest\n
"},{"location":"images/docker-webcord/#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.
-p
)","text":"Parameter Function 3000
WebCord desktop gui. 3001
WebCord desktop gui HTTPS."},{"location":"images/docker-webcord/#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-webcord/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Users home directory in the container, stores program settings."},{"location":"images/docker-webcord/#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."},{"location":"images/docker-webcord/#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.
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.
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-webcord/#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-webcord/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it webcord /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f webcord\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webcord\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webcord:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-webcord/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull webcord\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d webcord\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/webcord:latest\n
Stop the running container:
docker stop webcord\n
Delete the container:
docker rm webcord\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-webcord/#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-webcord.git\ncd docker-webcord\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/webcord: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
.
Webgrabplus is a multi-site incremental xmltv epg grabber. It collects tv-program guide data from selected tvguide sites for your favourite channels.
"},{"location":"images/docker-webgrabplus/#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/webgrabplus: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-webgrabplus/#application-setup","title":"Application Setup","text":"To configure WebGrab+Plus follow the documentation
Please note that depending on your host this container may not work with the no-new-privileges=true
security-opt.
Note that there are some things in the guide that does not apply to this container. Below you can find the changes.
The configuration files are found where your config volume is mounted. Do not change the filename tag in the configuration file!
The /data volume mapping is where WebGrab+Plus outputs the xml file. To use the xml file in another program, you have to point it to the host path you mapped the /data volume to.
To adjust the scheduled cron job, you can apply our universal cron mod.
"},{"location":"images/docker-webgrabplus/#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-webgrabplus/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n webgrabplus:\n image: lscr.io/linuxserver/webgrabplus:latest\n container_name: webgrabplus\n hostname: webgrabplus\n mac_address: 00:00:00:00:00:00\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/webgrabplus/config:/config\n - /path/to/data:/data\n restart: unless-stopped\n
"},{"location":"images/docker-webgrabplus/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=webgrabplus \\\n --hostname=webgrabplus \\\n --mac-address=00:00:00:00:00:00 \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -v /path/to/webgrabplus/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/webgrabplus:latest\n
"},{"location":"images/docker-webgrabplus/#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.
-p
)","text":"Parameter Function"},{"location":"images/docker-webgrabplus/#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-webgrabplus/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files /data
Where webgrabplus should store it's data files."},{"location":"images/docker-webgrabplus/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --hostname=
Set the hostname for the container for the license check. --mac-address=
Set the mac_address for the container for the license check."},{"location":"images/docker-webgrabplus/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-webgrabplus/#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-webgrabplus/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it webgrabplus /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f webgrabplus\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webgrabplus\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webgrabplus:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-webgrabplus/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull webgrabplus\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d webgrabplus\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/webgrabplus:latest\n
Stop the running container:
docker stop webgrabplus\n
Delete the container:
docker rm webgrabplus\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-webgrabplus/#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-webgrabplus.git\ncd docker-webgrabplus\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/webgrabplus: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
.
hostname
and mac_address
arguments that are needed for the license check to compose and cli samples.Webtop - Alpine, Ubuntu, Fedora, and Arch based containers containing full desktop environments in officially supported flavors accessible via any modern web browser.
"},{"location":"images/docker-webtop/#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/webtop: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-webtop/#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 XFCE Alpine ubuntu-xfce \u2705 XFCE Ubuntu fedora-xfce \u2705 XFCE Fedora arch-xfce \u2705 XFCE Arch debian-xfce \u2705 XFCE Debian alpine-kde \u2705 KDE Alpine ubuntu-kde \u2705 KDE Ubuntu fedora-kde \u2705 KDE Fedora arch-kde \u2705 KDE Arch debian-kde \u2705 KDE Debian alpine-mate \u2705 MATE Alpine ubuntu-mate \u2705 MATE Ubuntu fedora-mate \u2705 MATE Fedora arch-mate \u2705 MATE Arch debian-mate \u2705 MATE Debian alpine-i3 \u2705 i3 Alpine ubuntu-i3 \u2705 i3 Ubuntu fedora-i3 \u2705 i3 Fedora arch-i3 \u2705 i3 Arch debian-i3 \u2705 i3 Debian alpine-openbox \u2705 Openbox Alpine ubuntu-openbox \u2705 Openbox Ubuntu fedora-openbox \u2705 Openbox Fedora arch-openbox \u2705 Openbox Arch debian-openbox \u2705 Openbox Debian alpine-icewm \u2705 IceWM Alpine ubuntu-icewm \u2705 IceWM Ubuntu fedora-icewm \u2705 IceWM Fedora arch-icewm \u2705 IceWM Arch debian-icewm \u2705 IceWM Debian"},{"location":"images/docker-webtop/#application-setup","title":"Application Setup","text":"The Webtop can be accessed at:
Modern GUI desktop apps (including some flavors terminals) have issues with the latest Docker and syscall compatibility, you can use Docker with the --security-opt seccomp=unconfined
setting to allow these syscalls
Unlike our other containers these Desktops are not designed to be upgraded by Docker, you will keep your home directory but anything you installed system level will be lost if you upgrade an existing container. To keep packages up to date instead use Ubuntu/Debians's own apt, Alpine's apk, Fedora's dnf, or Arch's pacman program
"},{"location":"images/docker-webtop/#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-webtop/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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
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 in openbox for use as a PWA. NO_FULL Do not autmatically fullscreen applications when using openbox."},{"location":"images/docker-webtop/#optional-run-configurations","title":"Optional run configurations","text":"Variable Description --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 applications. Only Open Source drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau)"},{"location":"images/docker-webtop/#language-support-internationalization","title":"Language Support - Internationalization","text":"The environment variable LC_ALL
can be used to start Webtop 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 inside the Webtop depending on what underlying distribution you are running. We only ensure fonts for Latin characters are present. Fonts can be installed with a mod on startup.
To install cjk fonts on startup as an example pass the environment variables (Alpine base):
-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-webtop/#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-webtop/#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-webtop/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n webtop:\n image: lscr.io/linuxserver/webtop:latest\n container_name: webtop\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SUBFOLDER=/ #optional\n - TITLE=Webtop #optional\n volumes:\n - /path/to/data:/config\n - /var/run/docker.sock:/var/run/docker.sock #optional\n ports:\n - 3000:3000\n - 3001:3001\n devices:\n - /dev/dri:/dev/dri #optional\n shm_size: \"1gb\" #optional\n restart: unless-stopped\n
"},{"location":"images/docker-webtop/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=webtop \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SUBFOLDER=/ `#optional` \\\n -e TITLE=Webtop `#optional` \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/data:/config \\\n -v /var/run/docker.sock:/var/run/docker.sock `#optional` \\\n --device /dev/dri:/dev/dri `#optional` \\\n --shm-size=\"1gb\" `#optional` \\\n --restart unless-stopped \\\n lscr.io/linuxserver/webtop:latest\n
"},{"location":"images/docker-webtop/#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.
-p
)","text":"Parameter Function 3000
Web Desktop GUI 3001
Web Desktop GUI HTTPS"},{"location":"images/docker-webtop/#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/
TITLE=Webtop
String which will be used as page/tab title in the web browser."},{"location":"images/docker-webtop/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
abc users home directory /var/run/docker.sock
Docker Socket on the system, if you want to use Docker in the container"},{"location":"images/docker-webtop/#device-mappings-device","title":"Device Mappings (--device
)","text":"Parameter Function /dev/dri
Add this for GL support (Linux hosts only)"},{"location":"images/docker-webtop/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size=
We set this to 1 gig to prevent modern web browsers from crashing --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-webtop/#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.
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.
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-webtop/#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-webtop/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it webtop /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f webtop\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' webtop\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/webtop:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-webtop/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull webtop\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d webtop\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/webtop:latest\n
Stop the running container:
docker stop webtop\n
Delete the container:
docker rm webtop\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-webtop/#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-webtop.git\ncd docker-webtop\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/webtop: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
.
Wikijs A modern, lightweight and powerful wiki app built on NodeJS.
"},{"location":"images/docker-wikijs/#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/wikijs: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-wikijs/#application-setup","title":"Application Setup","text":"Please note that the database configuration environment variables will apply on first run only, after which you will need to directly edit /config/config.yml to change your settings.
For more information please see the official documentation.
"},{"location":"images/docker-wikijs/#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-wikijs/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n wikijs:\n image: lscr.io/linuxserver/wikijs:latest\n container_name: wikijs\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - DB_TYPE=sqlite #optional\n - DB_HOST= #optional\n - DB_PORT= #optional\n - DB_NAME= #optional\n - DB_USER= #optional\n - DB_PASS= #optional\n volumes:\n - /path/to/wikijs/config:/config\n - /path/to/data:/data\n ports:\n - 3000:3000\n restart: unless-stopped\n
"},{"location":"images/docker-wikijs/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=wikijs \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e DB_TYPE=sqlite `#optional` \\\n -e DB_HOST= `#optional` \\\n -e DB_PORT= `#optional` \\\n -e DB_NAME= `#optional` \\\n -e DB_USER= `#optional` \\\n -e DB_PASS= `#optional` \\\n -p 3000:3000 \\\n -v /path/to/wikijs/config:/config \\\n -v /path/to/data:/data \\\n --restart unless-stopped \\\n lscr.io/linuxserver/wikijs:latest\n
"},{"location":"images/docker-wikijs/#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.
-p
)","text":"Parameter Function 3000
Port for Wiki.js's web interface."},{"location":"images/docker-wikijs/#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_TYPE=sqlite
Set to sqlite (default) or postgres depending on the database engine you wish to use DB_HOST=
DB hostname (postgres only) DB_PORT=
DB port (postgres only) DB_NAME=
DB name (postgres only) DB_USER=
DB username (postgres only) DB_PASS=
DB password (postgres only)"},{"location":"images/docker-wikijs/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files /data
Where Wiki.js data is stored."},{"location":"images/docker-wikijs/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-wikijs/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-wikijs/#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-wikijs/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it wikijs /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f wikijs\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wikijs\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wikijs:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-wikijs/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull wikijs\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d wikijs\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/wikijs:latest\n
Stop the running container:
docker stop wikijs\n
Delete the container:
docker rm wikijs\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-wikijs/#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-wikijs.git\ncd docker-wikijs\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/wikijs: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
.
WireGuard\u00ae is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headache. It intends to be considerably more performant than OpenVPN. WireGuard is designed as a general purpose VPN for running on embedded interfaces and super computers alike, fit for many different circumstances. Initially released for the Linux kernel, it is now cross-platform (Windows, macOS, BSD, iOS, Android) and widely deployable. It is currently under heavy development, but already it might be regarded as the most secure, easiest to use, and simplest VPN solution in the industry.
"},{"location":"images/docker-wireguard/#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/wireguard: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-wireguard/#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 based on Alpine without support for compiling Wireguard modules. legacy \u2705 Stable releases with support for compiling Wireguard modules for older kernels."},{"location":"images/docker-wireguard/#application-setup","title":"Application Setup","text":"During container start, it will first check if the wireguard module is already installed and loaded. Kernels newer than 5.6 generally have the wireguard module built-in (along with some older custom kernels). However, the module may not be enabled. Make sure it is enabled prior to starting the container.
This can be run as a server or a client, based on the parameters used.
"},{"location":"images/docker-wireguard/#note-on-iptables","title":"Note on iptables","text":"Some hosts may not load the iptables kernel modules by default. In order for the container to be able to load them, you need to assign the SYS_MODULE
capability and add the optional /lib/modules
volume mount. Alternatively you can modprobe
them from the host before starting the container.
If the environment variable PEERS
is set to a number or a list of strings separated by comma, the container will run in server mode and the necessary server and peer/client confs will be generated. The peer/client config qr codes will be output in the docker log if LOG_CONFS
is set to true
. They will also be saved in text and png format under /config/peerX
in case PEERS
is a variable and an integer or /config/peer_X
in case a list of names was provided instead of an integer.
Variables SERVERURL
, SERVERPORT
, INTERNAL_SUBNET
, PEERDNS
, INTERFACE
, ALLOWEDIPS
and PERSISTENTKEEPALIVE_PEERS
are optional variables used for server mode. Any changes to these environment variables will trigger regeneration of server and peer confs. Peer/client confs will be recreated with existing private/public keys. Delete the peer folders for the keys to be recreated along with the confs.
To add more peers/clients later on, you increment the PEERS
environment variable or add more elements to the list and recreate the container.
To display the QR codes of active peers again, you can use the following command and list the peer numbers as arguments: docker exec -it wireguard /app/show-peer 1 4 5
or docker exec -it wireguard /app/show-peer myPC myPhone myTablet
(Keep in mind that the QR codes are also stored as PNGs in the config folder).
The templates used for server and peer confs are saved under /config/templates
. Advanced users can modify these templates and force conf generation by deleting /config/wg_confs/wg0.conf
and restarting the container.
The container managed server conf is hardcoded to wg0.conf
. However, the users can add additional tunnel config files with .conf
extensions into /config/wg_confs/
and the container will attempt to start them all in alphabetical order. If any one of the tunnels fail, they will all be stopped and the default route will be deleted, requiring user intervention to fix the invalid conf and a container restart.
Do not set the PEERS
environment variable. Drop your client conf(s) into the config folder as /config/wg_confs/<tunnel name>.conf
and start the container. If there are multiple tunnel configs, the container will attempt to start them all in alphabetical order. If any one of the tunnels fail, they will all be stopped and the default route will be deleted, requiring user intervention to fix the invalid conf and a container restart.
If you get IPv6 related errors in the log and connection cannot be established, edit the AllowedIPs
line in your peer/client wg0.conf to include only 0.0.0.0/0
and not ::/0
; and restart the container.
If you plan to use Wireguard both remotely and locally, say on your mobile phone, you will need to consider routing. Most firewalls will not route ports forwarded on your WAN interface correctly to the LAN out of the box. This means that when you return home, even though you can see the Wireguard server, the return packets will probably get lost.
This is not a Wireguard specific issue and the two generally accepted solutions are NAT reflection (setting your edge router/firewall up in such a way as it translates internal packets correctly) or split horizon DNS (setting your internal DNS to return the private rather than public IP when connecting locally).
Both of these approaches have positives and negatives however their setup is out of scope for this document as everyone's network layout and equipment will be different.
"},{"location":"images/docker-wireguard/#maintaining-local-access-to-attached-services","title":"Maintaining local access to attached services","text":"** Note: This is not a supported configuration by Linuxserver.io - use at your own risk.
When routing via Wireguard from another container using the service
option in docker, you might lose access to the containers webUI locally. To avoid this, exclude the docker subnet from being routed via Wireguard by modifying your wg0.conf
like so (modifying the subnets as you require):
[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-wireguard/#site-to-site-vpn","title":"Site-to-site VPN","text":"** Note: This is not a supported configuration by Linuxserver.io - use at your own risk.
Site-to-site VPN in server mode requires customizing the AllowedIPs
statement for a specific peer in wg0.conf
. Since wg0.conf
is autogenerated when server vars are changed, it is not recommended to edit it manually.
In order to customize the AllowedIPs
statement for a specific peer in wg0.conf
, you can set an env var SERVER_ALLOWEDIPS_PEER_<peer name or number>
to the additional subnets you'd like to add, comma separated and excluding the peer IP (ie. \"192.168.1.0/24,192.168.2.0/24\"
). Replace <peer name or number>
with either the name or number of a peer (whichever is used in the PEERS
var).
For instance SERVER_ALLOWEDIPS_PEER_laptop=\"192.168.1.0/24,192.168.2.0/24\"
will result in the wg0.conf entry AllowedIPs = 10.13.13.2,192.168.1.0/24,192.168.2.0/24
for the peer named laptop
.
Keep in mind that this var will only be considered when the confs are regenerated. Adding this var for an existing peer won't force a regeneration. You can delete wg0.conf and restart the container to force regeneration if necessary.
Don't forget to set the necessary POSTUP and POSTDOWN rules in your client's peer conf for lan access.
"},{"location":"images/docker-wireguard/#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-wireguard/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n wireguard:\n image: lscr.io/linuxserver/wireguard:latest\n container_name: wireguard\n cap_add:\n - NET_ADMIN\n - SYS_MODULE #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - SERVERURL=wireguard.domain.com #optional\n - SERVERPORT=51820 #optional\n - PEERS=1 #optional\n - PEERDNS=auto #optional\n - INTERNAL_SUBNET=10.13.13.0 #optional\n - ALLOWEDIPS=0.0.0.0/0 #optional\n - PERSISTENTKEEPALIVE_PEERS= #optional\n - LOG_CONFS=true #optional\n volumes:\n - /path/to/appdata/config:/config\n - /lib/modules:/lib/modules #optional\n ports:\n - 51820:51820/udp\n sysctls:\n - net.ipv4.conf.all.src_valid_mark=1\n restart: unless-stopped\n
"},{"location":"images/docker-wireguard/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=wireguard \\\n --cap-add=NET_ADMIN \\\n --cap-add=SYS_MODULE `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e SERVERURL=wireguard.domain.com `#optional` \\\n -e SERVERPORT=51820 `#optional` \\\n -e PEERS=1 `#optional` \\\n -e PEERDNS=auto `#optional` \\\n -e INTERNAL_SUBNET=10.13.13.0 `#optional` \\\n -e ALLOWEDIPS=0.0.0.0/0 `#optional` \\\n -e PERSISTENTKEEPALIVE_PEERS= `#optional` \\\n -e LOG_CONFS=true `#optional` \\\n -p 51820:51820/udp \\\n -v /path/to/appdata/config:/config \\\n -v /lib/modules:/lib/modules `#optional` \\\n --sysctl=\"net.ipv4.conf.all.src_valid_mark=1\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/wireguard:latest\n
"},{"location":"images/docker-wireguard/#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.
-p
)","text":"Parameter Function 51820/udp
wireguard port"},{"location":"images/docker-wireguard/#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. SERVERURL=wireguard.domain.com
External IP or domain name for docker host. Used in server mode. If set to auto
, the container will try to determine and set the external IP automatically SERVERPORT=51820
External port for docker host. Used in server mode. PEERS=1
Number of peers to create confs for. Required for server mode. Can also be a list of names: myPC,myPhone,myTablet
(alphanumeric only) PEERDNS=auto
DNS server set in peer/client configs (can be set as 8.8.8.8
). Used in server mode. Defaults to auto
, which uses wireguard docker host's DNS via included CoreDNS forward. INTERNAL_SUBNET=10.13.13.0
Internal subnet for the wireguard and server and peers (only change if it clashes). Used in server mode. ALLOWEDIPS=0.0.0.0/0
The IPs/Ranges that the peers will be able to reach using the VPN connection. If not specified the default value is: '0.0.0.0/0, ::0/0' This will cause ALL traffic to route through the VPN, if you want split tunneling, set this to only the IPs you would like to use the tunnel AND the ip of the server's WG ip, such as 10.13.13.1. PERSISTENTKEEPALIVE_PEERS=
Set to all
or a list of comma separated peers (ie. 1,4,laptop
) for the wireguard server to send keepalive packets to listed peers every 25 seconds. Useful if server is accessed via domain name and has dynamic IP. Used only in server mode. LOG_CONFS=true
Generated QR codes will be displayed in the docker log. Set to false
to skip log output."},{"location":"images/docker-wireguard/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Contains all relevant configuration files. /lib/modules
Host kernel modules for situations where they're not already loaded."},{"location":"images/docker-wireguard/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --sysctl=
Required for client mode."},{"location":"images/docker-wireguard/#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.
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.
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.
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-wireguard/#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-wireguard/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it wireguard /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f wireguard\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireguard\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireguard:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-wireguard/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull wireguard\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d wireguard\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/wireguard:latest\n
Stop the running container:
docker stop wireguard\n
Delete the container:
docker rm wireguard\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-wireguard/#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-wireguard.git\ncd docker-wireguard\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/wireguard: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
.
/config/wg_confs/
. Any file with a .conf
extension in that folder will be treated as a live tunnel config and will be attempted to start. If any of the tunnels fail, all tunnels will be stopped. Tunnels are started in alphabetical order. Managed server conf will continue to be hardcoded to wg0.conf
.PersistentKeepalive
to server config for select peers to survive server IP changes when domain name is used.LOG_CONFS
env var. Remove deprecated add-peer
command./config/templates/peer.conf
and restart/config/coredns/Corefile
and restart)./config/coredns/Corefile
and restart).PEERDNS=auto
setting. Update the add-peer
/show-peer
scripts to utilize the templates and the INTERNAL_SUBNET
var (previously missed, oops).INTERNAL_SUBNET
variable to prevent subnet clashes. Add templates for server and peer confs.show-peer
script and include info on host installed headers.Wireshark is the world\u2019s foremost and widely-used network protocol analyzer. It lets you see what\u2019s happening on your network at a microscopic level and is the de facto (and often de jure) standard across many commercial and non-profit enterprises, government agencies, and educational institutions. Wireshark development thrives thanks to the volunteer contributions of networking experts around the globe and is the continuation of a project started by Gerald Combs in 1998.
"},{"location":"images/docker-wireshark/#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/wireshark: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-wireshark/#application-setup","title":"Application Setup","text":"In order to dump from an interface you will need to pass NET_ADMIN
at a minimum, optionally you can use host networking to capture from your host level device or specify a Docker network you want to capture from.
The application can be accessed at:
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-wireshark/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-wireshark/#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-wireshark/#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-wireshark/#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-wireshark/#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-wireshark/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n wireshark:\n image: lscr.io/linuxserver/wireshark:latest\n container_name: wireshark\n cap_add:\n - NET_ADMIN\n security_opt:\n - seccomp:unconfined #optional\n network_mode: host\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000 #optional\n - 3001:3001 #optional\n restart: unless-stopped\n
"},{"location":"images/docker-wireshark/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=wireshark \\\n --net=host \\\n --cap-add=NET_ADMIN \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 `#optional` \\\n -p 3001:3001 `#optional` \\\n -v /path/to/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/wireshark:latest\n
"},{"location":"images/docker-wireshark/#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.
-p
)","text":"Parameter Function 3000
WireShark desktop gui, only use this if you are not using host mode and sniffing Docker network traffic. 3001
WireShark desktop gui HTTPS, only use this if you are not using host mode and sniffing Docker network traffic."},{"location":"images/docker-wireshark/#networking-net","title":"Networking (--net
)","text":"Parameter Function --net=host
Use Host Networking"},{"location":"images/docker-wireshark/#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-wireshark/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Users home directory in the container, stores program settings and potentially dump files."},{"location":"images/docker-wireshark/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --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-wireshark/#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.
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.
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.
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-wireshark/#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-wireshark/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it wireshark /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f wireshark\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wireshark\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wireshark:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-wireshark/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull wireshark\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d wireshark\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/wireshark:latest\n
Stop the running container:
docker stop wireshark\n
Delete the container:
docker rm wireshark\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-wireshark/#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-wireshark.git\ncd docker-wireshark\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/wireshark: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
.
WPS Office is a lightweight, feature-rich comprehensive office suite with high compatibility. As a handy and professional office software, WPS Office allows you to edit files in Writer, Presentation, Spreadsheet, and PDF to improve your work efficiency.
"},{"location":"images/docker-wps-office/#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/wps-office: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-wps-office/#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 Standard English release chinese \u2705 Simplified Chinese version"},{"location":"images/docker-wps-office/#application-setup","title":"Application Setup","text":"The application can be accessed at:
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-wps-office/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-wps-office/#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-wps-office/#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-wps-office/#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-wps-office/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n wps-office:\n image: lscr.io/linuxserver/wps-office:latest\n container_name: wps-office\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n
"},{"location":"images/docker-wps-office/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=wps-office \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/wps-office:latest\n
"},{"location":"images/docker-wps-office/#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.
-p
)","text":"Parameter Function 3000
WPS Office desktop gui. 3001
WPS Office desktop gui HTTPS."},{"location":"images/docker-wps-office/#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-wps-office/#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-wps-office/#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."},{"location":"images/docker-wps-office/#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.
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.
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-wps-office/#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-wps-office/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it wps-office /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f wps-office\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' wps-office\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/wps-office:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-wps-office/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull wps-office\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d wps-office\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/wps-office:latest\n
Stop the running container:
docker stop wps-office\n
Delete the container:
docker rm wps-office\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-wps-office/#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-wps-office.git\ncd docker-wps-office\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/wps-office: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
.
Xbackbone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support.
"},{"location":"images/docker-xbackbone/#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/xbackbone: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-xbackbone/#application-setup","title":"Application Setup","text":"Access the WebUI at <your-ip>:80/443. Follow the installation wizard. For more information, check out XBackBone.
If you want to change the PHP max upload size you can override the php.ini file by adding options in /config/php/php-local.ini
Example:
upload_max_filesize = 25M\n post_max_size = 25M\n
For reverse proxying, remember to change the base_url
in /config/www/xbackbone/config.php
to your domain if you initially set up the application with a local url. E.g. 'base_url' => 'https://images.yourdomain.com',
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-xbackbone/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n xbackbone:\n image: lscr.io/linuxserver/xbackbone:latest\n container_name: xbackbone\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/xbackbone/config:/config\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n
"},{"location":"images/docker-xbackbone/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=xbackbone \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 80:80 \\\n -p 443:443 \\\n -v /path/to/xbackbone/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/xbackbone:latest\n
"},{"location":"images/docker-xbackbone/#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.
-p
)","text":"Parameter Function 80
http gui 443
https gui"},{"location":"images/docker-xbackbone/#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-xbackbone/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files"},{"location":"images/docker-xbackbone/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-xbackbone/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-xbackbone/#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-xbackbone/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it xbackbone /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f xbackbone\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' xbackbone\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/xbackbone:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-xbackbone/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull xbackbone\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d xbackbone\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/xbackbone:latest\n
Stop the running container:
docker stop xbackbone\n
Delete the container:
docker rm xbackbone\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-xbackbone/#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-xbackbone.git\ncd docker-xbackbone\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/xbackbone: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
.
Your_spotify is a self-hosted application that tracks what you listen and offers you a dashboard to explore statistics about it! It's composed of a web server which polls the Spotify API every now and then and a web application on which you can explore your statistics.
"},{"location":"images/docker-your_spotify/#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/your_spotify: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-your_spotify/#application-setup","title":"Application Setup","text":"You have to create a Spotify application through their developer dashboard to get your Client ID and secret. Set the Redirect URI to match your APP_URL address with /api/oauth/spotify/callback
included after the domain (i.e., http://localhost/api/oauth/spotify/callback
).
The application requires an external mongodb database, supported versions are 4.x, 5.x, and 6.x.
This ia an all-in-one container which includes both the server and client components. If you require these to be separate then please use the releases from the your_spotify repo.
"},{"location":"images/docker-your_spotify/#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-your_spotify/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n your_spotify:\n image: lscr.io/linuxserver/your_spotify:latest\n container_name: your_spotify\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n - APP_URL=http://localhost\n - SPOTIFY_PUBLIC=\n - SPOTIFY_SECRET=\n - CORS=http://localhost:80,https://localhost:443\n - MONGO_ENDPOINT=mongodb://mongo:27017/your_spotify\n ports:\n - 80:80\n - 443:443\n restart: unless-stopped\n
"},{"location":"images/docker-your_spotify/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=your_spotify \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -e APP_URL=http://localhost \\\n -e SPOTIFY_PUBLIC= \\\n -e SPOTIFY_SECRET= \\\n -e CORS=http://localhost:80,https://localhost:443 \\\n -e MONGO_ENDPOINT=mongodb://mongo:27017/your_spotify \\\n -p 80:80 \\\n -p 443:443 \\\n --restart unless-stopped \\\n lscr.io/linuxserver/your_spotify:latest\n
"},{"location":"images/docker-your_spotify/#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.
-p
)","text":"Parameter Function 80
your_spotify HTTP webui 443
your_spotify HTTPS webui"},{"location":"images/docker-your_spotify/#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=http://localhost
The protocol and hostname where the app will be accessed. SPOTIFY_PUBLIC=
Your Spotify application client ID. SPOTIFY_SECRET=
Your Spotify application secret. CORS=http://localhost:80,https://localhost:443
Allowed CORS sources, set to all
to allow any source. MONGO_ENDPOINT=mongodb://mongo:27017/your_spotify
Set mongodb endpoint address/port."},{"location":"images/docker-your_spotify/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function"},{"location":"images/docker-your_spotify/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-your_spotify/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-your_spotify/#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-your_spotify/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it your_spotify /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f your_spotify\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' your_spotify\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/your_spotify:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-your_spotify/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull your_spotify\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d your_spotify\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/your_spotify:latest\n
Stop the running container:
docker stop your_spotify\n
Delete the container:
docker rm your_spotify\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-your_spotify/#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-your_spotify.git\ncd docker-your_spotify\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/your_spotify: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
.
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. * GitHub - view the source for all of our repositories. * Open Collective - please consider helping us by either donating or contributing to our budget
"},{"location":"images/docker-yq/#linuxserveryq","title":"linuxserver/yq","text":"yq: Command-line YAML/XML processor - jq wrapper for YAML and XML documents. This image includes yq
, jq
, and xq
.
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/yq
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":"images/docker-yq/#usage","title":"Usage","text":""},{"location":"images/docker-yq/#docker-cli","title":"Docker cli","text":"docker run --rm \\\n -v \"$PWD:$PWD\" \\\n -w=\"$PWD\" \\\n --entrypoint yq \\\n linuxserver/yq \\\n .foo.bar input.yml\n
You can replace the last line with any yq command and argument, which will be passed to yq inside the image. docker run --rm \\\n -v \"$PWD:$PWD\" \\\n -w=\"$PWD\" \\\n --entrypoint jq \\\n linuxserver/yq \\\n .foo.bar input.json\n
You can replace the last line with any jq command and argument, which will be passed to jq inside the image. docker run --rm \\\n -v \"$PWD:$PWD\" \\\n -w=\"$PWD\" \\\n --entrypoint xq \\\n linuxserver/yq \\\n .foo.bar input.xml\n
You can replace the last line with any xq command and argument, which will be passed to xq inside the image."},{"location":"images/docker-yq/#recommended-method","title":"Recommended method","text":"We provide a very convenient script that allows the yq container to run as if it was installed natively:
sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-yq.sh -o /usr/local/bin/yq\nsudo chmod +x /usr/local/bin/yq\n
Running these two commands on your docker host once will let you issue commands such as yq .foo.bar input.yml
and the yq container will do its job behind the scenes. sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-jq.sh -o /usr/local/bin/jq\nsudo chmod +x /usr/local/bin/jq\n
Running these two commands on your docker host once will let you issue commands such as jq .foo.bar input.json
and the jq container will do its job behind the scenes. sudo curl -L --fail https://raw.githubusercontent.com/linuxserver/docker-yq/master/run-xq.sh -o /usr/local/bin/xq\nsudo chmod +x /usr/local/bin/xq\n
Running these two commands on your docker host once will let you issue commands such as xq .foo.bar input.xml
and the xq container will do its job behind the scenes."},{"location":"images/docker-yq/#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":"images/docker-yq/#support-info","title":"Support Info","text":"docker inspect -f '{{ index .Config.Labels \"build_version\" }}' linuxserver/yq
docker pull linuxserver/yq
docker image prune
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-yq.git\ncd docker-yq\ndocker build \\\n --no-cache \\\n --pull \\\n -t linuxserver/yq: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
.
$
in cases where they should not (ex: inside single quotes). Please rerun the Recommended method install/setup commands.Znc is an IRC network bouncer or BNC. It can detach the client from the actual IRC server, and also from selected channels. Multiple clients from different locations can connect to a single ZNC account simultaneously and therefore appear under the same nickname on IRC.
"},{"location":"images/docker-znc/#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/znc: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-znc/#application-setup","title":"Application Setup","text":"To log in to the application, browse to http://<hostip>:6501
.
change password ASAP.
To help you get started creating a container from this image you can either use docker-compose or the docker cli.
"},{"location":"images/docker-znc/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n znc:\n image: lscr.io/linuxserver/znc:latest\n container_name: znc\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/znc/config:/config\n ports:\n - 6501:6501\n restart: unless-stopped\n
"},{"location":"images/docker-znc/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=znc \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 6501:6501 \\\n -v /path/to/znc/config:/config \\\n --restart unless-stopped \\\n lscr.io/linuxserver/znc:latest\n
"},{"location":"images/docker-znc/#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.
-p
)","text":"Parameter Function 6501
Port ZNC listens on."},{"location":"images/docker-znc/#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-znc/#volume-mappings-v","title":"Volume Mappings (-v
)","text":"Volume Function /config
Persistent config files"},{"location":"images/docker-znc/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function"},{"location":"images/docker-znc/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-znc/#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-znc/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it znc /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f znc\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' znc\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/znc:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-znc/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull znc\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d znc\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/znc:latest\n
Stop the running container:
docker stop znc\n
Delete the container:
docker rm znc\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-znc/#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-znc.git\ncd docker-znc\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/znc: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
.
-beta
and -alpha
tags as well as -rc
.Zotero is a free, easy-to-use tool to help you collect, organize, annotate, cite, and share research.
"},{"location":"images/docker-zotero/#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/zotero: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-zotero/#application-setup","title":"Application Setup","text":"The application can be accessed at:
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-zotero/#optional-environment-variables","title":"Optional environment variables","text":"Variable Description CUSTOM_PORT Internal port the container listens on for http if it needs to be swapped from the default 3000. CUSTOM_HTTPS_PORT Internal port the container listens on for https if it needs to be swapped from the default 3001. CUSTOM_USER HTTP Basic auth username, abc is default. PASSWORD HTTP Basic auth password, abc is default. If unset there will be no auth SUBFOLDER Subfolder for the application if running a subfolder reverse proxy, need both slashes IE/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-zotero/#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-zotero/#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-zotero/#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-zotero/#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-zotero/#docker-compose-recommended-click-here-for-more-info","title":"docker-compose (recommended, click here for more info)","text":"---\nservices:\n zotero:\n image: lscr.io/linuxserver/zotero:latest\n container_name: zotero\n security_opt:\n - seccomp:unconfined #optional\n environment:\n - PUID=1000\n - PGID=1000\n - TZ=Etc/UTC\n volumes:\n - /path/to/config:/config\n ports:\n - 3000:3000\n - 3001:3001\n shm_size: \"1gb\"\n restart: unless-stopped\n
"},{"location":"images/docker-zotero/#docker-cli-click-here-for-more-info","title":"docker cli (click here for more info)","text":"docker run -d \\\n --name=zotero \\\n --security-opt seccomp=unconfined `#optional` \\\n -e PUID=1000 \\\n -e PGID=1000 \\\n -e TZ=Etc/UTC \\\n -p 3000:3000 \\\n -p 3001:3001 \\\n -v /path/to/config:/config \\\n --shm-size=\"1gb\" \\\n --restart unless-stopped \\\n lscr.io/linuxserver/zotero:latest\n
"},{"location":"images/docker-zotero/#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.
-p
)","text":"Parameter Function 3000
Zotero gui. 3001
HTTPS Zotero gui."},{"location":"images/docker-zotero/#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-zotero/#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-zotero/#miscellaneous-options","title":"Miscellaneous Options","text":"Parameter Function --shm-size=
This is needed for Chromium 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. Chromium runs in no-sandbox mode without it."},{"location":"images/docker-zotero/#environment-variables-from-files-docker-secrets","title":"Environment variables from files (Docker secrets)","text":"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.
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.
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-zotero/#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-zotero/#support-info","title":"Support Info","text":"Shell access whilst the container is running:
docker exec -it zotero /bin/bash\n
To monitor the logs of the container in realtime:
docker logs -f zotero\n
Container version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' zotero\n
Image version number:
docker inspect -f '{{ index .Config.Labels \"build_version\" }}' lscr.io/linuxserver/zotero:latest\n
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not 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-zotero/#via-docker-compose","title":"Via Docker Compose","text":"Update images:
All images:
docker-compose pull\n
Single image:
docker-compose pull zotero\n
Update containers:
All containers:
docker-compose up -d\n
Single container:
docker-compose up -d zotero\n
You can also remove the old dangling images:
docker image prune\n
Update the image:
docker pull lscr.io/linuxserver/zotero:latest\n
Stop the running container:
docker stop zotero\n
Delete the container:
docker rm zotero\n
Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your /config
folder and settings will be preserved)
You can also remove the old dangling images:
docker image prune\n
Tip
We recommend Diun for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
"},{"location":"images/docker-zotero/#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-zotero.git\ncd docker-zotero\ndocker build \\\n --no-cache \\\n --pull \\\n -t lscr.io/linuxserver/zotero: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
.
/config
for easy user customization. swag SWAG - Secure Web Application Gateway (formerly known as letsencrypt, no relation to Let's Encrypt\u2122) sets up an Nginx webserver and reverse proxy with php support and a built-in certbot client that automates free SSL server certificate generation and renewal processes (Let's Encrypt and ZeroSSL). It also contains fail2ban for intrusion prevention."},{"location":"misc/awesome-lsio/#wiki","title":"Wiki","text":"Container Description bookstack bookstack is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. dillinger dillinger is a cloud-enabled, mobile-ready, offline-storage, AngularJS powered HTML5 Markdown editor. dokuwiki dokuwiki is a simple to use and highly versatile Open Source wiki software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. hedgedoc HedgeDoc gives you access to all your files wherever you are. raneto raneto - is an open source Knowledgebase platform that uses static Markdown files to power your Knowledgebase. wikijs wikijs A modern, lightweight and powerful wiki app built on NodeJS."},{"location":"misc/finances/","title":"Finances","text":"We will at all times attempt to keep a surplus of $6,000 in the bank account, or an amount which covers 3 years of expenses, whichever is higher. All other money will be disbursed by agreement of a general consensus of linuxserver.io staff members.
"},{"location":"misc/finances/#annual-expenses","title":"Annual Expenses","text":"In order for money to be approved for a project, the requesting member must go through every effort to bring to vote a fully formed idea that is ready to be actioned. This means that all the legwork is done before bringing an idea to vote, or at least as much as is reasonably possible. A vote will last for 3 days in order to give all team members the opportunity to participate without unnecessarily causing delays. A general consensus will need to be reached in order for it to proceed.
"},{"location":"misc/finances/#acceptable-uses-of-money","title":"Acceptable uses of money","text":"Any exceptions to this support policy will be clearly called out in the readme for the relevant image.
"},{"location":"misc/support-policy/#formally-supported-images","title":"Formally Supported Images","text":"Any actively maintained image from the LinuxServer organisation, excluding base images, is in scope for support. Note that if you are running an old version of an image we will likely ask you to upgrade to the latest version before providing support, unless your issue is version-specific.
This means that images, tags, and architectures that have been deprecated or archived are not in scope.
"},{"location":"misc/support-policy/#formally-supported-environments","title":"Formally Supported Environments","text":"We build and test all of our images using the latest stable branch of Docker CE using containerd and runc, on Linux, building for x86_64 (amd64) and aarch64 (arm64) architectures. Any matching client environment is in scope for support. In addition, any currently supported version of Docker CE is in scope.
We support the use of both docker compose and the docker CLI to manage containers, though the former is preferred.
We support the running of our containers on Unraid, using our supplied templates. We will not provide support for Unraid itself.
"},{"location":"misc/support-policy/#docker-mods","title":"Docker Mods","text":"Support for the underlying mod logic is within scope for support, however, support for the mods themselves is provided by the listed maintainer of that mod, whether it is published in our mods repo or elsewhere.
"},{"location":"misc/support-policy/#reasonable-endeavours-support","title":"Reasonable Endeavours Support","text":"There are many alternative configurations that should broadly work for most of our images, but we make no guarantees to that effect, and expect that you have a solid understanding of the underlying technologies you're using. Although we do not formally support them, we will endeavour to provide help where we can with any of the following:
The following configurations are entirely unsupported and we will not provide help with them, even if you have been able to get them to work:
/config
mountsThe following configurations are entirely unsupported and you are unlikely to be able to get them to work at all, or experience serious issues if you do:
user
directive to run containers as a custom UID/GIDinit
for DockerThe following configurations don't fit nicely into any single category because \"it depends\". They're not formally supported but we may provide reasonable endeavours support in some cases.
0
) PUID or PGID