Merge remote-tracking branch 'origin/main' into replace-placeholers-in-proeprties

This commit is contained in:
sturman 2024-03-20 12:20:41 +02:00
commit 41b367182a
9 changed files with 526 additions and 502 deletions

View file

@ -67,10 +67,10 @@ body:
- type: textarea - type: textarea
attributes: attributes:
description: | description: |
Provide a full docker log, output of "docker logs linuxserver.io" Provide a full docker log, output of "docker logs unifi-network-application"
label: Container logs label: Container logs
placeholder: | placeholder: |
Output of `docker logs linuxserver.io` Output of `docker logs unifi-network-application`
render: bash render: bash
validations: validations:
required: true required: true

View file

@ -7,7 +7,7 @@ jobs:
external-trigger-main: external-trigger-main:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'

View file

@ -9,7 +9,7 @@ jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'

View file

@ -7,7 +7,7 @@ jobs:
package-trigger-main: package-trigger-main:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
- name: Package Trigger - name: Package Trigger
if: github.ref == 'refs/heads/main' if: github.ref == 'refs/heads/main'

View file

@ -9,7 +9,7 @@ jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3.1.0 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'

336
Jenkinsfile vendored
View file

@ -245,9 +245,11 @@ pipeline {
-v ${WORKSPACE}:/mnt \ -v ${WORKSPACE}:/mnt \
-e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \ -e AWS_ACCESS_KEY_ID=\"${S3_KEY}\" \
-e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \ -e AWS_SECRET_ACCESS_KEY=\"${S3_SECRET}\" \
ghcr.io/linuxserver/baseimage-alpine:3.17 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\ ghcr.io/linuxserver/baseimage-alpine:3.19 s6-envdir -fn -- /var/run/s6/container_environment /bin/bash -c "\
apk add --no-cache py3-pip && \ apk add --no-cache python3 && \
pip install s3cmd && \ python3 -m venv /lsiopy && \
pip install --no-cache-dir -U pip && \
pip install --no-cache-dir s3cmd && \
s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :''' s3cmd put --no-preserve --acl-public -m text/xml /mnt/shellcheck-result.xml s3://ci-tests.linuxserver.io/${IMAGE}/${META_TAG}/shellcheck-result.xml" || :'''
} }
} }
@ -262,150 +264,176 @@ pipeline {
} }
} }
steps { steps {
withCredentials([ sh '''#! /bin/bash
[ set -e
$class: 'UsernamePasswordMultiBinding', TEMPDIR=$(mktemp -d)
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207', docker pull ghcr.io/linuxserver/jenkins-builder:latest
usernameVariable: 'DOCKERUSER', # Cloned repo paths for templating:
passwordVariable: 'DOCKERPASS' # ${TEMPDIR}/docker-${CONTAINER_NAME}: Cloned branch main of ${LS_USER}/${LS_REPO} for running the jenkins builder on
] # ${TEMPDIR}/repo/${LS_REPO}: Cloned branch main of ${LS_USER}/${LS_REPO} for commiting various templated file changes and pushing back to Github
]) { # ${TEMPDIR}/docs/docker-documentation: Cloned docs repo for pushing docs updates to Github
sh '''#! /bin/bash # ${TEMPDIR}/unraid/docker-templates: Cloned docker-templates repo to check for logos
set -e # ${TEMPDIR}/unraid/templates: Cloned templates repo for commiting unraid template changes and pushing back to Github
TEMPDIR=$(mktemp -d) git clone --branch main --depth 1 https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/docker-${CONTAINER_NAME}
docker pull ghcr.io/linuxserver/jenkins-builder:latest docker run --rm -v ${TEMPDIR}/docker-${CONTAINER_NAME}:/tmp -e LOCAL=true ghcr.io/linuxserver/jenkins-builder:latest
docker run --rm -e CONTAINER_NAME=${CONTAINER_NAME} -e GITHUB_BRANCH=main -v ${TEMPDIR}:/ansible/jenkins ghcr.io/linuxserver/jenkins-builder:latest echo "Starting Stage 1 - Jenkinsfile update"
# Stage 1 - Jenkinsfile update if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then
if [[ "$(md5sum Jenkinsfile | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile | awk '{ print $1 }')" ]]; then mkdir -p ${TEMPDIR}/repo
mkdir -p ${TEMPDIR}/repo git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}
cd ${TEMPDIR}/repo/${LS_REPO} git checkout -f main
git checkout -f main cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/Jenkinsfile ${TEMPDIR}/repo/${LS_REPO}/ git add Jenkinsfile
git add Jenkinsfile git commit -m 'Bot Updating Templated Files'
git commit -m 'Bot Updating Templated Files' git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} echo "Updating Jenkinsfile and exiting build, new one will trigger based on commit"
echo "Updating Jenkinsfile" rm -Rf ${TEMPDIR}
rm -Rf ${TEMPDIR} exit 0
exit 0 else
else echo "Jenkinsfile is up to date."
echo "Jenkinsfile is up to date." fi
echo "Starting Stage 2 - Delete old templates"
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf"
for i in ${OLD_TEMPLATES}; do
if [[ -f "${i}" ]]; then
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}"
fi fi
# Stage 2 - Delete old templates done
OLD_TEMPLATES=".github/ISSUE_TEMPLATE.md .github/ISSUE_TEMPLATE/issue.bug.md .github/ISSUE_TEMPLATE/issue.feature.md .github/workflows/call_invalid_helper.yml .github/workflows/stale.yml Dockerfile.armhf" if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then
for i in ${OLD_TEMPLATES}; do mkdir -p ${TEMPDIR}/repo
if [[ -f "${i}" ]]; then git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
TEMPLATES_TO_DELETE="${i} ${TEMPLATES_TO_DELETE}" cd ${TEMPDIR}/repo/${LS_REPO}
fi git checkout -f main
for i in ${TEMPLATES_TO_DELETE}; do
git rm "${i}"
done done
if [[ -n "${TEMPLATES_TO_DELETE}" ]]; then git commit -m 'Bot Updating Templated Files'
mkdir -p ${TEMPDIR}/repo git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main
cd ${TEMPDIR}/repo/${LS_REPO} echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
git checkout -f main echo "Deleting old/deprecated templates and exiting build, new one will trigger based on commit"
for i in ${TEMPLATES_TO_DELETE}; do rm -Rf ${TEMPDIR}
git rm "${i}" exit 0
done else
git commit -m 'Bot Updating Templated Files' echo "No templates to delete"
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main fi
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main echo "Starting Stage 3 - Update templates"
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
echo "Deleting old and deprecated templates" cd ${TEMPDIR}/docker-${CONTAINER_NAME}
rm -Rf ${TEMPDIR} NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
exit 0 if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then
else mkdir -p ${TEMPDIR}/repo
echo "No templates to delete" git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO}
fi cd ${TEMPDIR}/repo/${LS_REPO}
# Stage 3 - Update templates git checkout -f main
CURRENTHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8)
cd ${TEMPDIR}/docker-${CONTAINER_NAME} cd ${TEMPDIR}/docker-${CONTAINER_NAME}
NEWHASH=$(grep -hs ^ ${TEMPLATED_FILES} | md5sum | cut -c1-8) mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows
if [[ "${CURRENTHASH}" != "${NEWHASH}" ]] || ! grep -q '.jenkins-external' "${WORKSPACE}/.gitignore" 2>/dev/null; then mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE
mkdir -p ${TEMPDIR}/repo cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || :
git clone https://github.com/${LS_USER}/${LS_REPO}.git ${TEMPDIR}/repo/${LS_REPO} cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || :
cd ${TEMPDIR}/repo/${LS_REPO} cd ${TEMPDIR}/repo/${LS_REPO}/
git checkout -f main if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then
cd ${TEMPDIR}/docker-${CONTAINER_NAME} echo ".jenkins-external" >> .gitignore
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/workflows git add .gitignore
mkdir -p ${TEMPDIR}/repo/${LS_REPO}/.github/ISSUE_TEMPLATE fi
cp --parents ${TEMPLATED_FILES} ${TEMPDIR}/repo/${LS_REPO}/ || : git add readme-vars.yml ${TEMPLATED_FILES}
cp --parents readme-vars.yml ${TEMPDIR}/repo/${LS_REPO}/ || : git commit -m 'Bot Updating Templated Files'
cd ${TEMPDIR}/repo/${LS_REPO}/ git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main
if ! grep -q '.jenkins-external' .gitignore 2>/dev/null; then git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main
echo ".jenkins-external" >> .gitignore echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
git add .gitignore echo "Updating templates and exiting build, new one will trigger based on commit"
fi rm -Rf ${TEMPDIR}
git add readme-vars.yml ${TEMPLATED_FILES} exit 0
git commit -m 'Bot Updating Templated Files' else
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER}
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/${LS_USER}/${LS_REPO}.git main echo "No templates to update"
echo "true" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} fi
echo "Starting Stage 4 - External repo updates: Docs, Unraid Template and Readme Sync to Docker Hub"
mkdir -p ${TEMPDIR}/docs
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/
cd ${TEMPDIR}/docs/docker-documentation
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
git add docs/images/docker-${CONTAINER_NAME}.md
echo "Updating docs repo"
git commit -m 'Bot Updating Documentation'
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} || \
(MAXWAIT="10" && echo "Push to docs failed, trying again in ${MAXWAIT} seconds" && \
sleep $((RANDOM % MAXWAIT)) && \
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} --rebase && \
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH})
else
echo "Docs update not needed, skipping"
fi
mkdir -p ${TEMPDIR}/unraid
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
echo "Updating Unraid template"
cd ${TEMPDIR}/unraid/templates/
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated"
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add -u unraid/${CONTAINER_NAME}.xml
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Moving Deprecated Unraid Template' || :
else else
echo "false" > /tmp/${COMMIT_SHA}-${BUILD_NUMBER} cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
fi fi
mkdir -p ${TEMPDIR}/docs git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase
git clone https://github.com/linuxserver/docker-documentation.git ${TEMPDIR}/docs/docker-documentation git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} || \
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md) || ("$(md5sum ${TEMPDIR}/docs/docker-documentation/docs/images/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md | awk '{ print $1 }')") ]]; then (MAXWAIT="10" && echo "Push to unraid templates failed, trying again in ${MAXWAIT} seconds" && \
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/docker-${CONTAINER_NAME}.md ${TEMPDIR}/docs/docker-documentation/docs/images/ sleep $((RANDOM % MAXWAIT)) && \
cd ${TEMPDIR}/docs/docker-documentation git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH} --rebase && \
GH_DOCS_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||') git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH})
git add docs/images/docker-${CONTAINER_NAME}.md else
git commit -m 'Bot Updating Documentation' echo "No updates to Unraid template needed, skipping"
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} fi
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/docker-documentation.git ${GH_DOCS_DEFAULT_BRANCH} if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) -gt 25000 ]]; then
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
else
echo "Syncing readme to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
fi fi
mkdir -p ${TEMPDIR}/unraid if curl -s https://hub.docker.com/v2/namespaces/${DOCKERHUB_IMAGE%%/*}/repositories/${DOCKERHUB_IMAGE##*/}/tags | jq -r '.message' | grep -q 404; then
git clone https://github.com/linuxserver/docker-templates.git ${TEMPDIR}/unraid/docker-templates echo "Docker Hub endpoint doesn't exist. Creating endpoint first."
git clone https://github.com/linuxserver/templates.git ${TEMPDIR}/unraid/templates DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
if [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-logo.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-logo.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
elif [[ -f ${TEMPDIR}/unraid/docker-templates/linuxserver.io/img/${CONTAINER_NAME}-icon.png ]]; then
sed -i "s|master/linuxserver.io/img/linuxserver-ls-logo.png|master/linuxserver.io/img/${CONTAINER_NAME}-icon.png|" ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml
fi
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]] && [[ (! -f ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml) || ("$(md5sum ${TEMPDIR}/unraid/templates/unraid/${CONTAINER_NAME}.xml | awk '{ print $1 }')" != "$(md5sum ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml | awk '{ print $1 }')") ]]; then
cd ${TEMPDIR}/unraid/templates/
GH_TEMPLATES_DEFAULT_BRANCH=$(git remote show origin | grep "HEAD branch:" | sed 's|.*HEAD branch: ||')
if grep -wq "${CONTAINER_NAME}" ${TEMPDIR}/unraid/templates/unraid/ignore.list; then
echo "Image is on the ignore list, marking Unraid template as deprecated"
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add -u unraid/${CONTAINER_NAME}.xml
git mv unraid/${CONTAINER_NAME}.xml unraid/deprecated/${CONTAINER_NAME}.xml || :
git commit -m 'Bot Moving Deprecated Unraid Template' || :
else
cp ${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/${CONTAINER_NAME}.xml ${TEMPDIR}/unraid/templates/unraid/
git add unraid/${CONTAINER_NAME}.xml
git commit -m 'Bot Updating Unraid Template'
fi
git pull https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}
git push https://LinuxServer-CI:${GITHUB_TOKEN}@github.com/linuxserver/templates.git ${GH_TEMPLATES_DEFAULT_BRANCH}
fi
# Stage 4 - Sync Readme to Docker Hub
if [[ "${BRANCH_NAME}" == "${GH_DEFAULT_BRANCH}" ]]; then
if [[ $(cat ${TEMPDIR}/docker-${CONTAINER_NAME}/README.md | wc -m) > 25000 ]]; then
echo "Readme is longer than 25,000 characters. Syncing the lite version to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/.jenkins-external/README.lite"
else
echo "Syncing readme to Docker Hub"
DH_README_SYNC_PATH="${TEMPDIR}/docker-${CONTAINER_NAME}/README.md"
fi
DH_TOKEN=$(curl -d '{"username":"'${DOCKERUSER}'", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
curl -s \ curl -s \
-H "Authorization: JWT ${DH_TOKEN}" \ -H "Authorization: JWT ${DH_TOKEN}" \
-H "Content-Type: application/json" \ -H "Content-Type: application/json" \
-X PATCH \ -X POST \
-d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \ -d '{"name":"'${DOCKERHUB_IMAGE##*/}'", "namespace":"'${DOCKERHUB_IMAGE%%/*}'"}' \
https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || : https://hub.docker.com/v2/repositories/ || :
else
echo "Not the default Github branch. Skipping readme sync to Docker Hub."
fi fi
rm -Rf ${TEMPDIR}''' DH_TOKEN=$(curl -d '{"username":"linuxserverci", "password":"'${DOCKERHUB_TOKEN}'"}' -H "Content-Type: application/json" -X POST https://hub.docker.com/v2/users/login | jq -r '.token')
script{ curl -s \
env.FILES_UPDATED = sh( -H "Authorization: JWT ${DH_TOKEN}" \
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''', -H "Content-Type: application/json" \
returnStdout: true).trim() -X PATCH \
} -d "{\\"full_description\\":$(jq -Rsa . ${DH_README_SYNC_PATH})}" \
https://hub.docker.com/v2/repositories/${DOCKERHUB_IMAGE} || :
else
echo "Not the default Github branch. Skipping readme sync to Docker Hub."
fi
rm -Rf ${TEMPDIR}'''
script{
env.FILES_UPDATED = sh(
script: '''cat /tmp/${COMMIT_SHA}-${BUILD_NUMBER}''',
returnStdout: true).trim()
} }
} }
} }
@ -455,14 +483,16 @@ pipeline {
} }
steps{ steps{
sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \ sh '''curl -H "Content-Type: application/json" -H "Private-Token: ${GITLAB_TOKEN}" -X POST https://gitlab.com/api/v4/projects \
-d '{"namespace_id":'${GITLAB_NAMESPACE}',\ -d '{"namespace_id":'${GITLAB_NAMESPACE}',\
"name":"'${LS_REPO}'", "name":"'${LS_REPO}'",
"mirror":true,\ "mirror":true,\
"import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\ "import_url":"https://github.com/linuxserver/'${LS_REPO}'.git",\
"issues_access_level":"disabled",\ "issues_access_level":"disabled",\
"merge_requests_access_level":"disabled",\ "merge_requests_access_level":"disabled",\
"repository_access_level":"enabled",\ "repository_access_level":"enabled",\
"visibility":"public"}' ''' "visibility":"public"}' '''
sh '''curl -H "Private-Token: ${GITLAB_TOKEN}" -X PUT "https://gitlab.com/api/v4/projects/Linuxserver.io%2F${LS_REPO}" \
-d "mirror=true&import_url=https://github.com/linuxserver/${LS_REPO}.git" '''
} }
} }
/* ############### /* ###############
@ -703,12 +733,6 @@ pipeline {
} }
steps { steps {
withCredentials([ withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
],
[ [
$class: 'UsernamePasswordMultiBinding', $class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot', credentialsId: 'Quay.io-Robot',
@ -719,7 +743,7 @@ pipeline {
retry(5) { retry(5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
@ -750,12 +774,6 @@ pipeline {
} }
steps { steps {
withCredentials([ withCredentials([
[
$class: 'UsernamePasswordMultiBinding',
credentialsId: '3f9ba4d5-100d-45b0-a3c4-633fd6061207',
usernameVariable: 'DOCKERUSER',
passwordVariable: 'DOCKERPASS'
],
[ [
$class: 'UsernamePasswordMultiBinding', $class: 'UsernamePasswordMultiBinding',
credentialsId: 'Quay.io-Robot', credentialsId: 'Quay.io-Robot',
@ -766,7 +784,7 @@ pipeline {
retry(5) { retry(5) {
sh '''#! /bin/bash sh '''#! /bin/bash
set -e set -e
echo $DOCKERPASS | docker login -u $DOCKERUSER --password-stdin echo $DOCKERHUB_TOKEN | docker login -u linuxserverci --password-stdin
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin

View file

@ -64,7 +64,7 @@ After setup, the web UI is available at https://ip:8443. The application can be
### Setting Up Your External Database ### Setting Up Your External Database
Formally only mongodb 3.6 through 4.4 are supported, however, it has been reported that newer versions will work. If you choose to use a newer version be aware that you will not be operating a supported configuration. Starting with version 8.1 of Unifi Network Application, mongodb 3.6 through 7.0 are supported.
**Make sure you pin your database image version and do not use `latest`, as mongodb does not support automatic upgrades between major versions.** **Make sure you pin your database image version and do not use `latest`, as mongodb does not support automatic upgrades between major versions.**
@ -155,7 +155,7 @@ services:
- MONGO_TLS= #optional - MONGO_TLS= #optional
- MONGO_AUTHSOURCE= #optional - MONGO_AUTHSOURCE= #optional
volumes: volumes:
- /path/to/data:/config - /path/to/unifi-network-application/data:/config
ports: ports:
- 8443:8443 - 8443:8443
- 3478:3478/udp - 3478:3478/udp
@ -195,7 +195,7 @@ docker run -d \
-p 8880:8880 `#optional` \ -p 8880:8880 `#optional` \
-p 6789:6789 `#optional` \ -p 6789:6789 `#optional` \
-p 5514:5514/udp `#optional` \ -p 5514:5514/udp `#optional` \
-v /path/to/data:/config \ -v /path/to/unifi-network-application/data:/config \
--restart unless-stopped \ --restart unless-stopped \
lscr.io/linuxserver/unifi-network-application:latest lscr.io/linuxserver/unifi-network-application:latest
``` ```
@ -227,7 +227,7 @@ Containers are configured using parameters passed at runtime (such as those abov
| `-e MEM_STARTUP=1024` | Optionally change the Java initial/minimum memory (in Megabytes). Set to `default` to reset to default | | `-e MEM_STARTUP=1024` | Optionally change the Java initial/minimum memory (in Megabytes). Set to `default` to reset to default |
| `-e MONGO_TLS=` | Mongodb enable [TLS](https://www.mongodb.com/docs/manual/reference/connection-string/#mongodb-urioption-urioption.tls). Only evaluated on first run. | | `-e MONGO_TLS=` | Mongodb enable [TLS](https://www.mongodb.com/docs/manual/reference/connection-string/#mongodb-urioption-urioption.tls). Only evaluated on first run. |
| `-e MONGO_AUTHSOURCE=` | Mongodb [authSource](https://www.mongodb.com/docs/manual/reference/connection-string/#mongodb-urioption-urioption.authSource). For Atlas set to `admin`.Defaults to `MONGO_DBNAME`.Only evaluated on first run. | | `-e MONGO_AUTHSOURCE=` | Mongodb [authSource](https://www.mongodb.com/docs/manual/reference/connection-string/#mongodb-urioption-urioption.authSource). For Atlas set to `admin`.Defaults to `MONGO_DBNAME`.Only evaluated on first run. |
| `-v /config` | All Unifi data stored here | | `-v /config` | Persistent config files |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)

View file

@ -1,329 +1,335 @@
NAME VERSION TYPE NAME VERSION TYPE
ace java-archive ace java-archive
activation 1.1.1 java-archive adduser 3.118ubuntu5 deb
adduser 3.118ubuntu5 deb analytics-api 2.0.0 java-archive
analytics-api 1.3.1 java-archive analytics-client 2.0.0 java-archive
analytics-client 1.3.1 java-archive analytics-privacy 2.0.0 java-archive
analytics-privacy 1.3.1 java-archive annotations 3.0.1 java-archive
annotations 3.0.1 java-archive antlr4-runtime 4.5.3 java-archive
antlr4-runtime 4.5.3 java-archive api-common 1.7.0 java-archive
api-common 1.7.0 java-archive apigateway-generic-java-sdk 1.3 java-archive
apigateway-generic-java-sdk 1.3 java-archive apt 2.4.11 deb
apt 2.4.11 deb apt-utils 2.4.11 deb
apt-utils 2.4.11 deb asn-one 0.6.0 java-archive
aws-iot-device-sdk-java 1.2.0 java-archive aws-iot-device-sdk-java 1.2.0 java-archive
aws-java-sdk-core 1.11.409 java-archive aws-java-sdk-core 1.11.409 java-archive
aws-java-sdk-s3 1.11.409 java-archive aws-java-sdk-s3 1.11.409 java-archive
base-files 12ubuntu4.3 deb base-files 12ubuntu4.6 deb
base-passwd 3.5.52build1 deb base-passwd 3.5.52build1 deb
bash 5.1-6ubuntu1 deb bash 5.1-6ubuntu1.1 deb
bash 5.1.16 binary bash 5.1.16 binary
bcpkix-jdk15on 1.60 java-archive bcpkix-jdk18on 1.75 java-archive
bcprov-jdk15on 1.60 java-archive bcprov-jdk18on 1.75 java-archive
bsdutils 1:2.37.2-4ubuntu3 deb bcutil-jdk18on 1.75 java-archive
bson 4.6.1 java-archive bsdutils 1:2.37.2-4ubuntu3 deb
bson-record-codec 4.6.1 java-archive bson 4.11.1 java-archive
ca-certificates 20230311ubuntu0.22.04.1 deb bson-record-codec 4.11.1 java-archive
ca-certificates-java java-archive ca-certificates 20230311ubuntu0.22.04.1 deb
ca-certificates-java 20190909ubuntu1.2 deb ca-certificates-java java-archive
checker-qual 3.12.0 java-archive ca-certificates-java 20190909ubuntu1.2 deb
classmate 1.5.1 java-archive checker-qual 3.12.0 java-archive
coloring 1.0 java-archive classmate 1.6.0 java-archive
commons-beanutils 1.9.2 java-archive coloring 1.0 java-archive
commons-cli 1.4 java-archive commons-beanutils 1.9.4 java-archive
commons-codec 1.15 java-archive commons-cli 1.4 java-archive
commons-daemon 1.0.15 java-archive commons-codec 1.16.0 java-archive
commons-io 2.11.0 java-archive commons-daemon 1.0.15 java-archive
commons-lang3 3.12.0 java-archive commons-io 2.11.0 java-archive
commons-logging 1.2 java-archive commons-lang3 3.13.0 java-archive
commons-net 3.8.0 java-archive commons-logging 1.2 java-archive
commons-text 1.10.0 java-archive commons-net 3.10.0 java-archive
commons-validator 1.6 java-archive commons-text 1.11.0 java-archive
compiler 0.9.6 java-archive commons-validator 1.7 java-archive
coreutils 8.32-4.1ubuntu1 deb compiler 0.9.6 java-archive
cron 3.0pl1-137ubuntu3 deb coreutils 8.32-4.1ubuntu1.1 deb
cron4j 2.2.5 java-archive cron 3.0pl1-137ubuntu3 deb
curl 7.81.0-1ubuntu1.15 deb cron4j 2.2.5 java-archive
dash 0.5.11+git20210903+057cd650a4ed-3build1 deb curl 7.81.0-1ubuntu1.15 deb
debconf 1.5.79ubuntu1 deb dash 0.5.11+git20210903+057cd650a4ed-3build1 deb
debianutils 5.5-1ubuntu2 deb debconf 1.5.79ubuntu1 deb
diffutils 1:3.8-0ubuntu2 deb debianutils 5.5-1ubuntu2 deb
dirmngr 2.2.27-3ubuntu2.1 deb diffutils 1:3.8-0ubuntu2 deb
dom4j 1.6.1 java-archive dirmngr 2.2.27-3ubuntu2.1 deb
dpkg 1.21.1ubuntu2.2 deb dom4j 1.6.1 java-archive
e2fsprogs 1.46.5-2ubuntu1.1 deb dpkg 1.21.1ubuntu2.3 deb
ecj 3.18.0 java-archive e2fsprogs 1.46.5-2ubuntu1.1 deb
eddsa 0.2.0 java-archive ecj 3.33.0 java-archive
error_prone_annotations 2.7.1 java-archive eddsa 0.3.0 java-archive
failureaccess 1.0.1 java-archive error_prone_annotations 2.7.1 java-archive
findutils 4.8.0-1ubuntu3 deb failureaccess 1.0.1 java-archive
fontconfig-config 2.13.1-4.2ubuntu5 deb findutils 4.8.0-1ubuntu3 deb
fonts-dejavu-core 2.37-2build1 deb fontconfig-config 2.13.1-4.2ubuntu5 deb
gax 1.31.0 java-archive fonts-dejavu-core 2.37-2build1 deb
gcc-12-base 12.1.0-2ubuntu1~22.04 deb gax 1.31.0 java-archive
gnupg 2.2.27-3ubuntu2.1 deb gcc-12-base 12.3.0-1ubuntu1~22.04 deb
gnupg-l10n 2.2.27-3ubuntu2.1 deb gnupg 2.2.27-3ubuntu2.1 deb
gnupg-utils 2.2.27-3ubuntu2.1 deb gnupg-l10n 2.2.27-3ubuntu2.1 deb
google-api-client 1.26.0 java-archive gnupg-utils 2.2.27-3ubuntu2.1 deb
google-api-services-drive v3-rev20180830-1.26.0 java-archive google-api-client 1.26.0 java-archive
google-api-services-drive-v3-rev20180830 1.26.0 java-archive google-api-services-drive v3-rev20180830-1.26.0 java-archive
google-api-services-storage v1-rev135-1.24.1 java-archive google-api-services-drive-v3-rev20180830 1.26.0 java-archive
google-api-services-storage-v1-rev135 1.24.1 java-archive google-api-services-storage v1-rev135-1.24.1 java-archive
google-auth-library-credentials 0.11.0 java-archive google-api-services-storage-v1-rev135 1.24.1 java-archive
google-auth-library-oauth2-http 0.11.0 java-archive google-auth-library-credentials 0.11.0 java-archive
google-cloud-core 1.44.0 java-archive google-auth-library-oauth2-http 0.11.0 java-archive
google-cloud-core-http 1.44.0 java-archive google-cloud-core 1.44.0 java-archive
google-cloud-storage 1.44.0 java-archive google-cloud-core-http 1.44.0 java-archive
google-http-client 1.26.0 java-archive google-cloud-storage 1.44.0 java-archive
google-http-client-appengine 1.24.1 java-archive google-http-client 1.26.0 java-archive
google-http-client-gson 1.26.0 java-archive google-http-client-appengine 1.24.1 java-archive
google-http-client-jackson 1.24.1 java-archive google-http-client-gson 1.26.0 java-archive
google-http-client-jackson2 1.26.0 java-archive google-http-client-jackson 1.24.1 java-archive
google-http-client-jdo 1.26.0 java-archive google-http-client-jackson2 1.26.0 java-archive
google-oauth-client 1.26.0 java-archive google-http-client-jdo 1.26.0 java-archive
gpg 2.2.27-3ubuntu2.1 deb google-oauth-client 1.26.0 java-archive
gpg-agent 2.2.27-3ubuntu2.1 deb gpg 2.2.27-3ubuntu2.1 deb
gpg-wks-client 2.2.27-3ubuntu2.1 deb gpg-agent 2.2.27-3ubuntu2.1 deb
gpg-wks-server 2.2.27-3ubuntu2.1 deb gpg-wks-client 2.2.27-3ubuntu2.1 deb
gpgconf 2.2.27-3ubuntu2.1 deb gpg-wks-server 2.2.27-3ubuntu2.1 deb
gpgsm 2.2.27-3ubuntu2.1 deb gpgconf 2.2.27-3ubuntu2.1 deb
gpgv 2.2.27-3ubuntu2.1 deb gpgsm 2.2.27-3ubuntu2.1 deb
grep 3.7-1build1 deb gpgv 2.2.27-3ubuntu2.1 deb
gson 2.9.0 java-archive grep 3.7-1build1 deb
guava 31.0.1-jre java-archive gson 2.9.0 java-archive
gzip 1.10-4ubuntu4.1 deb guava 31.0.1-jre java-archive
hibernate-validator 6.2.3.Final java-archive gzip 1.10-4ubuntu4.1 deb
hostname 3.23ubuntu2 deb hibernate-validator 8.0.1.Final java-archive
httpclient 4.5.13 java-archive hostname 3.23ubuntu2 deb
httpcore 4.4.15 java-archive httpclient 4.5.5 java-archive
httpmime 4.5.13 java-archive httpclient5 5.2.3 java-archive
init-system-helpers 1.62 deb httpcore 4.4.16 java-archive
istack-commons-runtime 3.0.5 java-archive httpcore5 5.2.4 java-archive
j2objc-annotations 1.3 java-archive httpcore5-h2 5.2.4 java-archive
jackson-annotations 2.13.3 java-archive init-system-helpers 1.62 deb
jackson-core 2.13.3 java-archive istack-commons-runtime 3.0.5 java-archive
jackson-databind 2.13.3 java-archive j2objc-annotations 1.3 java-archive
jackson-datatype-jdk8 2.13.3 java-archive jackson-annotations 2.15.3 java-archive
jackson-datatype-jsr310 2.13.3 java-archive jackson-core 2.15.3 java-archive
jackson-module-parameter-names 2.13.3 java-archive jackson-databind 2.15.3 java-archive
jakarta.annotation-api 1.3.5 java-archive jackson-datatype-jdk8 2.15.3 java-archive
jakarta.validation-api 2.0.2 java-archive jackson-datatype-jsr310 2.15.3 java-archive
java-binme 1.0 java-archive jackson-module-parameter-names 2.15.3 java-archive
java-common 0.72build2 deb jakarta.activation 2.0.1 java-archive
java-ipv6 0.17 java-archive jakarta.annotation-api 2.1.1 java-archive
java-semver 0.9.0 java-archive jakarta.mail 2.0.1 java-archive
java-ucp 1.1 java-archive jakarta.validation-api 3.0.2 java-archive
java-uuid-generator 4.0.1 java-archive java-binme 2.0.0 java-archive
javax.mail 1.6.2 java-archive java-common 0.72build2 deb
jaxb-api 2.3.0 java-archive java-ipv6 0.17 java-archive
jaxb-core 2.3.0.1 java-archive java-semver 0.9.0 java-archive
jaxb-impl 2.3.0.1 java-archive java-ucp 1.1 java-archive
jaxb-runtime 2.3.0.1 java-archive java-uuid-generator 4.0.1 java-archive
jboss-logging 3.4.3.Final java-archive jaxb-api 2.3.0 java-archive
jcl-over-slf4j 1.7.36 java-archive jaxb-core 2.3.0.1 java-archive
jenetics 4.2.0 java-archive jaxb-impl 2.3.0.1 java-archive
jgrapht-core 1.0.1 java-archive jaxb-runtime 2.3.0.1 java-archive
jgrapht-ext 1.0.1 java-archive jbcrypt 0.4 java-archive
jgraphx 2.0.0.1 java-archive jboss-logging 3.5.3.Final java-archive
jmdns 3.4.1 java-archive jcl-over-slf4j 2.0.11 java-archive
jna 5.9.0 java-archive jenetics 4.2.0 java-archive
joda-time 2.10.4 java-archive jgrapht-core 1.0.1 java-archive
jq 1.6-2.1ubuntu3 deb jgrapht-ext 1.0.1 java-archive
jrt-fs 17.0.9 java-archive jgraphx 2.0.0.1 java-archive
json 20190722 java-archive jmdns 3.4.1 java-archive
jsr305 3.0.1 java-archive jna 5.9.0 java-archive
jsr305 3.0.2 java-archive joda-time 2.10.4 java-archive
jstl 1.2 java-archive jq 1.6-2.1ubuntu3 deb
jstun 0.7.4 java-archive jrt-fs 17.0.10 java-archive
jsvc 1.0.15-8 deb json 20190722 java-archive
jul-to-slf4j 1.7.36 java-archive jsr305 3.0.1 java-archive
lazysodium-java 5.1.2 java-archive jsr305 3.0.2 java-archive
libacl1 2.3.1-1 deb jstl 1.2 java-archive
libapt-pkg6.0 2.4.11 deb jstun 0.7.4 java-archive
libasound2 1.2.6.1-1ubuntu1 deb jsvc 1.0.15-8 deb
libasound2-data 1.2.6.1-1ubuntu1 deb jul-to-slf4j 2.0.11 java-archive
libassuan0 2.5.5-1build1 deb lazysodium-java 5.1.2 java-archive
libattr1 1:2.5.1-1build1 deb libacl1 2.3.1-1 deb
libaudit-common 1:3.0.7-1build1 deb libapt-pkg6.0 2.4.11 deb
libaudit1 1:3.0.7-1build1 deb libasound2 1.2.6.1-1ubuntu1 deb
libavahi-client3 0.8-5ubuntu5.2 deb libasound2-data 1.2.6.1-1ubuntu1 deb
libavahi-common-data 0.8-5ubuntu5.2 deb libassuan0 2.5.5-1build1 deb
libavahi-common3 0.8-5ubuntu5.2 deb libattr1 1:2.5.1-1build1 deb
libblkid1 2.37.2-4ubuntu3 deb libaudit-common 1:3.0.7-1build1 deb
libbrotli1 1.0.9-2build6 deb libaudit1 1:3.0.7-1build1 deb
libbsd0 0.11.5-1 deb libavahi-client3 0.8-5ubuntu5.2 deb
libbz2-1.0 1.0.8-5build1 deb libavahi-common-data 0.8-5ubuntu5.2 deb
libc-bin 2.35-0ubuntu3.1 deb libavahi-common3 0.8-5ubuntu5.2 deb
libc6 2.35-0ubuntu3.1 deb libblkid1 2.37.2-4ubuntu3 deb
libcap-ng0 0.7.9-2.2build3 deb libbrotli1 1.0.9-2build6 deb
libcap2 1:2.44-1ubuntu0.22.04.1 deb libbsd0 0.11.5-1 deb
libcom-err2 1.46.5-2ubuntu1.1 deb libbz2-1.0 1.0.8-5build1 deb
libcommons-daemon-java 1.0.15-8 deb libc-bin 2.35-0ubuntu3.6 deb
libcrypt1 1:4.4.27-1 deb libc6 2.35-0ubuntu3.6 deb
libcups2 2.4.1op1-1ubuntu4.7 deb libcap-ng0 0.7.9-2.2build3 deb
libcurl4 7.81.0-1ubuntu1.15 deb libcap2 1:2.44-1ubuntu0.22.04.1 deb
libdb5.3 5.3.28+dfsg1-0.8ubuntu3 deb libcom-err2 1.46.5-2ubuntu1.1 deb
libdbus-1-3 1.12.20-2ubuntu4.1 deb libcommons-daemon-java 1.0.15-8 deb
libdebconfclient0 0.261ubuntu1 deb libcrypt1 1:4.4.27-1 deb
libexpat1 2.4.7-1ubuntu0.2 deb libcups2 2.4.1op1-1ubuntu4.8 deb
libext2fs2 1.46.5-2ubuntu1.1 deb libcurl4 7.81.0-1ubuntu1.15 deb
libffi8 3.4.2-4 deb libdb5.3 5.3.28+dfsg1-0.8ubuntu3 deb
libfontconfig1 2.13.1-4.2ubuntu5 deb libdbus-1-3 1.12.20-2ubuntu4.1 deb
libfreetype6 2.11.1+dfsg-1ubuntu0.2 deb libdebconfclient0 0.261ubuntu1 deb
libgcc-s1 12.1.0-2ubuntu1~22.04 deb libexpat1 2.4.7-1ubuntu0.3 deb
libgcrypt20 1.9.4-3ubuntu3 deb libext2fs2 1.46.5-2ubuntu1.1 deb
libglib2.0-0 2.72.4-0ubuntu2.2 deb libffi8 3.4.2-4 deb
libgmp10 2:6.2.1+dfsg-3ubuntu1 deb libfontconfig1 2.13.1-4.2ubuntu5 deb
libgnutls30 3.7.3-4ubuntu1.2 deb libfreetype6 2.11.1+dfsg-1ubuntu0.2 deb
libgpg-error0 1.43-3 deb libgcc-s1 12.3.0-1ubuntu1~22.04 deb
libgraphite2-3 1.3.14-1build2 deb libgcrypt20 1.9.4-3ubuntu3 deb
libgssapi-krb5-2 1.19.2-2ubuntu0.2 deb libglib2.0-0 2.72.4-0ubuntu2.2 deb
libharfbuzz0b 2.7.4-1ubuntu3.1 deb libgmp10 2:6.2.1+dfsg-3ubuntu1 deb
libhogweed6 3.7.3-1build2 deb libgnutls30 3.7.3-4ubuntu1.4 deb
libidn2-0 2.3.2-2build1 deb libgpg-error0 1.43-3 deb
libjpeg-turbo8 2.1.2-0ubuntu1 deb libgraphite2-3 1.3.14-1build2 deb
libjpeg8 8c-2ubuntu10 deb libgssapi-krb5-2 1.19.2-2ubuntu0.3 deb
libjq1 1.6-2.1ubuntu3 deb libharfbuzz0b 2.7.4-1ubuntu3.1 deb
libk5crypto3 1.19.2-2ubuntu0.2 deb libhogweed6 3.7.3-1build2 deb
libkeyutils1 1.6.1-2ubuntu3 deb libidn2-0 2.3.2-2build1 deb
libkrb5-3 1.19.2-2ubuntu0.2 deb libjpeg-turbo8 2.1.2-0ubuntu1 deb
libkrb5support0 1.19.2-2ubuntu0.2 deb libjpeg8 8c-2ubuntu10 deb
libksba8 1.6.0-2ubuntu0.2 deb libjq1 1.6-2.1ubuntu3 deb
liblcms2-2 2.12~rc1-2build2 deb libk5crypto3 1.19.2-2ubuntu0.3 deb
libldap-2.5-0 2.5.16+dfsg-0ubuntu0.22.04.2 deb libkeyutils1 1.6.1-2ubuntu3 deb
libldap-common 2.5.16+dfsg-0ubuntu0.22.04.2 deb libkrb5-3 1.19.2-2ubuntu0.3 deb
liblz4-1 1.9.3-2build2 deb libkrb5support0 1.19.2-2ubuntu0.3 deb
liblzma5 5.2.5-2ubuntu1 deb libksba8 1.6.0-2ubuntu0.2 deb
libmd0 1.0.4-1build1 deb liblcms2-2 2.12~rc1-2build2 deb
libmount1 2.37.2-4ubuntu3 deb libldap-2.5-0 2.5.17+dfsg-0ubuntu0.22.04.1 deb
libncurses6 6.3-2ubuntu0.1 deb libldap-common 2.5.17+dfsg-0ubuntu0.22.04.1 deb
libncursesw6 6.3-2ubuntu0.1 deb liblz4-1 1.9.3-2build2 deb
libnettle8 3.7.3-1build2 deb liblzma5 5.2.5-2ubuntu1 deb
libnghttp2-14 1.43.0-1ubuntu0.1 deb libmd0 1.0.4-1build1 deb
libnpth0 1.6-3build2 deb libmount1 2.37.2-4ubuntu3 deb
libnsl2 1.3.0-2build2 deb libncurses6 6.3-2ubuntu0.1 deb
libnspr4 2:4.32-3build1 deb libncursesw6 6.3-2ubuntu0.1 deb
libnss3 2:3.68.2-0ubuntu1.2 deb libnettle8 3.7.3-1build2 deb
libonig5 6.9.7.1-2build1 deb libnghttp2-14 1.43.0-1ubuntu0.1 deb
libp11-kit0 0.24.0-6build1 deb libnpth0 1.6-3build2 deb
libpam-modules 1.4.0-11ubuntu2.3 deb libnsl2 1.3.0-2build2 deb
libpam-modules-bin 1.4.0-11ubuntu2.3 deb libnspr4 2:4.32-3build1 deb
libpam-runtime 1.4.0-11ubuntu2.3 deb libnss3 2:3.68.2-0ubuntu1.2 deb
libpam0g 1.4.0-11ubuntu2.3 deb libonig5 6.9.7.1-2build1 deb
libpcre2-8-0 10.39-3ubuntu0.1 deb libp11-kit0 0.24.0-6build1 deb
libpcre3 2:8.39-13ubuntu0.22.04.1 deb libpam-modules 1.4.0-11ubuntu2.4 deb
libpcsclite1 1.9.5-3ubuntu1 deb libpam-modules-bin 1.4.0-11ubuntu2.4 deb
libpng16-16 1.6.37-3build5 deb libpam-runtime 1.4.0-11ubuntu2.4 deb
libpopt0 1.18-3build1 deb libpam0g 1.4.0-11ubuntu2.4 deb
libprocps8 2:3.3.17-6ubuntu2 deb libpcre2-8-0 10.39-3ubuntu0.1 deb
libpsl5 0.21.0-1.2build2 deb libpcre3 2:8.39-13ubuntu0.22.04.1 deb
libreadline8 8.1.2-1 deb libpcsclite1 1.9.5-3ubuntu1 deb
librtmp1 2.4+20151223.gitfa8646d.1-2build4 deb libpng16-16 1.6.37-3build5 deb
libsasl2-2 2.1.27+dfsg2-3ubuntu1.2 deb libpopt0 1.18-3build1 deb
libsasl2-modules 2.1.27+dfsg2-3ubuntu1.2 deb libprocps8 2:3.3.17-6ubuntu2.1 deb
libsasl2-modules-db 2.1.27+dfsg2-3ubuntu1.2 deb libpsl5 0.21.0-1.2build2 deb
libseccomp2 2.5.3-2ubuntu2 deb libreadline8 8.1.2-1 deb
libselinux1 3.3-1build2 deb librtmp1 2.4+20151223.gitfa8646d.1-2build4 deb
libsemanage-common 3.3-1build2 deb libsasl2-2 2.1.27+dfsg2-3ubuntu1.2 deb
libsemanage2 3.3-1build2 deb libsasl2-modules 2.1.27+dfsg2-3ubuntu1.2 deb
libsepol2 3.3-1build1 deb libsasl2-modules-db 2.1.27+dfsg2-3ubuntu1.2 deb
libsmartcols1 2.37.2-4ubuntu3 deb libseccomp2 2.5.3-2ubuntu2 deb
libsqlite3-0 3.37.2-2ubuntu0.3 deb libselinux1 3.3-1build2 deb
libss2 1.46.5-2ubuntu1.1 deb libsemanage-common 3.3-1build2 deb
libssh-4 0.9.6-2ubuntu0.22.04.3 deb libsemanage2 3.3-1build2 deb
libssl3 3.0.2-0ubuntu1.10 deb libsepol2 3.3-1build1 deb
libstdc++6 12.1.0-2ubuntu1~22.04 deb libsmartcols1 2.37.2-4ubuntu3 deb
libsystemd0 249.11-0ubuntu3.9 deb libsqlite3-0 3.37.2-2ubuntu0.3 deb
libtasn1-6 4.18.0-4build1 deb libss2 1.46.5-2ubuntu1.1 deb
libtinfo6 6.3-2ubuntu0.1 deb libssh-4 0.9.6-2ubuntu0.22.04.3 deb
libtirpc-common 1.3.2-2ubuntu0.1 deb libssl3 3.0.2-0ubuntu1.15 deb
libtirpc3 1.3.2-2ubuntu0.1 deb libstdc++6 12.3.0-1ubuntu1~22.04 deb
libudev1 249.11-0ubuntu3.9 deb libsystemd0 249.11-0ubuntu3.12 deb
libunistring2 1.0-1 deb libtasn1-6 4.18.0-4build1 deb
libuuid1 2.37.2-4ubuntu3 deb libtinfo6 6.3-2ubuntu0.1 deb
libxxhash0 0.8.1-1 deb libtirpc-common 1.3.2-2ubuntu0.1 deb
libzstd1 1.4.8+dfsg-3build1 deb libtirpc3 1.3.2-2ubuntu0.1 deb
locales 2.35-0ubuntu3.6 deb libudev1 249.11-0ubuntu3.12 deb
log4j-api 2.17.2 java-archive libunistring2 1.0-1 deb
log4j-to-slf4j 2.17.2 java-archive libuuid1 2.37.2-4ubuntu3 deb
logback-access 1.2.11 java-archive libxxhash0 0.8.1-1 deb
logback-classic 1.2.11 java-archive libzstd1 1.4.8+dfsg-3build1 deb
logback-core 1.2.11 java-archive locales 2.35-0ubuntu3.6 deb
login 1:4.8.1-2ubuntu2.1 deb log4j-api 2.21.1 java-archive
logrotate 3.19.0-1ubuntu1.1 deb log4j-to-slf4j 2.21.1 java-archive
logsave 1.46.5-2ubuntu1.1 deb logback-access 1.4.14 java-archive
lsb-base 11.1.0ubuntu4 deb logback-classic 1.4.14 java-archive
mawk 1.3.4.20200120-3 deb logback-core 1.4.14 java-archive
minimal-json 0.9.5 java-archive login 1:4.8.1-2ubuntu2.2 deb
mongodb-driver-core 4.6.1 java-archive logrotate 3.19.0-1ubuntu1.1 deb
mongodb-driver-legacy 4.6.1 java-archive logsave 1.46.5-2ubuntu1.1 deb
mongodb-driver-sync 4.6.1 java-archive lsb-base 11.1.0ubuntu4 deb
mount 2.37.2-4ubuntu3 deb mawk 1.3.4.20200120-3 deb
ncurses-base 6.3-2ubuntu0.1 deb micrometer-commons 1.12.2 java-archive
ncurses-bin 6.3-2ubuntu0.1 deb micrometer-observation 1.12.2 java-archive
netcat 1.218-4ubuntu1 deb minimal-json 0.9.5 java-archive
netcat-openbsd 1.218-4ubuntu1 deb mongodb-driver-core 4.11.1 java-archive
openjdk-17-jre-headless 17.0.9+9-1~22.04 deb mongodb-driver-legacy 4.11.1 java-archive
openssh 1.0 java-archive mongodb-driver-sync 4.11.1 java-archive
openssl 3.0.2-0ubuntu1.14 deb mount 2.37.2-4ubuntu3 deb
org.eclipse.paho.client.mqttv3 1.1.0 java-archive ncurses-base 6.3-2ubuntu0.1 deb
owasp-java-html-sanitizer 20190503.1 java-archive ncurses-bin 6.3-2ubuntu0.1 deb
passwd 1:4.8.1-2ubuntu2.1 deb netcat 1.218-4ubuntu1 deb
perl-base 5.34.0-3ubuntu1.2 deb netcat-openbsd 1.218-4ubuntu1 deb
pinentry-curses 1.1.1-1build2 deb openjdk-17-jre-headless 17.0.10+7-1~22.04.1 deb
procps 2:3.3.17-6ubuntu2 deb openssh 1.0 java-archive
proto-google-common-protos 1.12.0 java-archive openssl 3.0.2-0ubuntu1.15 deb
proto-google-iam-v1 0.12.0 java-archive org.eclipse.paho.client.mqttv3 1.1.0 java-archive
protobuf-java 3.6.0 java-archive owasp-java-html-sanitizer 20190503.1 java-archive
protobuf-java-util 3.6.0 java-archive passwd 1:4.8.1-2ubuntu2.2 deb
publicsuffix 20211207.1025-1 deb perl-base 5.34.0-3ubuntu1.3 deb
radclient4 4.0 java-archive pinentry-curses 1.1.1-1build2 deb
reactive-streams 1.0.4 java-archive procps 2:3.3.17-6ubuntu2.1 deb
reactor-core 3.4.21 java-archive proto-google-common-protos 1.12.0 java-archive
readline-common 8.1.2-1 deb proto-google-iam-v1 0.12.0 java-archive
resource-loader 2.0.2 java-archive protobuf-java 3.6.0 java-archive
sed 4.8-1ubuntu2 deb protobuf-java-util 3.6.0 java-archive
sensible-utils 0.0.17 deb publicsuffix 20211207.1025-1 deb
slf4j-api 1.7.36 java-archive radclient4 4.0 java-archive
snakeyaml 1.30 java-archive reactive-streams 1.0.4 java-archive
snappy-java 1.1.8.4 java-archive reactor-core 3.6.2 java-archive
spring-aop 5.3.22 java-archive readline-common 8.1.2-1 deb
spring-beans 5.3.22 java-archive resource-loader 2.0.2 java-archive
spring-boot 2.7.2 java-archive sed 4.8-1ubuntu2 deb
spring-boot-autoconfigure 2.7.2 java-archive sensible-utils 0.0.17 deb
spring-boot-starter 2.7.2 java-archive slf4j-api 2.0.11 java-archive
spring-boot-starter-data-mongodb 2.7.2 java-archive snakeyaml 2.2 java-archive
spring-boot-starter-json 2.7.2 java-archive snappy-java 1.1.10.5 java-archive
spring-boot-starter-logging 2.7.2 java-archive spring-aop 6.1.3 java-archive
spring-boot-starter-tomcat 2.7.2 java-archive spring-beans 6.1.3 java-archive
spring-boot-starter-validation 2.7.2 java-archive spring-boot 3.2.2 java-archive
spring-boot-starter-web 2.7.2 java-archive spring-boot-autoconfigure 3.2.2 java-archive
spring-boot-starter-websocket 2.7.2 java-archive spring-boot-starter 3.2.2 java-archive
spring-context 5.3.22 java-archive spring-boot-starter-data-mongodb 3.2.2 java-archive
spring-core 5.3.22 java-archive spring-boot-starter-json 3.2.2 java-archive
spring-data-commons 2.7.2 java-archive spring-boot-starter-logging 3.2.2 java-archive
spring-data-mongodb 3.4.2 java-archive spring-boot-starter-tomcat 3.2.2 java-archive
spring-expression 5.3.22 java-archive spring-boot-starter-validation 3.2.2 java-archive
spring-messaging 5.3.22 java-archive spring-boot-starter-web 3.2.2 java-archive
spring-tx 5.3.22 java-archive spring-boot-starter-websocket 3.2.2 java-archive
spring-web 5.3.22 java-archive spring-context 6.1.3 java-archive
spring-webmvc 5.3.22 java-archive spring-core 6.1.3 java-archive
spring-websocket 5.3.22 java-archive spring-data-commons 3.2.2 java-archive
sshj 0.27.0 java-archive spring-data-mongodb 4.2.2 java-archive
sysvinit-utils 3.01-1ubuntu1 deb spring-expression 6.1.3 java-archive
tar 1.34+dfsg-1ubuntu0.1.22.04.1 deb spring-messaging 6.1.3 java-archive
tomcat-annotations-api 9.0.65 java-archive spring-tx 6.1.3 java-archive
tomcat-embed-core 9.0.65 java-archive spring-web 6.1.3 java-archive
tomcat-embed-el 9.0.65 java-archive spring-webmvc 6.1.3 java-archive
tomcat-embed-jasper 9.0.65 java-archive spring-websocket 6.1.3 java-archive
tomcat-embed-programmatic 9.0.65 java-archive sshj 0.37.0 java-archive
tomcat-embed-websocket 9.0.65 java-archive sysvinit-utils 3.01-1ubuntu1 deb
txw2 2.3.0.1 java-archive tar 1.34+dfsg-1ubuntu0.1.22.04.2 deb
tzdata 2023d-0ubuntu0.22.04 deb tomcat-annotations-api 10.1.18 java-archive
ubuntu-keyring 2021.03.26 deb tomcat-embed-core 10.1.18 java-archive
ucf 3.0043 deb tomcat-embed-el 10.1.18 java-archive
unzip 6.0-26ubuntu3.2 deb tomcat-embed-jasper 10.1.18 java-archive
urlrewritefilter 4.0.4 java-archive tomcat-embed-websocket 10.1.18 java-archive
usrmerge 25ubuntu2 deb txw2 2.3.0.1 java-archive
util-linux 2.37.2-4ubuntu3 deb tzdata 2024a-0ubuntu0.22.04 deb
zlib1g 1:1.2.11.dfsg-2ubuntu9.2 deb ubuntu-keyring 2021.03.26 deb
ucf 3.0043 deb
unzip 6.0-26ubuntu3.2 deb
urlrewritefilter 4.0.4.1 java-archive
usrmerge 25ubuntu2 deb
util-linux 2.37.2-4ubuntu3 deb
zlib1g 1:1.2.11.dfsg-2ubuntu9.2 deb

View file

@ -19,7 +19,7 @@ development_versions: false
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/data", desc: "All Unifi data stored here" } - { vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/data", desc: "Persistent config files" }
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
@ -61,7 +61,7 @@ app_setup_block: |
### Setting Up Your External Database ### Setting Up Your External Database
Formally only mongodb 3.6 through 4.4 are supported, however, it has been reported that newer versions will work. If you choose to use a newer version be aware that you will not be operating a supported configuration. Starting with version 8.1 of Unifi Network Application, mongodb 3.6 through 7.0 are supported.
**Make sure you pin your database image version and do not use `latest`, as mongodb does not support automatic upgrades between major versions.** **Make sure you pin your database image version and do not use `latest`, as mongodb does not support automatic upgrades between major versions.**
@ -95,9 +95,9 @@ app_setup_block: |
### Device Adoption ### Device Adoption
For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings > System > Advanced and set the Inform Host to a hostname or IP address accessible by your devices. Additionally the checkbox "Override" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption). For Unifi to adopt other devices, e.g. an Access Point, it is required to change the inform IP address. Because Unifi runs inside Docker by default it uses an IP address not accessible by other devices. To change this go to Settings > System > Advanced and set the Inform Host to a hostname or IP address accessible by your devices. Additionally the checkbox "Override" has to be checked, so that devices can connect to the controller during adoption (devices use the inform-endpoint during adoption).
Note that you must use 8080:8080. If you MUST change the port, it must be changed on both sides and manually changed in your system.properties file. Otherwise, devices will initially communicate and then break after. Note that you must use 8080:8080. If you MUST change the port, it must be changed on both sides and manually changed in your system.properties file. Otherwise, devices will initially communicate and then break after.
**Please note, Unifi change the location of this option every few releases so if it's not where it says, search for "Inform" or "Inform Host" in the settings.** **Please note, Unifi change the location of this option every few releases so if it's not where it says, search for "Inform" or "Inform Host" in the settings.**
In order to manually adopt a device take these steps: In order to manually adopt a device take these steps: