Table of Contents
These script can be used to easily deploy LinuxServer.io Docker containers with predefined settings.
The scripts are based on data provided by the LinuxServer.io GitHub repositories.
Please keep the following in mind.
- The scripts are not supported by LinuxServer.io
- The scripts are being generated so I cannot accept requests to add scripts
Prerequisites
- A server with Docker installed
- Git installed
If you do not have Git installed, you can also download the ZIP from the GitHub repository.
Install the scripts
Git clone the repository (or download the ZIP from here).
git clone https://github.com/technorabilia/docker-bits.git
Code language: Bash (bash)
After cloning the repository, change the directory to lsio.
cd docker-bits/lsio
Code language: Bash (bash)
There is one file and a bunch of directories available. One directory for each project.
docker-env.cfg
Code language: Markdown (markdown)
If needed, adjust the base directory for your volume host directories, the Process User ID (PUID
) and Process Group ID (PGID
) and Timezone
(TZ). More information on PUID
and PGID
here.
After changing a variable you need to uncomment that line (remove the # at the beginning of the line). Note that the Docker scripts will default to the values below if they are not set.
#BASEDIR=/volume1/docker
#PUID=1024
#PGID=100
#TZ=Europe/Amsterdam
Code language: Bash (bash)
Application list
All applications on https://fleet.linuxserver.io/ are available as a Docker script. At the time of writing, there are about 140+ applications in the LinuxServer.io fleet.
How to use the scripts
As an example we will have a look at the scripts for Sonarr.
After cloning the repository, change the directory to sonarr.
cd docker-bits/lsio/sonarr
Code language: Bash (bash)
There are three files available.
run-once.sh
docker-compose.yaml
docker-run.sh
Code language: Markdown (markdown)
The script run-once.sh
is used to link to the general settings in docker-env.cfg
and create the volume host directories.
ln -s ../docker-env.cfg ./.env
source ./.env
mkdir -p ${BASEDIR:-/volume1/docker}/sonarr/config
mkdir -p ${BASEDIR:-/volume1/docker}/sonarr/tv
mkdir -p ${BASEDIR:-/volume1/docker}/sonarr/downloads
Code language: Bash (bash)
Run the script.
sh run-once.sh
Code language: Bash (bash)
As the name implies, you only have to do this once. You can delete the script if you want.
The docker-compose.yaml
file can be used with docker-compose
.
# 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.
---
version: "2.1"
services:
sonarr:
image: ghcr.io/linuxserver/sonarr
container_name: sonarr
environment:
# for GroupID
- PUID=${PUID:-1024}
# for UserID
- PGID=${PGID:-100}
# Specify a timezone to use for example Europe/Amsterdam
- TZ=${TZ:-Europe/Amsterdam}
volumes:
# Database and sonarr configs
- ${BASEDIR:-/volume1/docker}/sonarr/config:/config
# Location of TV library on disk (See note in Application setup)
- ${BASEDIR:-/volume1/docker}/sonarr/tv:/tv
# Location of download managers output directory (See note in Application setup)
- ${BASEDIR:-/volume1/docker}/sonarr/downloads:/downloads
ports:
# The port for the Sonarr webinterface
- 8989:8989
restart: unless-stopped
Code language: YAML (yaml)
Start the container.
docker-compose up -d
Code language: Bash (bash)
Docker-compose
is the recommended way to start the container.
Next to docker-compose
, you can also use the docker run
command to start the container.
The docker-run.sh
script is used for this.
# 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.
source ./.env
docker run -d \
--name=sonarr \
-e PUID=${PUID:-1024} `# for GroupID` \
-e PGID=${PGID:-100} `# for UserID` \
-e TZ=${TZ:-Europe/Amsterdam} `# Specify a timezone to use for example Europe/Amsterdam` \
-p 8989:8989 `# The port for the Sonarr webinterface` \
-v ${BASEDIR:-/volume1/docker}/sonarr/config:/config `# Database and sonarr configs` \
-v ${BASEDIR:-/volume1/docker}/sonarr/tv:/tv `# Location of TV library on disk (See note in Application setup)` \
-v ${BASEDIR:-/volume1/docker}/sonarr/downloads:/downloads `# Location of download managers output directory (See note in Application setup)` \
--restart unless-stopped \
ghcr.io/linuxserver/sonarr
Code language: Bash (bash)
Start the container.
sh docker-run.sh
Code language: Bash (bash)
The scripts in action.
root@DS:~# cd ./docker-bits/lsio/sonarr
root@DS:~# sh run-once.sh
root@DS:~# docker-compose up -d
Creating network "sonarr_default" with the default driver
Creating sonarr ... done
root@DS:~# docker-compose down
Stopping sonarr ... done
Removing sonarr ... done
Removing network sonarr_default
root@DS:~# sh docker-run.sh
2d27e4520e57420c12742cbc152aa8bd849f82fcad6aa32bd77f1017f0e15f95
root@DS:~# docker stop sonarr
sonarr
root@DS:~# docker rm sonarr
sonarr
root@DS:~#
Code language: Bash (bash)
Changes to the LinuxServer.io repository data
Because I am using a Synology NAS and for my own convenience, I made some minor changes to the LinuxServer.io data that is used for the scripts.
Volume host directories
Volume host directory information of LinuxServer.io is rewritten so that each individual volume path in the container will map to the following directory on the host.
/volume1/docker/{{ project_name }}/{{ volume_path}}
The default Synology Docker shared folder /volume1/docker
is used as the base directory. You can change the directory or keep it and use a symbolic link to point to another location.
PUID and PGID
The default Synology admin user is used so the Process User ID (PUID
) is 1024 and Process Group ID (PGID
) is 100. More information on PUID
and PGID
here.
Timezone
Timezone (TZ
) is set to Europe/Amsterdam
.
Report issues
If you find a problem, you can submit it on GitHub. I will then look at it as soon as possible.
Considerations
- With the default volume folder structure provided by LinuxServer.io you cannot use hard links. More information here.
- The scripts are updated on a daily basis.
Credits
I would like to give a big thanks to LinuxServer.io for all their hard work! Without them this would not be possible.