Redneck Guide to Docker 20.10.14 on OS 5

This is by no means the best way to go about getting Docker 20.10.14 running on your device. I also leave out some of the specific instructions on how to turn on SSH, use the terminal, etc. Please refer to the forum search and Google for further assistance on these topics.

  1. Download the bin file for your device from the link below:

Release Docker v20.10.14 for WD My Cloud · WDCommunity/wdpksrc · GitHub

  1. Upload/Install the bin file through your NAS’s website in the app section

Note: Recently I updated my Docker container by uploading the most recent bin released by the Great @JediNite - big thank you!

I have ‘hidden’ the below steps as I did not find they were necessary; however, if you encounter a problem, check them out:

Summary

Using FileZilla to SFTP into your NAS, replace the files in

/mnt/HD/HD_a2/Nas_Prog/docker/docker

  • with the files from docker-20.10.14.tgz from the link below:

Release v20.10.14 · JediNite/docker-ce-WDEX4100-binaries · GitHub

  1. If Portainer will not load from port 9000, you will need to change the port. Since this was a new setup, I deleted the below folder.

/mnt/HD/HD_a2/Nas_Prog/docker/portainer

  1. I then modified the update_portainer.sh in the below location

/mnt/HD/HD_a2/Nas_Prog/docker

  • I made the following two changes in the shell script to do two things: (1) update to the latest version of Portainer; and, (2) open up port 9001 and redirect traffic to 9000 so that the container is accessible locally from our browser.

docker pull portainer/portainer-ce

docker run -d -p 9001:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v $(readlink -f ${APKG_PATH})/portainer:/data portainer/portainer-ce

  1. After you upload the new version of the file, run the script by typing in

sh update_portainer.sh

  1. You should now be able to visit [your NASs IP]:9001 to setup your Portainer. Though some users have noted that newer version of Portainer now use port 9443. If you do not do this, you leave your entire NAS wide open. Also, don’t forget to turn off SSH…
7 Likes

Can you explain how @dswv42? Maybe we can get an app version setup to skip all these steps!

For the first time I am thinking about doing Docker again on my other non-WD NAS

If you want to read up there are more active user groups in the other NAS forums


comments directed to ActiveUser – I blame the reply button :slight_smile:

Hey @ActiveUser,

To be honest, I had been leaving the package builds to @Tfl to do and I had been focusing on making sure that each new docker release is available for the arm NAS units on my Github repo. On my own NAS, I actually don’t bother updating the binary for the installs and instead as each release comes out I create a new docker folder (eg. docker-20.10.8) and then create a symbolic link from this folder to a folder called “docker”. When a new release comes out, then just need to stop docker, remove the symbolic link, point to the new folder and restart docker.

I know this is probably not the answer you are looking for.

Cheers,

JediNite

1 Like

Thank you @JediNite for the reply! I’m just glad to hear from you. Having the latest binary on Github is awesome in of itself.

Appreciate your insight into upgrading. This seems like a simple enough solution to updating Docker. It would be great to get this into a guide - for novices like myself…

Great guide, thank you, worked like a charm!
No-one was more surprised than me to see the logon screen appear in my browser!
BUT, one problem, if I try adding a new Environment in Portainer, I get an error message “Failure / xxx url xxx / ping EOF”.
Any idea how to fix this?

I’m sorry to report I have no idea - I truthfully know very little about Docker. Have you tried googling this error message to see if others have encountered it?

And a new and worse problem!

I now can’t access the Portainer logon screen.

If I go to My IP:9001 in whatever browser, I get “Page cannot be found.”

Have rebooted the box, the docker app is running in the WD GUI (although the “Configure” button doesn’t work as it seems to be aimed at Port 9000), I can access all docker/portainer files via WinSCP.

Just no logon screen. It worked fine for about a week and then disappeared. Halp

*SOLVED: Portainer needed a reboot by running update_portainer.sh

Interesting find and glad you found a solution.

this one is driving me crazy - ports are open and should be exposed

I should be able to go to 194.168.0.184:8096 and jellyfin should open
but i can only get portainer to open on 194.168.0.184:9001 (i changed the port from default)

I really have no clue.
ive tried lots of stuff - if there is any info you want let me know.


> 
> 
> {
>     "AppArmorProfile": "",
>     "Args": [],
>     "Config": {
>         "AttachStderr": false,
>         "AttachStdin": false,
>         "AttachStdout": false,
>         "Cmd": null,
>         "Domainname": "",
>         "Entrypoint": [
>             "/init"
>         ],
>         "Env": [
>             "PUID=1000",
>             "PGID=1000",
>             "TZ=Canada/Calgary",
>             "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
>             "DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1",
>             "LC_ALL=en_US.UTF-8",
>             "LANG=en_US.UTF-8",
>             "LANGUAGE=en_US:en",
>             "JELLYFIN_MEDIA_DIR=/media",
>             "JELLYFIN_DATA_DIR=/config",
>             "JELLYFIN_CACHE_DIR=/cache",
>             "JELLYFIN_CONFIG_DIR=/config/config",
>             "JELLYFIN_LOG_DIR=/config/log",
>             "JELLYFIN_WEB_DIR=/jellyfin/jellyfin-web",
>             "JELLYFIN_FFMPEG=/usr/lib/jellyfin-ffmpeg/ffmpeg",
>             "HOME=/root",
>             "TERM=xterm",
>             "NVIDIA_DRIVER_CAPABILITIES=compute,video,utility",
>             "EXPOSE 8096=EXPOSE 8096",
>             "-p 8096:8096=-p 8096:8096"
>         ],
>         "ExposedPorts": {
>             "7359/udp": {},
>             "8096/tcp": {},
>             "8920/tcp": {}
>         },
>         "Hostname": "7a8bb9322751",
>         "Image": "linuxserver/jellyfin:latest",
>         "Labels": {
>             "build_version": "Linuxserver.io version:- 10.7.7-1-ls161 Build-date:- 2022-05-26T05:27:33+02:00",
>             "maintainer": "thelamer",
>             "org.opencontainers.image.authors": "linuxserver.io",
>             "org.opencontainers.image.created": "2022-05-26T05:27:33+02:00",
>             "org.opencontainers.image.description": "[Jellyfin](**newuser had to remove link) 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.",
>             "org.opencontainers.image.documentation": "***new user had to remove link",
>             "org.opencontainers.image.licenses": "GPL-3.0-only",
>             "org.opencontainers.image.ref.name": "02227bfbae131618953e603a930b591f77525de0",
>             "org.opencontainers.image.revision": "02227bfbae131618953e603a930b591f77525de0",
>             "org.opencontainers.image.source": "*** new user had to remove link",
>             "org.opencontainers.image.title": "Jellyfin",
>             "org.opencontainers.image.url": "*** new user had to remove link",
>             "org.opencontainers.image.vendor": "linuxserver.io",
>             "org.opencontainers.image.version": "10.7.7-1-ls161"
>         },
>         "OnBuild": null,
>         "OpenStdin": false,
>         "StdinOnce": false,
>         "Tty": false,
>         "User": "",
>         "Volumes": {
>             "/cache": {},
>             "/config": {},
>             "/data/movies1": {},
>             "/media": {}
>         },
>         "WorkingDir": ""
>     },
>     "Created": "2022-06-15T03:28:09.41498975Z",
>     "Driver": "vfs",
>     "ExecIDs": null,
>     "GraphDriver": {
>         "Data": null,
>         "Name": "vfs"
>     },
>     "HostConfig": {
>         "AutoRemove": false,
>         "Binds": [
>             "/mnt/HD/HD_a2/jellyfin/MOVIES:/data/movies1",
>             "b1019363eefbbdf8760c4bc83563d0df124ce842f5352af12a1a16239140181e:/media",
>             "d0d7d315b3a0bd399d9167866cff9e43ee599ccb429b7ac54b3446b80974b01d:/cache",
>             "/mnt/HD/HD_a2/jellyfin/config:/config"
>         ],
>         "BlkioDeviceReadBps": null,
>         "BlkioDeviceReadIOps": null,
>         "BlkioDeviceWriteBps": null,
>         "BlkioDeviceWriteIOps": null,
>         "BlkioWeight": 0,
>         "BlkioWeightDevice": null,
>         "CapAdd": [
>             "AUDIT_WRITE",
>             "CHOWN",
>             "DAC_OVERRIDE",
>             "FOWNER",
>             "FSETID",
>             "KILL",
>             "MKNOD",
>             "NET_ADMIN",
>             "NET_BIND_SERVICE",
>             "NET_RAW",
>             "SETFCAP",
>             "SETGID",
>             "SETPCAP",
>             "SETUID",
>             "SYS_CHROOT"
>         ],
>         "CapDrop": [
>             "AUDIT_CONTROL",
>             "BLOCK_SUSPEND",
>             "DAC_READ_SEARCH",
>             "IPC_LOCK",
>             "IPC_OWNER",
>             "LEASE",
>             "LINUX_IMMUTABLE",
>             "MAC_ADMIN",
>             "MAC_OVERRIDE",
>             "NET_BROADCAST",
>             "SYSLOG",
>             "SYS_ADMIN",
>             "SYS_BOOT",
>             "SYS_MODULE",
>             "SYS_NICE",
>             "SYS_PACCT",
>             "SYS_PTRACE",
>             "SYS_RAWIO",
>             "SYS_RESOURCE",
>             "SYS_TIME",
>             "SYS_TTY_CONFIG",
>             "WAKE_ALARM"
>         ],
>         "Cgroup": "",
>         "CgroupParent": "",
>         "CgroupnsMode": "host",
>         "ConsoleSize": [
>             0,
>             0
>         ],
>         "ContainerIDFile": "",
>         "CpuCount": 0,
>         "CpuPercent": 0,
>         "CpuPeriod": 0,
>         "CpuQuota": 0,
>         "CpuRealtimePeriod": 0,
>         "CpuRealtimeRuntime": 0,
>         "CpuShares": 0,
>         "CpusetCpus": "",
>         "CpusetMems": "",
>         "DeviceCgroupRules": null,
>         "DeviceRequests": null,
>         "Devices": [],
>         "Dns": [],
>         "DnsOptions": [],
>         "DnsSearch": [],
>         "ExtraHosts": [],
>         "GroupAdd": null,
>         "IOMaximumBandwidth": 0,
>         "IOMaximumIOps": 0,
>         "Init": false,
>         "IpcMode": "private",
>         "Isolation": "",
>         "KernelMemory": 0,
>         "KernelMemoryTCP": 0,
>         "Links": null,
>         "LogConfig": {
>             "Config": {},
>             "Type": "json-file"
>         },
>         "MaskedPaths": [
>             "/proc/asound",
>             "/proc/acpi",
>             "/proc/kcore",
>             "/proc/keys",
>             "/proc/latency_stats",
>             "/proc/timer_list",
>             "/proc/timer_stats",
>             "/proc/sched_debug",
>             "/proc/scsi",
>             "/sys/firmware"
>         ],
>         "Memory": 0,
>         "MemoryReservation": 0,
>         "MemorySwap": 0,
>         "MemorySwappiness": null,
>         "NanoCpus": 0,
>         "NetworkMode": "bridge",
>         "OomKillDisable": false,
>         "OomScoreAdj": 0,
>         "PidMode": "",
>         "PidsLimit": null,
>         "PortBindings": {
>             "7359/udp": [
>                 {
>                     "HostIp": "",
>                     "HostPort": "7359"
>                 }
>             ],
>             "8096/tcp": [
>                 {
>                     "HostIp": "",
>                     "HostPort": "8096"
>                 }
>             ],
>             "8920/tcp": [
>                 {
>                     "HostIp": "",
>                     "HostPort": "8920"
>                 }
>             ]
>         },
>         "Privileged": false,
>         "PublishAllPorts": false,
>         "ReadonlyPaths": [
>             "/proc/bus",
>             "/proc/fs",
>             "/proc/irq",
>             "/proc/sys",
>             "/proc/sysrq-trigger"
>         ],
>         "ReadonlyRootfs": false,
>         "RestartPolicy": {
>             "MaximumRetryCount": 0,
>             "Name": "always"
>         },
>         "Runtime": "runc",
>         "SecurityOpt": null,
>         "ShmSize": 67108864,
>         "UTSMode": "",
>         "Ulimits": null,
>         "UsernsMode": "",
>         "VolumeDriver": "",
>         "VolumesFrom": null
>     },
>     "HostnamePath": "/mnt/HD/HD_a2/Nas_Prog/_docker/containers/712e52099fe530c80fd6fea6fb7936c17ae039e26465b06b264d8f5fbdb87e80/hostname",
>     "HostsPath": "/mnt/HD/HD_a2/Nas_Prog/_docker/containers/712e52099fe530c80fd6fea6fb7936c17ae039e26465b06b264d8f5fbdb87e80/hosts",
>     "Id": "712e52099fe530c80fd6fea6fb7936c17ae039e26465b06b264d8f5fbdb87e80",
>     "Image": "sha256:044fb6a452efe3b0e6c21e2a06b212c03c4262fa41772a9ad395f281b5a9e927",
>     "LogPath": "/mnt/HD/HD_a2/Nas_Prog/_docker/containers/712e52099fe530c80fd6fea6fb7936c17ae039e26465b06b264d8f5fbdb87e80/712e52099fe530c80fd6fea6fb7936c17ae039e26465b06b264d8f5fbdb87e80-json.log",
>     "MountLabel": "",
>     "Mounts": [
>         {
>             "Destination": "/data/movies1",
>             "Mode": "",
>             "Propagation": "rprivate",
>             "RW": true,
>             "Source": "/mnt/HD/HD_a2/jellyfin/MOVIES",
>             "Type": "bind"
>         },
>         {
>             "Destination": "/media",
>             "Driver": "local",
>             "Mode": "z",
>             "Name": "b1019363eefbbdf8760c4bc83563d0df124ce842f5352af12a1a16239140181e",
>             "Propagation": "",
>             "RW": true,
>             "Source": "/mnt/HD/HD_a2/Nas_Prog/_docker/volumes/b1019363eefbbdf8760c4bc83563d0df124ce842f5352af12a1a16239140181e/_data",
>             "Type": "volume"
>         },
>         {
>             "Destination": "/cache",
>             "Driver": "local",
>             "Mode": "z",
>             "Name": "d0d7d315b3a0bd399d9167866cff9e43ee599ccb429b7ac54b3446b80974b01d",
>             "Propagation": "",
>             "RW": true,
>             "Source": "/mnt/HD/HD_a2/Nas_Prog/_docker/volumes/d0d7d315b3a0bd399d9167866cff9e43ee599ccb429b7ac54b3446b80974b01d/_data",
>             "Type": "volume"
>         },
>         {
>             "Destination": "/config",
>             "Mode": "",
>             "Propagation": "rprivate",
>             "RW": true,
>             "Source": "/mnt/HD/HD_a2/jellyfin/config",
>             "Type": "bind"
>         }
>     ],
>     "Name": "/jellyfin",
>     "NetworkSettings": {
>         "Bridge": "",
>         "EndpointID": "7512cc68a11fc562c7c14b412722f6894e3068e2263d9bf1f2368a13c9ea36a9",
>         "Gateway": "172.17.0.1",
>         "GlobalIPv6Address": "",
>         "GlobalIPv6PrefixLen": 0,
>         "HairpinMode": false,
>         "IPAddress": "172.17.0.2",
>         "IPPrefixLen": 16,
>         "IPv6Gateway": "",
>         "LinkLocalIPv6Address": "",
>         "LinkLocalIPv6PrefixLen": 0,
>         "MacAddress": "02:42:ac:11:00:02",
>         "Networks": {
>             "bridge": {
>                 "Aliases": null,
>                 "DriverOpts": null,
>                 "EndpointID": "7512cc68a11fc562c7c14b412722f6894e3068e2263d9bf1f2368a13c9ea36a9",
>                 "Gateway": "172.17.0.1",
>                 "GlobalIPv6Address": "",
>                 "GlobalIPv6PrefixLen": 0,
>                 "IPAMConfig": null,
>                 "IPAddress": "172.17.0.2",
>                 "IPPrefixLen": 16,
>                 "IPv6Gateway": "",
>                 "Links": null,
>                 "MacAddress": "02:42:ac:11:00:02",
>                 "NetworkID": "29dc7eb989fb00071366558be96516754d7601dffab52efa5f33ec6f739db24b"
>             }
>         },
>         "Ports": {
>             "7359/udp": [
>                 {
>                     "HostIp": "0.0.0.0",
>                     "HostPort": "7359"
>                 }
>             ],
>             "8096/tcp": [
>                 {
>                     "HostIp": "0.0.0.0",
>                     "HostPort": "8096"
>                 }
>             ],
>             "8920/tcp": [
>                 {
>                     "HostIp": "0.0.0.0",
>                     "HostPort": "8920"
>                 }
>             ]
>         },
>         "SandboxID": "489406ca128418964df72877703b6e7565e7a4da214d75517bf656211a2daebd",
>         "SandboxKey": "/var/run/docker/netns/489406ca1284",
>         "SecondaryIPAddresses": null,
>         "SecondaryIPv6Addresses": null
>     },
>     "Path": "/init",
>     "Platform": "linux",
>     "Portainer": {
>         "ResourceControl": {
>             "Id": 19,
>             "ResourceId": "712e52099fe530c80fd6fea6fb7936c17ae039e26465b06b264d8f5fbdb87e80",
>             "SubResourceIds": [],
>             "Type": 1,
>             "UserAccesses": [],
>             "TeamAccesses": [],
>             "Public": false,
>             "AdministratorsOnly": true,
>             "System": false
>         }
>     },
>     "ProcessLabel": "",
>     "ResolvConfPath": "/mnt/HD/HD_a2/Nas_Prog/_docker/containers/712e52099fe530c80fd6fea6fb7936c17ae039e26465b06b264d8f5fbdb87e80/resolv.conf",
>     "RestartCount": 0,
>     "State": {
>         "Dead": false,
>         "Error": "",
>         "ExitCode": 0,
>         "FinishedAt": "0001-01-01T00:00:00Z",
>         "OOMKilled": false,
>         "Paused": false,
>         "Pid": 12082,
>         "Restarting": false,
>         "Running": true,
>         "StartedAt": "2022-06-15T03:29:27.942870709Z",
>         "Status": "running"
>     }
> }

Important thing to note, some users have reported that newer versions of Portainer use port 9443.

#WDUserRewards

Has anyone successfully installed Jellyfin on the WD Cloud 4100 docker/portainer using this YouTube method? I don’t understand how to create the file storage for this. Can anyone help?

How to Install Jellyfin on Docker with Portainer

Have you read through this thread @Cloud-User?

Hi
thanks for the thorough tutorial. I was wondering if you could expand a bit on what you mean with the last paragrapah ( setup your Portainer, otherwise you leave your NAS wide open). I set up an admin account with a random generated password, but I didn’t go to the trouble to setup an OAuth. Sorry for my ignorance but does Portaire expose the NAS to the Internet? I haven’t personally setup any reverse proxy or port forwarding service, but now I’m unsure if any of the WD services may cause this.