| |
---|---|
Table of content | |
+ Meet the Containers | + Quick Migration |
+ Set up a Running Container | + Permissions |
+ Container Configuration | + Updating Images |
+ Access the SickGear Interface | + Tips & Observations |
Official container features | |
containers for SickGear by SickGear | images maintained by SickGear |
easy user and group mappings | quick migration support |
super small base image | regular security updates |
Multiple architecture image support | |
amd64(x86) -- arm64 -- arm32v7(armhf) -- ppc64le -- 386 -- s390x |
Some of the sick innovative gear you get;
• Select a UI style anytime; Regular, Proview I, or Proview II
• View new shows from Trakt, IMDb, TVmaze, AniDB and others
• The longest track record of being stable, reliable, and trusted to work
• Most recent added and updated shows available via menu quick links
• Daily Schedule ... "Day by Day" display upcoming release fanart backgrounds
• Automated search always works to save you time manually picking from lists
• Delete watched episodes from any profile in Kodi, Emby, and/or Plex
• Keep all, or a number of most recent episodes; e.g. keep the last 40 releases
• Built-in source providers for max. efficiency with hit graphs and failure stats
• Used on servers, to smaller SoC devices like RPi, BPi etc.
These official images are made purposefully small and use Alpine Linux with Python 3.
This sickgear/sickgear:latest
image has no moving parts and can be invoked with the --read-only
flag.
The sickgear/sickgear:develop
image uniquely gives access to new developed features.
Official SickGear containers support alternative parameters for hassle free experiences...
- environment variables
PUID
for user andPGID
for group are supported - directory
config
is supported for existing config.ini and database files - directory
downloads
is supported to process incoming media from
To access the SickGear application in a running container, navigate in a browser to <container-host-ip>:8081
Choose container use case | Image tag | Docs |
---|---|---|
Track latest SickGear release | sickgear/sickgear:latest | Read below |
Track latest development features | sickgear/sickgear:develop | Click here |
A basic example of running image:latest as root (not recommended) is:
docker run \
-p 8081:8081 \
-v /storage/sickgear-data:/data \
-v /storage/incoming:/incoming \
-v /storage/tv:/tv \
sickgear/sickgear:latest
where volumes /incoming
and /tv
are mounted to use external data with SickGear.
However, a far better example of running image:latest as a user is:
docker run \
--name=sickgear \
--rm -it \
-e APP_UID=1000 -e APP_GID=44 \
-p 8081:8081 \
-v /storage/sickgear-data:/data \
-v /storage/incoming:/incoming \
-v /storage/tv:/tv \
sickgear/sickgear:latest
which includes a uid and gid since it is not recommended to run services as root.
Tips:
- enter
id username
on the host OS to get uid and gid --name=<value>
secures a name for external apps to refer to a container
Alternatively, the following can be a basis docker-compose.yml
for docker-compose:
version: "3"
services:
sickgear:
container_name: sickgear
image: sickgear/sickgear:latest
environment:
- APP_UID=1000
- APP_GID=44
- TZ=UTC
ports:
- 8081:8081/tcp
volumes:
- /storage/sickgear-data:/data
- /storage/incoming:/incoming
- /storage/tv:/tv
click here for docker-compose help
Configure a SickGear container with the following environment variables and parameters...
Environment | Description for environment variable |
---|---|
-e APP_UID=[number] | run SickGear as user id, default: 0 (root) ownership of /data is changed to this user on startup |
-e APP_GID=[number] | run SickGear as group id, default: 0 useful for making files available for the video or users group |
-e TZ=[string] | manage shows in supplied timezone e.g. Europe/Berlin and used by SickGear's config/General/Interface/Timezone |
Param [host]:[image] | Description for host(ext):image(int) value |
-p 8081:8081 | access port for the SickGear application interface |
-v [/path]:/data | where to store cache, database, and configuraton files |
-v [/path]:/incoming | location where to process incoming media from |
-v [/path]:/tv | location for parent folders to store processed media |
The /data
location can be adjusted using APP_DATA
environment variable, which will override the volume that is normally mounted for ease of access to a physical location.
Warning: The ownership of /data
will be adjusted to match APP_UID and APP_GID, if they are different.
File permissions are only automatically adjusted for /data
, so if user id
is modified via APP_UID
, make sure that user id
has proper permissions for /incoming
and /tv
volumes.
In the above examples, APP_UID was set 1000, and APP_GID set 44, these values were found by running the following on a host Ubuntu set up...
$ id username
uid=1000(username) gid=1000(username) groups=1000(username),4(adm),24(cdrom) ... etc.
This image follows the idea that a container should be ephemeral, meaning that the image does not update itself internally. Therefore, the update procedure is to shut down the image, pull an update image, and start the new image in place of the old one
container id example update:
docker ps
- to get the<container id>
docker stop <container id>
docker pull sickgear/sickgear:latest
- get new imagedocker image prune
- optionally remove dangling imagesdocker run ...
- as above, set up a running container
named sickgear
example update:
docker stop sickgear
docker pull sickgear/sickgear:latest
- get new imagedocker image prune
- optionally remove dangling imagesdocker run ...
- as above, set up a running container
docker-compose example update (omit sickgear
to act on all images):
docker-compose pull sickgear
- update imagedocker-compose up -d sickgear
- update containersdocker image prune
- optionally remove dangling images
Watchtower is a small container utility to simplify or automate updating.
manual Watchtower example update:
-
docker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ --run-once sickgear
docker image prune
- optionally remove old images
automatic Watchtower example update:
-
docker run -d \ --name watchtower \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower \ sickgear watchtower
The last two parameters declare container names to watch and update.
click here for more Watchtower help
docker exec -it sickgear sh
- shell access to the running containerdocker logs -f sickgear
- display sickgear runtime output
- docker cli
read: connection refused
was fixed by explicitly stating the:latest
tag where not including this tag was fine elsewhere - avoided using
~/
in thedocker run...
line as SickGear container failed on startup withcp: can't create '/data/config.ini': Permission denied
- docker failure to run on OSMC was solved with this thread, and by running
sudo update-alternatives --config iptables
, entering1
when prompted (iptables-legacy), and rebooting (docker was installed but its service "Failed to start")
SickGear was sited under namespace ressu/ and then deed02392/ (thanks guys). The backend was fixed Jun 22, 2018 and the image has since been hosted at the official sickgear namespace. Special thanks to resno for his initial help.