diff --git a/Dockerfile.complex b/Dockerfile.complex index db4598e..d2c6b11 100644 --- a/Dockerfile.complex +++ b/Dockerfile.complex @@ -1,15 +1,15 @@ ## Buildstage ## -FROM ghcr.io/linuxserver/baseimage-alpine:3.12 as buildstage +FROM ghcr.io/linuxserver/baseimage-alpine:3.15 as buildstage RUN \ - echo "**** install packages ****" && \ - apk add --no-cache \ - curl && \ - echo "**** grab rclone ****" && \ - mkdir -p /root-layer && \ - curl -o \ - /root-layer/rclone.deb -L \ - "https://downloads.rclone.org/v1.47.0/rclone-v1.47.0-linux-amd64.deb" + echo "**** install packages ****" && \ + apk add --no-cache \ + curl && \ + echo "**** grab rclone ****" && \ + mkdir -p /root-layer && \ + curl -o \ + /root-layer/rclone.deb -L \ + "https://downloads.rclone.org/v1.47.0/rclone-v1.47.0-linux-amd64.deb" # copy local files COPY root/ /root-layer/ diff --git a/README.md b/README.md index 761c799..e2c84a5 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ If adding multiple mods, enter them in an array separated by `|`, such as `DOCKE * Fork the repo, create a new branch based on the branch `template`. * Edit the `Dockerfile` for the mod. `Dockerfile.complex` is only an example and included for reference; it should be deleted when done. * Inspect the `root` folder contents. Edit, add and remove as necessary. +* The mod should be compatible with both s6v2 and s6v3 (until s6v2 based baseimages are deprecated). +* After all init scripts and services are created, run `find ./ -name run -exec chmod +x {} +; find ./ -name finish -exec chmod +x {} +` to fix permissions. * Edit this readme with pertinent info, delete these instructions. * Finally edit the `.github/workflows/BuildImage.yml`. Customize the build branch, and the vars for `BASEIMAGE` and `MODNAME`. * Ask the team to create a new branch named `-`. Baseimage should be the name of the image the mod will be applied to. The new branch will be based on the `template` branch. diff --git a/root/etc/cont-init.d/95-apt-get b/root/etc/cont-init.d/95-apt-get new file mode 100644 index 0000000..8e5fe66 --- /dev/null +++ b/root/etc/cont-init.d/95-apt-get @@ -0,0 +1,5 @@ +#!/usr/bin/with-contenv bash + +if [ -f /usr/bin/apt ]; then + apt-get update +fi diff --git a/root/etc/cont-init.d/98-vpn-config b/root/etc/cont-init.d/98-vpn-config index a5f9127..98f2770 100644 --- a/root/etc/cont-init.d/98-vpn-config +++ b/root/etc/cont-init.d/98-vpn-config @@ -4,7 +4,6 @@ if [ ! -f /usr/local/lib/python***/dist-packages/sshuttle ] && \ [ -f /usr/bin/apt ]; then ## Ubuntu - apt-get update apt-get install --no-install-recommends -y \ iptables \ openssh-client \ diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/dependencies.d/init-mods b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/dependencies.d/init-mods new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run new file mode 100755 index 0000000..063b570 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run @@ -0,0 +1,30 @@ +#!/usr/bin/with-contenv bash + +# This is the init file used for adding os or pip packages to install lists. +# It takes advantage of the built-in init-mods-package-install init script that comes with the baseimages. +# If using this, we need to make sure we set this init as a dependency of init-mods-package-install so this one runs first + +if ! command -v apprise; then + echo "**** Adding apprise and its deps to package install lists ****" + echo "apprise" >> /mod-pip-packages-to-install.list + ## Ubuntu + if [ -f /usr/bin/apt ]; then + echo "\ + python3 \ + python3-pip \ + runc" >> /mod-repo-packages-to-install.list + fi + # Alpine + if [ -f /sbin/apk ]; then + echo "\ + cargo \ + libffi-dev \ + openssl-dev \ + python3 \ + python3-dev \ + python3 \ + py3-pip" >> /mod-repo-packages-to-install.list + fi +else + echo "**** apprise already installed, skipping ****" +fi diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/type b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/type new file mode 100644 index 0000000..3d92b15 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/up b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/up new file mode 100644 index 0000000..6414139 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-add-package/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/dependencies.d/init-mods-package-install b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/dependencies.d/init-mods-package-install new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run new file mode 100755 index 0000000..59a4b77 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run @@ -0,0 +1,8 @@ +#!/usr/bin/with-contenv bash + +# This is an install script that is designed to run after init-mods-package-install +# so it can take advantage of packages installed +# init-mods-end depends on this script so that later init and services wait until this script exits + +echo "**** Setting up apprise ****" +apprise blah blah diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/type b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/type new file mode 100644 index 0000000..3d92b15 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/type @@ -0,0 +1 @@ +oneshot \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/up b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/up new file mode 100644 index 0000000..03d298d --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/up @@ -0,0 +1 @@ +/etc/s6-overlay/s6-rc.d/init-mod-imagename-modname-install/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-imagename-modname-install b/root/etc/s6-overlay/s6-rc.d/init-mods-end/dependencies.d/init-mod-imagename-modname-install new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/init-mods-package-install/dependencies.d/init-mod-imagename-modname-add-package b/root/etc/s6-overlay/s6-rc.d/init-mods-package-install/dependencies.d/init-mod-imagename-modname-add-package new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/dependencies.d/init-services b/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/dependencies.d/init-services new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/run b/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/run new file mode 100755 index 0000000..02ffe39 --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/run @@ -0,0 +1,7 @@ +#!/usr/bin/with-contenv bash + +# This is an example service that would run for the mod +# It depends on init-services, the baseimage hook for start of all longrun services + +exec \ + s6-setuidgid abc run my app diff --git a/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/type b/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/type new file mode 100644 index 0000000..1780f9f --- /dev/null +++ b/root/etc/s6-overlay/s6-rc.d/svc-mod-imagename-modname/type @@ -0,0 +1 @@ +longrun \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-add-package b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-add-package new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-install b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-mod-imagename-modname-install new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-mod-imagename-modname b/root/etc/s6-overlay/s6-rc.d/user/contents.d/svc-mod-imagename-modname new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/services.d/sshvpn/run b/root/etc/services.d/sshvpn/run old mode 100644 new mode 100755