From 9b5b8d0956b2c5101087166c4e6992a0490c3ff9 Mon Sep 17 00:00:00 2001 From: thelamer Date: Sun, 19 Mar 2023 16:05:02 -0700 Subject: [PATCH] rebase to new alpine kasmvnc image --- .github/ISSUE_TEMPLATE/issue.bug.yml | 1 - .github/workflows/external_trigger.yml | 2 +- Dockerfile | 8 +- Dockerfile.aarch64 | 8 +- Dockerfile.armhf | 155 ------------------ Jenkinsfile | 74 +-------- README.md | 41 ++++- jenkins-vars.yml | 5 +- readme-vars.yml | 42 ++++- root/defaults/menu.xml | 4 +- .../dependencies.d/init-openboxcopy | 0 .../dependencies.d/init-config | 0 .../s6-overlay/s6-rc.d/init-openboxcopy/run | 8 - .../s6-overlay/s6-rc.d/init-openboxcopy/type | 1 - .../s6-overlay/s6-rc.d/init-openboxcopy/up | 1 - .../s6-rc.d/user/contents.d/init-openboxcopy | 0 16 files changed, 94 insertions(+), 256 deletions(-) delete mode 100644 Dockerfile.armhf delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-openboxcopy delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-openboxcopy/dependencies.d/init-config delete mode 100755 root/etc/s6-overlay/s6-rc.d/init-openboxcopy/run delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-openboxcopy/type delete mode 100644 root/etc/s6-overlay/s6-rc.d/init-openboxcopy/up delete mode 100644 root/etc/s6-overlay/s6-rc.d/user/contents.d/init-openboxcopy diff --git a/.github/ISSUE_TEMPLATE/issue.bug.yml b/.github/ISSUE_TEMPLATE/issue.bug.yml index 59a10f5..ce3d19a 100755 --- a/.github/ISSUE_TEMPLATE/issue.bug.yml +++ b/.github/ISSUE_TEMPLATE/issue.bug.yml @@ -53,7 +53,6 @@ body: options: - x86-64 - arm64 - - armhf validations: required: true - type: textarea diff --git a/.github/workflows/external_trigger.yml b/.github/workflows/external_trigger.yml index b318854..b604efd 100644 --- a/.github/workflows/external_trigger.yml +++ b/.github/workflows/external_trigger.yml @@ -18,7 +18,7 @@ jobs: fi echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_PIDGIN_MASTER\". ****" echo "**** Retrieving external version ****" - EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ + EXT_RELEASE=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.17/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ && awk '/^P:'"pidgin"'$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://') if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then echo "**** Can't retrieve external version, exiting ****" diff --git a/Dockerfile b/Dockerfile index eb7c9e7..618b8bc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # build stage -FROM ghcr.io/linuxserver/baseimage-alpine:3.16 as plugins +FROM ghcr.io/linuxserver/baseimage-alpine:3.17 as plugins RUN \ echo "**** install dev deps ****" && \ @@ -101,7 +101,7 @@ RUN \ make DESTDIR="/buildout" install # runtime stage -FROM ghcr.io/linuxserver/baseimage-rdesktop-web:3.16 +FROM ghcr.io/linuxserver/baseimage-kasmvnc:alpine317 # set version label ARG BUILD_DATE @@ -119,12 +119,12 @@ COPY --from=plugins /buildout/ / RUN \ echo "**** install packages ****" && \ if [ -z ${PIDGIN_VERSION+x} ]; then \ - PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ + PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.17/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ && awk '/^P:pidgin$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ fi && \ apk add --no-cache \ + chromium \ discount \ - firefox-esr \ libpurple-bonjour \ libpurple-xmpp \ libqrencode \ diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index a698628..9112765 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -1,5 +1,5 @@ # build stage -FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.16 as plugins +FROM ghcr.io/linuxserver/baseimage-alpine:arm64v8-3.17 as plugins RUN \ echo "**** install dev deps ****" && \ @@ -101,7 +101,7 @@ RUN \ make DESTDIR="/buildout" install # runtime stage -FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm64v8-3.16 +FROM ghcr.io/linuxserver/baseimage-kasmvnc:arm64v8-alpine317 # set version label ARG BUILD_DATE @@ -119,12 +119,12 @@ COPY --from=plugins /buildout/ / RUN \ echo "**** install packages ****" && \ if [ -z ${PIDGIN_VERSION+x} ]; then \ - PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ + PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.17/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ && awk '/^P:pidgin$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ fi && \ apk add --no-cache \ + chromium \ discount \ - firefox-esr \ libpurple-bonjour \ libpurple-xmpp \ libqrencode \ diff --git a/Dockerfile.armhf b/Dockerfile.armhf deleted file mode 100644 index bafc272..0000000 --- a/Dockerfile.armhf +++ /dev/null @@ -1,155 +0,0 @@ -# build stage -FROM ghcr.io/linuxserver/baseimage-alpine:arm32v7-3.16 as plugins - -RUN \ - echo "**** install dev deps ****" && \ - apk add --no-cache \ - alpine-sdk \ - discount-dev \ - git \ - glib-dev \ - imagemagick \ - json-glib-dev \ - libgcrypt-dev \ - libpng-dev \ - libqrencode-dev \ - libwebp-dev \ - nss-dev \ - openssl-dev \ - pidgin-dev && \ - mkdir /buildout - -RUN \ - echo "**** grab telegram plugin source ****" && \ - TELEGRAM_RELEASE=$(curl -sX GET "https://api.github.com/repos/majn/telegram-purple/releases/latest" \ - | awk '/tag_name/{print $4;exit}' FS='[""]') && \ - git clone https://github.com/majn/telegram-purple.git && \ - cd telegram-purple && \ - git checkout ${TELEGRAM_RELEASE} && \ - git submodule update --init --recursive - -RUN \ - echo "**** build telegram plugin ****" && \ - cd /telegram-purple && \ - ./configure \ - --prefix=/usr && \ - make && \ - make DESTDIR="/buildout" install - -RUN \ - echo "**** grab discord plugin source ****" && \ - git clone https://github.com/EionRobb/purple-discord.git - -RUN \ - echo "**** build discord plugin ****" && \ - cd /purple-discord && \ - make && \ - make DESTDIR="/buildout" install - -RUN \ - echo "**** grab slack plugin source ****" && \ - git clone https://github.com/EionRobb/slack-libpurple.git - -RUN \ - echo "**** build discord plugin ****" && \ - cd /slack-libpurple && \ - make && \ - make DESTDIR="/buildout" install - -RUN \ - echo "**** grab skype plugin source ****" && \ - SKYPE_RELEASE=$(curl -sX GET "https://api.github.com/repos/EionRobb/skype4pidgin/releases/latest" \ - | awk '/tag_name/{print $4;exit}' FS='[""]') && \ - git clone https://github.com/EionRobb/skype4pidgin.git && \ - cd skype4pidgin && \ - git checkout ${SKYPE_RELEASE} - -RUN \ - echo "**** build skype plugin ****" && \ - cd /skype4pidgin/skypeweb && \ - make && \ - make DESTDIR="/buildout" install - -RUN \ - echo "**** grab ICQ wim source ****" && \ - git clone https://github.com/EionRobb/icyque.git - -RUN \ - echo "**** build ICQ wim plugin ****" && \ - cd /icyque && \ - make && \ - make DESTDIR="/buildout" install - -RUN \ - echo "**** grab rocketchat source ****" && \ - git clone https://github.com/EionRobb/purple-rocketchat.git - -RUN \ - echo "**** build rocketchat plugin ****" && \ - cd /purple-rocketchat && \ - make && \ - make DESTDIR="/buildout" install - -RUN \ - echo "**** grab instagram source ****" && \ - git clone https://github.com/EionRobb/purple-instagram.git - -RUN \ - echo "**** build instagram plugin ****" && \ - cd /purple-instagram && \ - make && \ - make DESTDIR="/buildout" install - -# runtime stage -FROM ghcr.io/linuxserver/baseimage-rdesktop-web:arm32v7-3.16 - -# set version label -ARG BUILD_DATE -ARG VERSION -ARG PIDGIN_VERSION -LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" -LABEL maintainer="thelamer" - -# title -ENV TITLE=Pidgin - -# copy over all plugin libs -COPY --from=plugins /buildout/ / - -RUN \ - echo "**** install packages ****" && \ - if [ -z ${PIDGIN_VERSION+x} ]; then \ - PIDGIN_VERSION=$(curl -sL "http://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz" | tar -xz -C /tmp \ - && awk '/^P:pidgin$/,/V:/' /tmp/APKINDEX | sed -n 2p | sed 's/^V://'); \ - fi && \ - apk add --no-cache \ - discount \ - firefox-esr \ - libpurple-bonjour \ - libpurple-xmpp \ - libqrencode \ - libwebp \ - nss \ - pidgin==${PIDGIN_VERSION} \ - pidgin-lang \ - pidgin-otr \ - pidgin-otr-lang \ - pidgin-sipe \ - pidgin-sipe-lang \ - purple-carbons \ - purple-lurch \ - purple-xmpp-http-upload && \ - apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \ - purple-facebook \ - purple-hangouts && \ - echo "**** cleanup ****" && \ - rm -rf \ - /tmp/* - -# add local files -COPY /root / - -# ports and volumes -EXPOSE 3000 - -VOLUME /config diff --git a/Jenkinsfile b/Jenkinsfile index 8eb0869..f4c727a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -25,8 +25,8 @@ pipeline { DEV_DOCKERHUB_IMAGE = 'lsiodev/pidgin' PR_DOCKERHUB_IMAGE = 'lspipepr/pidgin' DIST_IMAGE = 'alpine' - DIST_TAG = '3.16' - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.16/community/' + DIST_TAG = '3.17' + DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.17/community/' DIST_REPO_PACKAGES = 'pidgin' MULTIARCH = 'true' CI = 'true' @@ -161,7 +161,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } else { env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER } @@ -184,7 +184,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } else { env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA } @@ -207,7 +207,7 @@ pipeline { env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME if (env.MULTIARCH == 'true') { - env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST } else { env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-pr-' + env.PULL_REQUEST } @@ -495,41 +495,6 @@ pipeline { --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." } } - stage('Build ARMHF') { - agent { - label 'ARMHF' - } - steps { - echo "Running on node: ${NODE_NAME}" - echo 'Logging into Github' - sh '''#! /bin/bash - echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin - ''' - sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf" - sh "docker buildx build \ - --label \"org.opencontainers.image.created=${GITHUB_DATE}\" \ - --label \"org.opencontainers.image.authors=linuxserver.io\" \ - --label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-pidgin/packages\" \ - --label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-pidgin\" \ - --label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-pidgin\" \ - --label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \ - --label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \ - --label \"org.opencontainers.image.vendor=linuxserver.io\" \ - --label \"org.opencontainers.image.licenses=GPL-3.0-only\" \ - --label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \ - --label \"org.opencontainers.image.title=Pidgin\" \ - --label \"org.opencontainers.image.description=[Pidgin](https://pidgin.im/) is a chat program which lets you log into accounts on multiple chat networks simultaneously. This means that you can be chatting with friends on XMPP and sitting in an IRC channel at the same time.\" \ - --no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \ - --build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ." - sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" - retry(5) { - sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}" - } - sh '''docker rmi \ - ${IMAGE}:arm32v7-${META_TAG} \ - ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} || :''' - } - } stage('Build ARM64') { agent { label 'ARM64' @@ -680,9 +645,7 @@ pipeline { set -e docker pull ghcr.io/linuxserver/ci:latest if [ "${MULTIARCH}" == "true" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} - docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi docker run --rm \ @@ -798,8 +761,6 @@ pipeline { echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin if [ "${CI}" == "false" ]; then - docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} - docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG} docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG} fi @@ -807,47 +768,35 @@ pipeline { docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} - docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} if [ -n "${SEMVER}" ]; then docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER} - docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER} docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER} fi docker push ${MANIFESTIMAGE}:amd64-${META_TAG} docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:amd64-latest - docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG} - docker push ${MANIFESTIMAGE}:arm32v7-latest - docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker push ${MANIFESTIMAGE}:arm64v8-latest docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} if [ -n "${SEMVER}" ]; then docker push ${MANIFESTIMAGE}:amd64-${SEMVER} - docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER} docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER} fi docker manifest push --purge ${MANIFESTIMAGE}:latest || : - docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest - docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8 docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || : - docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} - docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8 docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || : - docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} - docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8 if [ -n "${SEMVER}" ]; then docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || : - docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} - docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm + docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8 fi docker manifest push --purge ${MANIFESTIMAGE}:latest @@ -865,21 +814,16 @@ pipeline { ${DELETEIMAGE}:amd64-${META_TAG} \ ${DELETEIMAGE}:amd64-latest \ ${DELETEIMAGE}:amd64-${EXT_RELEASE_TAG} \ - ${DELETEIMAGE}:arm32v7-${META_TAG} \ - ${DELETEIMAGE}:arm32v7-latest \ - ${DELETEIMAGE}:arm32v7-${EXT_RELEASE_TAG} \ ${DELETEIMAGE}:arm64v8-${META_TAG} \ ${DELETEIMAGE}:arm64v8-latest \ ${DELETEIMAGE}:arm64v8-${EXT_RELEASE_TAG} || : if [ -n "${SEMVER}" ]; then docker rmi \ ${DELETEIMAGE}:amd64-${SEMVER} \ - ${DELETEIMAGE}:arm32v7-${SEMVER} \ ${DELETEIMAGE}:arm64v8-${SEMVER} || : fi done docker rmi \ - ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} \ ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} || : ''' } diff --git a/README.md b/README.md index df4fed6..7965c77 100644 --- a/README.md +++ b/README.md @@ -56,17 +56,14 @@ The architectures supported by this image are: | :----: | :----: | ---- | | x86-64 | ✅ | amd64-\ | | arm64 | ✅ | arm64v8-\ | -| armhf | ✅ | arm32v7-\ | +| armhf | ❌ | | ## Application Setup The application can be accessed at: * http://yourhost:3000/ - -By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: - -* http://yourhost:3000/?login=true +* https://yourhost:3001/ This Pidgin installation comes with default chat plugins plus a series of third party ones. **Please note that the third party plugins for the most part are not simply plug and play, you will need to reference their documentation and possibly generate oauth tokens along with other workarounds**. Third party plugins are always in a state of constant development do not expect every single native feature to work flawlessly. To ease integration with some third party plugins we include Firefox in this image to allow you to fill out captchas or pre-auth before loading your credentials into the program, simply right click the desktop to launch it. @@ -89,6 +86,36 @@ This Pidgin installation comes with default chat plugins plus a series of third * XMPP- Default XMPP plugin * Zephyr- Default project Athena plugin +### Options in all KasmVNC based GUI containers + +This container is based on [Docker Baseimage KasmVNC](https://github.com/linuxserver/docker-baseimage-kasmvnc) which means there are additional environment variables and run configurations to enable or disable specific functionality. + +#### Optional environment variables + +| Variable | Description | +| :----: | --- | +| CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default 3000. | +| CUSTOM_HTTPS_PORT | Internal port the container listens on for https if it needs to be swapped from the default 3001. | +| CUSTOM_USER | HTTP Basic auth username, abc is default. | +| PASSWORD | HTTP Basic auth password, abc is default. If unset there will be no auth | +| SUBFOLDER | Subfolder for the application if running a subfolder reverse proxy, need both slashes IE `/subfolder/` | +| TITLE | The page title displayed on the web browser, default "KasmVNC Client". | +| FM_HOME | This is the home directory (landing) for the file manager, default "/config". | +| START_DOCKER | If set to false a container with privilege will not automatically start the DinD Docker setup. | +| DRINODE | If mounting in /dev/dri for [DRI3 GPU Acceleration](https://www.kasmweb.com/kasmvnc/docs/master/gpu_acceleration.html) allows you to specify the device to use IE `/dev/dri/renderD128` | + +#### Optional run configurations + +| Variable | Description | +| :----: | --- | +| `--privileged` | Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE `-v /home/user/docker-data:/var/lib/docker`. | +| `-v /var/run/docker.sock:/var/run/docker.sock` | Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. | +| `--device /dev/dri:/dev/dri` | Mount a GPU into the container, this can be used in conjunction with the `DRINODE` environment variable to leverage a host video card for GPU accelerated appplications. Only **Open Source** drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau) | + +### Lossless mode + +This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to "Lossless", more information [here](https://www.kasmweb.com/docs/latest/how_to/lossless.html#technical-background). In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined [here](https://github.com/linuxserver/docker-baseimage-kasmvnc#lossless). + ## Usage Here are some example snippets to help you get started creating a container. @@ -112,6 +139,7 @@ services: - /path/to/config:/config ports: - 3000:3000 + - 3001:3001 restart: unless-stopped ``` @@ -125,6 +153,7 @@ docker run -d \ -e PGID=1000 \ -e TZ=Etc/UTC \ -p 3000:3000 \ + -p 3001:3001 \ -v /path/to/config:/config \ --restart unless-stopped \ lscr.io/linuxserver/pidgin:latest @@ -138,6 +167,7 @@ Container images are configured using parameters passed at runtime (such as thos | Parameter | Function | | :----: | --- | | `-p 3000` | Pidgin desktop gui. | +| `-p 3001` | Pidgin desktop gui HTTPS. | | `-e PUID=1000` | for UserID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). | @@ -253,6 +283,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64 ## Versions +* **18.03.23:** - Rebase to KasmVNC base image. * **21.10.22:** - Rebase to Alpine 3.16, migrate to s6v3. * **15.02.22:** - Add build deps for discord. * **23.12.21:** - Rebase to Alpine 3.15. diff --git a/jenkins-vars.yml b/jenkins-vars.yml index a43a52a..eefbbfa 100644 --- a/jenkins-vars.yml +++ b/jenkins-vars.yml @@ -6,6 +6,7 @@ external_type: alpine_repo release_type: stable release_tag: latest ls_branch: master +build_armhf: false repo_vars: - BUILD_VERSION_ARG = 'PIDGIN_VERSION' - LS_USER = 'linuxserver' @@ -15,8 +16,8 @@ repo_vars: - DEV_DOCKERHUB_IMAGE = 'lsiodev/pidgin' - PR_DOCKERHUB_IMAGE = 'lspipepr/pidgin' - DIST_IMAGE = 'alpine' - - DIST_TAG = '3.16' - - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.16/community/' + - DIST_TAG = '3.17' + - DIST_REPO = 'http://dl-cdn.alpinelinux.org/alpine/v3.17/community/' - DIST_REPO_PACKAGES = 'pidgin' - MULTIARCH = 'true' - CI = 'true' diff --git a/readme-vars.yml b/readme-vars.yml index dbedcc6..ac3bc2d 100644 --- a/readme-vars.yml +++ b/readme-vars.yml @@ -12,7 +12,6 @@ project_blurb_optional_extras_enabled: false available_architectures: - { arch: "{{ arch_x86_64 }}", tag: "latest"} - { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - - { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"} # development version development_versions: false @@ -29,6 +28,7 @@ param_volumes: param_usage_include_ports: true param_ports: - { external_port: "3000", internal_port: "3000", port_desc: "Pidgin desktop gui." } + - { external_port: "3001", internal_port: "3001", port_desc: "Pidgin desktop gui HTTPS." } opt_security_opt_param: true opt_security_opt_param_vars: - { run_var: "seccomp=unconfined", compose_var: "seccomp:unconfined", desc: "For Docker Engine only, many modern gui apps need this to function on older hosts as syscalls are unknown to Docker." } @@ -37,13 +37,10 @@ opt_security_opt_param_vars: app_setup_block_enabled: true app_setup_block: | The application can be accessed at: - - * http://yourhost:3000/ - - By default the user/pass is abc/abc, if you change your password or want to login manually to the GUI session for any reason use the following link: - - * http://yourhost:3000/?login=true + * http://yourhost:3000/ + * https://yourhost:3001/ + This Pidgin installation comes with default chat plugins plus a series of third party ones. **Please note that the third party plugins for the most part are not simply plug and play, you will need to reference their documentation and possibly generate oauth tokens along with other workarounds**. Third party plugins are always in a state of constant development do not expect every single native feature to work flawlessly. To ease integration with some third party plugins we include Firefox in this image to allow you to fill out captchas or pre-auth before loading your credentials into the program, simply right click the desktop to launch it. * Bonjour- Default XMPP style plugin @@ -64,9 +61,40 @@ app_setup_block: | * Telegram- Provided by [telegram-purple](https://github.com/majn/telegram-purple) * XMPP- Default XMPP plugin * Zephyr- Default project Athena plugin + + ### Options in all KasmVNC based GUI containers + + This container is based on [Docker Baseimage KasmVNC](https://github.com/linuxserver/docker-baseimage-kasmvnc) which means there are additional environment variables and run configurations to enable or disable specific functionality. + + #### Optional environment variables + + | Variable | Description | + | :----: | --- | + | CUSTOM_PORT | Internal port the container listens on for http if it needs to be swapped from the default 3000. | + | CUSTOM_HTTPS_PORT | Internal port the container listens on for https if it needs to be swapped from the default 3001. | + | CUSTOM_USER | HTTP Basic auth username, abc is default. | + | PASSWORD | HTTP Basic auth password, abc is default. If unset there will be no auth | + | SUBFOLDER | Subfolder for the application if running a subfolder reverse proxy, need both slashes IE `/subfolder/` | + | TITLE | The page title displayed on the web browser, default "KasmVNC Client". | + | FM_HOME | This is the home directory (landing) for the file manager, default "/config". | + | START_DOCKER | If set to false a container with privilege will not automatically start the DinD Docker setup. | + | DRINODE | If mounting in /dev/dri for [DRI3 GPU Acceleration](https://www.kasmweb.com/kasmvnc/docs/master/gpu_acceleration.html) allows you to specify the device to use IE `/dev/dri/renderD128` | + + #### Optional run configurations + + | Variable | Description | + | :----: | --- | + | `--privileged` | Will start a Docker in Docker (DinD) setup inside the container to use docker in an isolated environment. For increased performance mount the Docker directory inside the container to the host IE `-v /home/user/docker-data:/var/lib/docker`. | + | `-v /var/run/docker.sock:/var/run/docker.sock` | Mount in the host level Docker socket to either interact with it via CLI or use Docker enabled applications. | + | `--device /dev/dri:/dev/dri` | Mount a GPU into the container, this can be used in conjunction with the `DRINODE` environment variable to leverage a host video card for GPU accelerated appplications. Only **Open Source** drivers are supported IE (Intel,AMDGPU,Radeon,ATI,Nouveau) | + + ### Lossless mode + + This container is capable of delivering a true lossless image at a high framerate to your web browser by changing the Stream Quality preset to "Lossless", more information [here](https://www.kasmweb.com/docs/latest/how_to/lossless.html#technical-background). In order to use this mode from a non localhost endpoint the HTTPS port on 3001 needs to be used. If using a reverse proxy to port 3000 specific headers will need to be set as outlined [here](https://github.com/linuxserver/docker-baseimage-kasmvnc#lossless). # changelog changelogs: + - { date: "18.03.23:", desc: "Rebase to KasmVNC base image." } - { date: "21.10.22:", desc: "Rebase to Alpine 3.16, migrate to s6v3." } - { date: "15.02.22:", desc: "Add build deps for discord." } - { date: "23.12.21:", desc: "Rebase to Alpine 3.15." } diff --git a/root/defaults/menu.xml b/root/defaults/menu.xml index 04ac0a9..2e2ea6a 100644 --- a/root/defaults/menu.xml +++ b/root/defaults/menu.xml @@ -1,8 +1,8 @@ +/usr/bin/pidgin /usr/bin/xterm -/usr/bin/firefox - +/usr/bin/chromium-browser --password-store=basic --no-sandbox --ignore-gpu-blocklist --user-data-dir --no-first-run --simulate-outdated-no-au='Tue, 31 Dec 2099 23:59:59 GMT' --test-type diff --git a/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-openboxcopy b/root/etc/s6-overlay/s6-rc.d/init-config-end/dependencies.d/init-openboxcopy deleted file mode 100644 index e69de29..0000000 diff --git a/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/dependencies.d/init-config b/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/dependencies.d/init-config deleted file mode 100644 index e69de29..0000000 diff --git a/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/run b/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/run deleted file mode 100755 index e7504d5..0000000 --- a/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/run +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/with-contenv bash - -# default file copies first run -if [[ ! -f /config/.config/openbox/menu.xml ]]; then - mkdir -p /config/.config/openbox && \ - cp /defaults/menu.xml /config/.config/openbox/menu.xml && \ - chown -R abc:abc /config/.config -fi diff --git a/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/type b/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/type deleted file mode 100644 index 3d92b15..0000000 --- a/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/type +++ /dev/null @@ -1 +0,0 @@ -oneshot \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/up b/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/up deleted file mode 100644 index c5a506f..0000000 --- a/root/etc/s6-overlay/s6-rc.d/init-openboxcopy/up +++ /dev/null @@ -1 +0,0 @@ -/etc/s6-overlay/s6-rc.d/init-openboxcopy/run \ No newline at end of file diff --git a/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-openboxcopy b/root/etc/s6-overlay/s6-rc.d/user/contents.d/init-openboxcopy deleted file mode 100644 index e69de29..0000000