We will install Docker as our container engine with IPv6 support; optionally we will install Nvidia drivers and "Nvidia Container Toolkit"; and we will configure SELinux to secure Docker.
- Run:
./scripts/docker_setup.sh admin. Adds the Docker repository, installs it, enables the service, and adds theadminuser to thedockergroup. - Open https://simpledns.plus/private-ipv6 and write down the
Combined/CIDand remove the last block. For examplefda6:80d8:cf96:a065::/64becomesfda6:80d8:cf96::/64. - Edit the script:
nano ./scripts/selinux_setup.sh. - Replace the
fixed-cidr-v6value with the CIDR you just generated through the website. Save and exit withCtrl + X, Y, Enter. - Run:
./scripts/selinux_setup.sh. Enables SELinux in Docker; restarts the Docker service for the changes to take effect; enables the flag that allows containers to manage the network and use the GPU; and installs the SELinux policies. These are required for some containers to be able to access Samba files and interact with WireGuard and for rsync to be able to back up the apps. - Optional: If you have a relatively modern Nvidia card, run:
./scripts/nvidia_setup.sh. Adds "RPM Fusion" and Nvidia repositories to install the driver and "Nvidia Container Toolkit" for Docker. It also registers the "Akmods" key in the Secure Boot chain. It is necessary to reboot and repeat the key enrollment process as we did with ZFS. After rebooting and logging in, don't forget to assumerootwithsudo -i. One optimization you can do is to modify the Nvidia Runtime configuration with:nano /etc/nvidia-container-runtime/config.tomland uncomment the lineno-cgroups = false. Press Ctrl + S to save and Ctrl + X to exit nano. - Run:
./scripts/create_dockhand_folder.shto generate the container directory on the SSD. - Edit the stack file:
nano ./files/dockhand-stack.yml. - Replace
TZ=America/New_Yorkwith your system time zone. You can use this list as a reference: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - Replace the XXX with the
uidandgidof the usermediacenter. You can useid mediacenterto get theuidandgid. - Replace the YYY with the
gidof the groupdocker. You can usegetent group | grep dockerto get thegid. This will allow the container to control Docker through the Docker socket. - Save and exit with
Ctrl + X, Y, Enter. - Run:
./scripts/run_dockhand.sh. This runs a Dockhand container and will listen on port3000. - Configure Dockhand from the browser.
- Access Dockhand through http://server.lan:3000.
- Navigate to "Settings" > "Authentication" > "Users".
- Generate a random password and create user
admin. Bitwarden is recommended again for this. - Go back to "Authentication" > "General" tab and enable "Authentication".
- Refresh the page and login with the new user.
- Navigate to "Settings" > "Notifications" and click "Add channel" button.
- "Name": "Gotify".
- "Type": "Apprise (Webhooks)".
- "URL": "gotifys://hostname/{token}". The {token} is a placeholder which will be replaced later in the guide.
- Click "Add" button.
- Navigate to "Settings" > "Environments".
- Click "Add environment" button.
- "Name": "local".
- "Connection type": "Unix socket".
- "Socket path": "/var/run/docker.sock".
- Navigate to "Security" tab and enable "Vulnerability scanning".
- Navigate to "Notifications" tab and enable the "Gotify" channel.
- Click "Add" button.