├── .dockerignore ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report.md │ ├── config.yml │ ├── documentation-request.md │ └── pull_request.md └── workflows │ └── github_release.yml ├── .gitignore ├── .gitlab-ci.yml ├── .gitlab └── issue_templates │ ├── bug-report.md │ ├── documentation-request.md │ ├── feature-request.md │ └── pull_request.md ├── .releaserc.yml ├── Dockerfile ├── LICENSE ├── README.md ├── img ├── docker-App-Collection_composerizescreenshot.png ├── docker-App-Collection_dcc_screenshot.png ├── docker-App-Collection_favicon.png ├── docker-App-Collection_forks_screenshot.png ├── docker-App-Collection_header.png ├── docker-App-Collection_icon.png ├── docker-App-Collection_nginxconfig.io_screenshot.png ├── docker-App-Collection_noise_screenshot.png ├── docker-App-Collection_screenshot.png ├── docker-App-Collection_tgen_screenshot.png └── docker-App-Collection_triangulator_screenshot.png ├── renovate.json └── root ├── defaults ├── apps.json ├── links.json └── root └── etc └── cont-init.d ├── 30-install └── 40-config /.dockerignore: -------------------------------------------------------------------------------- 1 | .git 2 | .gitignore 3 | .github 4 | .gitattributes 5 | README.md 6 | LICENSE.md 7 | img -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Report a bug with the container / image 4 | --- 5 | 6 | * **What is the current behavior?** 7 | 8 | 9 | 10 | * **If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem** 11 | 12 | 13 | 14 | * **What is the expected behavior?** 15 | 16 | 17 | 18 | * **What is the motivation / use case for changing the behavior?** 19 | 20 | 21 | 22 | * **Please tell us about your environment:** 23 | 24 | - Docker Image: griefed/image:tag e.g. griefed/d-zone:proxy 25 | - docker & docker-compose Version: Use `docker version && docker-compose version` 26 | 27 | ``` 28 | Client: Docker Engine - Community 29 | Version: 19.03.13 30 | API version: 1.40 31 | Go version: go1.13.15 32 | Git commit: 4484c46d9d 33 | Built: Wed Sep 16 17:02:52 2020 34 | OS/Arch: linux/amd64 35 | Experimental: false 36 | 37 | Server: Docker Engine - Community 38 | Engine: 39 | Version: 19.03.13 40 | API version: 1.40 (minimum version 1.12) 41 | Go version: go1.13.15 42 | Git commit: 4484c46d9d 43 | Built: Wed Sep 16 17:01:20 2020 44 | OS/Arch: linux/amd64 45 | Experimental: false 46 | containerd: 47 | Version: 1.3.7 48 | GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175 49 | runc: 50 | Version: 1.0.0-rc10 51 | GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd 52 | docker-init: 53 | Version: 0.18.0 54 | GitCommit: fec3683 55 | docker-compose version 1.25.0, build unknown 56 | docker-py version: 4.1.0 57 | CPython version: 3.8.5 58 | OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020 59 | ``` 60 | 61 | - Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ] 62 | 63 | * **Other information** (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, gitter, etc) 64 | 65 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/documentation-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation Request 3 | about: Request for documentation about a certain aspect of the docker image / container 4 | --- 5 | 6 | # Documentation Request 7 | 8 | 9 | Please include the following: 10 | 11 | * Links to any existing documentation if it exists but is unclear. 12 | * Information on what feature/aspect of this container needs updating / expansion. 13 | * What you're currently trying to do with the container that has led you to require the given feature. 14 | * Some background on what information you might like to see in the documentation. 15 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/pull_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Pull Request 3 | about: Pull request for a change / addition / fix you made to the repository. 4 | --- 5 | 6 | * **Please check if the PR fulfills these requirements** 7 | - [ ] Tests for the changes have been added (for bug fixes / features) 8 | - [ ] Docs have been added / updated (for bug fixes / features) 9 | 10 | 11 | * **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...) 12 | 13 | 14 | 15 | * **What is the current behavior?** (You can also link to an open issue here) 16 | 17 | 18 | 19 | * **What is the new behavior (if this is a feature change)?** 20 | 21 | 22 | 23 | * **Does this PR introduce a breaking change?** (What changes might users need to make in their application due to this PR?) 24 | 25 | 26 | 27 | * **Other information**: 28 | -------------------------------------------------------------------------------- /.github/workflows/github_release.yml: -------------------------------------------------------------------------------- 1 | name: Create GitHub Release after GitLab tag mirror 2 | 3 | on: 4 | push: 5 | tags: 6 | - '[0-9]+.[0-9]+.[0-9]+' 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | # GET LATEST CODE 13 | - name: Checkout latest code 14 | uses: actions/checkout@master 15 | with: 16 | fetch-depth: 0 17 | 18 | # EXTRACT TAG FROM PUSH 19 | - name: Get tag 20 | id: tag 21 | uses: dawidd6/action-get-tag@v1 22 | - name: Use tag 23 | run: echo ${{steps.tag.outputs.tag}} 24 | 25 | # GENERATE CHANGELOG, RELEASE 26 | - id: conventional_changelog 27 | uses: ardalanamini/auto-changelog@master 28 | with: 29 | token: ${{ secrets.GITHUB_TOKEN }} 30 | - name: Create Release 31 | id: create_release 32 | uses: actions/create-release@latest 33 | env: 34 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 35 | with: 36 | tag_name: ${{ github.ref }} 37 | release_name: Release ${{steps.tag.outputs.tag}} 38 | body: | 39 | Automatic release of version: **${{steps.tag.outputs.tag}}** 40 | **Changes in this release:** 41 | ${{ steps.conventional_changelog.outputs.changelog }} 42 | draft: false 43 | prerelease: false -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Windows image file caches 2 | Thumbs.db 3 | ehthumbs.db 4 | 5 | # Folder config file 6 | Desktop.ini 7 | 8 | # Recycle Bin used on file shares 9 | $RECYCLE.BIN/ 10 | 11 | # Windows Installer files 12 | *.cab 13 | *.msi 14 | *.msm 15 | *.msp 16 | 17 | # Windows shortcuts 18 | *.lnk 19 | 20 | # IntelliJ Idea 21 | .idea -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | stages: 2 | - test 3 | - release 4 | - build 5 | 6 | services: 7 | - name: griefed/gitlab-ci-cd:2.2.12 8 | alias: docker 9 | 10 | image: griefed/gitlab-ci-cd:2.2.12 11 | 12 | workflow: 13 | rules: 14 | - if: '$CI_MERGE_REQUEST_EVENT_TYPE == "detached"' 15 | when: never 16 | - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' 17 | when: never 18 | - when: always 19 | 20 | test docker: 21 | stage: test 22 | variables: 23 | project_name: $CI_PROJECT_NAME 24 | SEMANTIC_RELEASE_PACKAGE: $CI_PROJECT_NAME 25 | before_script: 26 | - docker login -u "$DOCKERHUB_USER" -p "$DOCKERHUB_TOKEN" docker.io 27 | - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY 28 | - docker login -u "$DOCKERHUB_USER" -p "$GITHUB_TOKEN" ghcr.io 29 | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes 30 | - docker buildx create --use --name grfdbuilder 31 | script: 32 | - docker buildx build 33 | --push 34 | --no-cache 35 | --platform linux/amd64,linux/arm64 36 | --tag "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:develop-$CI_COMMIT_SHORT_SHA" 37 | --tag "ghcr.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:develop-$CI_COMMIT_SHORT_SHA" . 38 | except: 39 | refs: 40 | - tags 41 | variables: 42 | - $CI_COMMIT_TITLE =~ /^RELEASE:.+$/ 43 | 44 | release: 45 | needs: ['test docker'] 46 | stage: release 47 | variables: 48 | project_name: $CI_PROJECT_NAME 49 | SEMANTIC_RELEASE_PACKAGE: $CI_PROJECT_NAME 50 | script: 51 | - npx semantic-release 52 | only: 53 | - master 54 | except: 55 | refs: 56 | - tags 57 | variables: 58 | - $CI_COMMIT_TITLE =~ /^RELEASE:.+$/ 59 | 60 | build: 61 | stage: build 62 | variables: 63 | project_name: $CI_PROJECT_NAME 64 | SEMANTIC_RELEASE_PACKAGE: $CI_PROJECT_NAME 65 | before_script: 66 | - docker login -u "$DOCKERHUB_USER" -p "$DOCKERHUB_TOKEN" docker.io 67 | - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY 68 | - docker login -u "$DOCKERHUB_USER" -p "$GITHUB_TOKEN" ghcr.io 69 | - docker run --rm --privileged multiarch/qemu-user-static --reset -p yes 70 | - docker buildx create --use --name grfdbuilder 71 | script: 72 | - docker buildx build 73 | --push 74 | --no-cache 75 | --platform linux/amd64,linux/arm64 76 | --tag "ghcr.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:$CI_COMMIT_TAG" 77 | --tag "ghcr.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:latest" 78 | --tag "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:$CI_COMMIT_TAG" 79 | --tag "index.docker.io/$DOCKERHUB_USER/$DOCKERHUB_REPO:latest" . 80 | only: 81 | - tags 82 | 83 | Check Packages:on-schedule: 84 | only: 85 | - schedules 86 | before_script: 87 | - |- 88 | echo "Preparing package versions comparison." 89 | # Check and, if necessary, update git user and mail 90 | if [[ "$(git config --list | grep user.name)" != "user.name=$GIT_USER" ]];then 91 | git config --global user.name $GIT_USER 92 | fi 93 | if [[ "$(git config --list | grep user.email)" != "user.email=$GIT_MAIL" ]];then 94 | git config --global user.email $GIT_MAIL 95 | fi 96 | 97 | # Clean system of potentially interrupting images 98 | docker image rm -f $DOCKERHUB_USER/$DOCKERHUB_REPO:latest 99 | docker image rm -f $DOCKERHUB_REPO 100 | rm -rf /tmp/$CI_PROJECT_PATH 101 | mkdir -p /tmp/$CI_PROJECT_PATH 102 | echo "Preparations complete." 103 | script: 104 | - |- 105 | echo "Comparing package versions." 106 | # Clone the repository 107 | git clone $CI_PROJECT_URL.git /tmp/$CI_PROJECT_PATH && \ 108 | cd /tmp/$CI_PROJECT_PATH && \ 109 | 110 | if [ ! -s "package_versions.txt" ];then 111 | echo "No package_versions.txt present. Creating..." 112 | 113 | # Gather package information from latest build 114 | docker run --rm --entrypoint /bin/sh -v /tmp/$CI_PROJECT_PATH:/tmp $DOCKERHUB_USER/$DOCKERHUB_REPO:latest -c '\ 115 | apt list -qq --installed > /tmp/package_versions.txt && \ 116 | sort -o /tmp/package_versions.txt /tmp/package_versions.txt && \ 117 | chmod 777 /tmp/package_versions.txt' && \ 118 | 119 | # Checkout our branch 120 | git checkout -f $CI_DEFAULT_BRANCH && \ 121 | 122 | wait && \ 123 | 124 | # Add and commit new file to repository 125 | git add package_versions.txt && \ 126 | git commit -m 'chore: Add list of package versions.' && \ 127 | 128 | # Push the changes to the remote 129 | echo "https://***:***@$CI_SERVER_HOST/$CI_PROJECT_PATH.git" 130 | git push "https://$GIT_USER:$GITLAB_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH".git --all && \ 131 | 132 | # Nice 133 | echo "package_versions.txt added." 134 | 135 | elif [ -s "package_versions.txt" ];then 136 | echo "package_versions.txt present. Comapring..." 137 | 138 | # Build local image for new package versions list 139 | docker build --no-cache --tag $DOCKERHUB_REPO . && \ 140 | 141 | # Get packages from newly build local image 142 | docker run --rm --entrypoint /bin/sh -v /tmp/$CI_PROJECT_PATH:/tmp $DOCKERHUB_REPO -c '\ 143 | apt list -qq --installed > /tmp/package_versions_new.txt && \ 144 | sort -o /tmp/package_versions_new.txt /tmp/package_versions_new.txt && \ 145 | chmod 777 /tmp/package_versions_new.txt' && \ 146 | 147 | # Get checksum of old packages 148 | OLD_CHECKSUM=$(md5sum package_versions.txt | cut -f1 -d" ") && \ 149 | 150 | # Get checksum of new packages 151 | NEW_CHECKSUM=$(md5sum package_versions_new.txt | cut -f1 -d" ") && \ 152 | 153 | # If new checksum is not the same as old checksum, we have new versions 154 | if [ "${OLD_CHECKSUM}" != "${NEW_CHECKSUM}" ]; then 155 | 156 | # Checkout our branch 157 | git checkout -f $CI_DEFAULT_BRANCH && \ 158 | 159 | # Copy the new package versions list to repository 160 | mv -f package_versions_new.txt package_versions.txt && \ 161 | 162 | wait && \ 163 | 164 | # Add and commit new file to repository 165 | git add package_versions.txt && \ 166 | git commit -m 'build: Update installed packages in Docker container.' && \ 167 | 168 | # Push the changes to the remote 169 | git push "https://$GIT_USER:$GITLAB_TOKEN@$CI_SERVER_HOST/$CI_PROJECT_PATH.git" --all && \ 170 | 171 | # Nice 172 | echo "Packages updated." 173 | else 174 | echo "No package updates available." 175 | fi 176 | 177 | fi 178 | echo "Comparison complete." 179 | after_script: 180 | - |- 181 | echo "Cleaning up." 182 | docker image rm -f $DOCKERHUB_USER/$DOCKERHUB_REPO:latest 183 | docker image rm -f $DOCKERHUB_REPO 184 | rm -rf /tmp/$CI_PROJECT_PATH 185 | echo "Done." 186 | -------------------------------------------------------------------------------- /.gitlab/issue_templates/bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Report a bug in the application 4 | --- 5 | 6 | * **What is the current behavior?** 7 | 8 | 9 | 10 | * **If the current behavior is a bug, please provide the steps to reproduce** 11 | 12 | 13 | 14 | * **What is the expected behavior?** 15 | 16 | 17 | 18 | * **Please tell us about your environment:** 19 | 20 | 21 | - Your Operating System: 22 | - Your Java version: 23 | - Your version of this piece of software: 24 | - Your config file: 25 | - Your latest log file: 26 | 27 | * **Other information** (e.g. detailed explanation, stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, gitter, etc) 28 | 29 | -------------------------------------------------------------------------------- /.gitlab/issue_templates/documentation-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Documentation Request 3 | about: Request for documentation about a certain aspect of this piece of software 4 | --- 5 | 6 | # Documentation Request 7 | 8 | 9 | Please include the following: 10 | 11 | * Links to any existing documentation if it exists but is unclear. 12 | * Information on what feature/aspect of this application needs updating / expansion. 13 | * What you're currently trying to do with the application that has led you to require the given feature. 14 | * Some background on what information you might like to see in the documentation. 15 | -------------------------------------------------------------------------------- /.gitlab/issue_templates/feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Request a feature for this piece of software 4 | --- 5 | 6 | * **What is the current behavior?** 7 | 8 | 9 | * **What is the wanted/requested behavior?** 10 | 11 | 12 | * **What are your reasons for making this feature request? Provide solid arguments on why I should start working on it.** 13 | -------------------------------------------------------------------------------- /.gitlab/issue_templates/pull_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Pull Request 3 | about: Pull request for a change / addition / fix you made to the repository. 4 | --- 5 | 6 | * **Please check if the PR fulfills these requirements** 7 | - [ ] Docs have been added / updated (for bug fixes / features) 8 | - [ ] Commits follow conventional commits 9 | 35 | 36 | * **What kind of change does this PR introduce?** (Bug fix, feature, docs update, ...) 37 | 38 | 39 | 40 | * **What is the current behavior?** (You can also link to an open issue here) 41 | 42 | 43 | 44 | * **What is the new behavior (if this is a feature change)?** 45 | 46 | 47 | 48 | * **Does this PR introduce a breaking change?** (What changes might users need to make in their application due to this PR?) 49 | 50 | 51 | 52 | * **Other information**: 53 | -------------------------------------------------------------------------------- /.releaserc.yml: -------------------------------------------------------------------------------- 1 | branches: ['master','main'] 2 | ci: true 3 | debug: true 4 | dryRun: false 5 | tagFormat: '${version}' 6 | 7 | # Global plugin options (will be passed to all plugins) 8 | preset: 'conventionalcommits' 9 | gitlabUrl: 'https://git.griefed.de/' # your gitlab url 10 | 11 | # Responsible for verifying conditions necessary to proceed with the release: 12 | # configuration is correct, authentication token are valid, etc... 13 | verifyConditions: 14 | - '@semantic-release/changelog' 15 | - '@semantic-release/git' 16 | - '@semantic-release/gitlab' 17 | 18 | # Responsible for determining the type of the next release (major, minor or patch). 19 | # If multiple plugins with a analyzeCommits step are defined, the release type will be 20 | # the highest one among plugins output. 21 | # Look details at: https://github.com/semantic-release/commit-analyzer#configuration 22 | analyzeCommits: 23 | - path: '@semantic-release/commit-analyzer' 24 | releaseRules: 25 | - type: breaking # Changes that break something makes something incompatible to ealier version 26 | release: major 27 | - type: build # Changes that affect the build system or external dependencies 28 | release: patch 29 | - type: chore # Other changes that don't modify src or test files 30 | release: false 31 | - type: ci # Changes to our CI configuration files and scripts 32 | release: false 33 | - type: docs # Documentation only changes 34 | release: false 35 | - type: feat # A new feature 36 | release: minor 37 | - type: fix # A bug fix 38 | release: patch 39 | - type: perf # A code change that improves performance 40 | release: patch 41 | - type: refactor # A code change that neither fixes a bug nor adds a feature 42 | release: false 43 | - type: revert # Reverts a previous commit 44 | release: patch 45 | - type: style # Changes that do not affect the meaning of the code 46 | release: false 47 | - type: test # Adding missing tests or correcting existing tests 48 | release: false 49 | 50 | # Responsible for generating the content of the release note. 51 | # If multiple plugins with a generateNotes step are defined, 52 | # the release notes will be the result of the concatenation of each plugin output. 53 | generateNotes: 54 | - path: '@semantic-release/release-notes-generator' 55 | writerOpts: 56 | groupBy: 'type' 57 | commitGroupsSort: 'title' 58 | commitsSort: 'header' 59 | linkCompare: true 60 | linkReferences: true 61 | presetConfig: 62 | types: # looks like it only works with 'conventionalcommits' preset 63 | - type: 'build' 64 | section: '🦊 CI/CD' 65 | hidden: false 66 | - type: 'chore' 67 | section: 'Other' 68 | hidden: false 69 | - type: 'ci' 70 | section: '🦊 CI/CD' 71 | hidden: false 72 | - type: 'docs' 73 | section: '📔 Docs' 74 | hidden: false 75 | - type: 'example' 76 | section: '📝 Examples' 77 | hidden: false 78 | - type: 'feat' 79 | section: '🚀 Features' 80 | hidden: false 81 | - type: 'fix' 82 | section: '🛠 Fixes' 83 | hidden: false 84 | - type: 'perf' 85 | section: '⏩ Performance' 86 | hidden: false 87 | - type: 'refactor' 88 | section: ':scissors: Refactor' 89 | hidden: false 90 | - type: 'revert' 91 | section: '👀 Reverts' 92 | hidden: false 93 | - type: 'style' 94 | section: '💈 Style' 95 | hidden: false 96 | - type: 'test' 97 | section: '🧪 Tests' 98 | hidden: false 99 | 100 | # Responsible for preparing the release, for example creating or updating files 101 | # such as package.json, CHANGELOG.md, documentation or compiled assets 102 | # and pushing a commit. 103 | prepare: 104 | # - path: '@semantic-release/exec' 105 | # # Execute shell command to set package version 106 | # cmd: './deployment/version-plaintext-set.sh ${nextRelease.version}' 107 | # - path: '@semantic-release/exec' 108 | # cmd: './deployment/version-oas-set.sh ${nextRelease.version} openapi.yaml' 109 | # - path: '@semantic-release/exec' 110 | # verifyReleaseCmd: "echo ${nextRelease.version} > VERSION.txt" 111 | - path: '@semantic-release/changelog' 112 | # Create or update the changelog file in the local project repository 113 | - path: '@semantic-release/git' 114 | # Push a release commit and tag, including configurable files 115 | message: 'RELEASE: ${nextRelease.version}' 116 | assets: ['CHANGELOG.md'] 117 | 118 | # Responsible for publishing the release. 119 | publish: 120 | - path: '@semantic-release/gitlab' 121 | # Publish a GitLab release 122 | # (https://docs.gitlab.com/ce/user/project/releases/index.html#add-release-notes-to-git-tags) 123 | 124 | success: false 125 | 126 | fail: false 127 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM lsiobase/nginx:3.18 2 | 3 | LABEL maintainer="Griefed " 4 | 5 | ARG TGEN_VERSION="1.3.5" 6 | 7 | RUN \ 8 | echo "**** Install dependencies, build tools and stuff ****" && \ 9 | apk add --no-cache \ 10 | curl \ 11 | git \ 12 | jq \ 13 | make \ 14 | npm \ 15 | php-gd \ 16 | python3 \ 17 | unzip && \ 18 | echo "**** Cleanup ****" && \ 19 | rm -rf \ 20 | /root/.cache \ 21 | /tmp/* && \ 22 | echo $TGEN_VERSION > /version.txt 23 | 24 | # Copy local files 25 | COPY root/ / 26 | 27 | # Communicate ports and volumes to be used 28 | EXPOSE 80 443 29 | 30 | VOLUME /config 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | 9 | This version of the GNU Lesser General Public License incorporates 10 | the terms and conditions of version 3 of the GNU General Public 11 | License, supplemented by the additional permissions listed below. 12 | 13 | 0. Additional Definitions. 14 | 15 | As used herein, "this License" refers to version 3 of the GNU Lesser 16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 17 | General Public License. 18 | 19 | "The Library" refers to a covered work governed by this License, 20 | other than an Application or a Combined Work as defined below. 21 | 22 | An "Application" is any work that makes use of an interface provided 23 | by the Library, but which is not otherwise based on the Library. 24 | Defining a subclass of a class defined by the Library is deemed a mode 25 | of using an interface provided by the Library. 26 | 27 | A "Combined Work" is a work produced by combining or linking an 28 | Application with the Library. The particular version of the Library 29 | with which the Combined Work was made is also called the "Linked 30 | Version". 31 | 32 | The "Minimal Corresponding Source" for a Combined Work means the 33 | Corresponding Source for the Combined Work, excluding any source code 34 | for portions of the Combined Work that, considered in isolation, are 35 | based on the Application, and not on the Linked Version. 36 | 37 | The "Corresponding Application Code" for a Combined Work means the 38 | object code and/or source code for the Application, including any data 39 | and utility programs needed for reproducing the Combined Work from the 40 | Application, but excluding the System Libraries of the Combined Work. 41 | 42 | 1. Exception to Section 3 of the GNU GPL. 43 | 44 | You may convey a covered work under sections 3 and 4 of this License 45 | without being bound by section 3 of the GNU GPL. 46 | 47 | 2. Conveying Modified Versions. 48 | 49 | If you modify a copy of the Library, and, in your modifications, a 50 | facility refers to a function or data to be supplied by an Application 51 | that uses the facility (other than as an argument passed when the 52 | facility is invoked), then you may convey a copy of the modified 53 | version: 54 | 55 | a) under this License, provided that you make a good faith effort to 56 | ensure that, in the event an Application does not supply the 57 | function or data, the facility still operates, and performs 58 | whatever part of its purpose remains meaningful, or 59 | 60 | b) under the GNU GPL, with none of the additional permissions of 61 | this License applicable to that copy. 62 | 63 | 3. Object Code Incorporating Material from Library Header Files. 64 | 65 | The object code form of an Application may incorporate material from 66 | a header file that is part of the Library. You may convey such object 67 | code under terms of your choice, provided that, if the incorporated 68 | material is not limited to numerical parameters, data structure 69 | layouts and accessors, or small macros, inline functions and templates 70 | (ten or fewer lines in length), you do both of the following: 71 | 72 | a) Give prominent notice with each copy of the object code that the 73 | Library is used in it and that the Library and its use are 74 | covered by this License. 75 | 76 | b) Accompany the object code with a copy of the GNU GPL and this license 77 | document. 78 | 79 | 4. Combined Works. 80 | 81 | You may convey a Combined Work under terms of your choice that, 82 | taken together, effectively do not restrict modification of the 83 | portions of the Library contained in the Combined Work and reverse 84 | engineering for debugging such modifications, if you also do each of 85 | the following: 86 | 87 | a) Give prominent notice with each copy of the Combined Work that 88 | the Library is used in it and that the Library and its use are 89 | covered by this License. 90 | 91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 92 | document. 93 | 94 | c) For a Combined Work that displays copyright notices during 95 | execution, include the copyright notice for the Library among 96 | these notices, as well as a reference directing the user to the 97 | copies of the GNU GPL and this license document. 98 | 99 | d) Do one of the following: 100 | 101 | 0) Convey the Minimal Corresponding Source under the terms of this 102 | License, and the Corresponding Application Code in a form 103 | suitable for, and under terms that permit, the user to 104 | recombine or relink the Application with a modified version of 105 | the Linked Version to produce a modified Combined Work, in the 106 | manner specified by section 6 of the GNU GPL for conveying 107 | Corresponding Source. 108 | 109 | 1) Use a suitable shared library mechanism for linking with the 110 | Library. A suitable mechanism is one that (a) uses at run time 111 | a copy of the Library already present on the user's computer 112 | system, and (b) will operate properly with a modified version 113 | of the Library that is interface-compatible with the Linked 114 | Version. 115 | 116 | e) Provide Installation Information, but only if you would otherwise 117 | be required to provide such information under section 6 of the 118 | GNU GPL, and only to the extent that such information is 119 | necessary to install and execute a modified version of the 120 | Combined Work produced by recombining or relinking the 121 | Application with a modified version of the Linked Version. (If 122 | you use option 4d0, the Installation Information must accompany 123 | the Minimal Corresponding Source and Corresponding Application 124 | Code. If you use option 4d1, you must provide the Installation 125 | Information in the manner specified by section 6 of the GNU GPL 126 | for conveying Corresponding Source.) 127 | 128 | 5. Combined Libraries. 129 | 130 | You may place library facilities that are a work based on the 131 | Library side by side in a single library together with other library 132 | facilities that are not Applications and are not covered by this 133 | License, and convey such a combined library under terms of your 134 | choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based 137 | on the Library, uncombined with any other library facilities, 138 | conveyed under the terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it 141 | is a work based on the Library, and explaining where to find the 142 | accompanying uncombined form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions 147 | of the GNU Lesser General Public License from time to time. Such new 148 | versions will be similar in spirit to the present version, but may 149 | differ in detail to address new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the 152 | Library as you received it specifies that a certain numbered version 153 | of the GNU Lesser General Public License "or any later version" 154 | applies to it, you have the option of following the terms and 155 | conditions either of that published version or of any later version 156 | published by the Free Software Foundation. If the Library as you 157 | received it does not specify a version number of the GNU Lesser 158 | General Public License, you may choose any version of the GNU Lesser 159 | General Public License ever published by the Free Software Foundation. 160 | 161 | If the Library as you received it specifies that a proxy can decide 162 | whether future versions of the GNU Lesser General Public License shall 163 | apply, that proxy's public statement of acceptance of any version is 164 | permanent authorization for you to choose that version for the 165 | Library. 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![docker-App-Collection](https://i.griefed.de/images/2020/11/18/docker-App-Collection_header.png)](https://github.com/Griefed/docker-App-Collection) 2 | 3 | [![Homepage](https://img.shields.io/badge/Griefed.de-Homepage-c0ffee?style=for-the-badge&labelColor=325358&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAACylBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f39/f3+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v6OsnIvAAAA7XRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiQlJicoKSorLC0uLzAxMjU2Nzg5Ojs8Pj9AQUJERUZHSElLTE9QUVJTVFVWV1hZXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6Cio6WmqKmqq6ytrrCxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jKy8zNzs/Q0dLT1NXW2Nrb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f4O/wLaAAAGUklEQVR42o3WBVsb2xoF4G9PQqgXubktUnd3d3fFqjjHQt2Vg9Xd3TXU3d1b3KEugczM+g8nY5VAmrxYZGaxtj1A9jgfcoS1SdKTUx73gg2kYZzOTcdIYQjKeVWZnPJ7a91bh2zc6/SJWbNj16F9G+aNa12VkXGjBYU+5FTTz0DqmPphB9MsIjRCgXnRXRH42pSc6lQCgLdCIYoifsL3IqcG8FB8e34sISpkUnjUjKRj2VpeIDmjmweFdYeRkcr/mtYjK9CNfstnt1pAyFxmJA3XIi5VUDucqEeOsV5p6u2v5tbl6Cecb9RtC2T5Qxk5wE35rN5u8uPKhHuMPPZB/FgClEzXUbl0s3jg6S3+Ubgnlati1w1XB74ExPhyJ4KbzQNHasQHVyeHdH56nxQpoZwOLIyHuLkC6ciJSrtEiNMZ2ev3BdjgTi6ouAsoGUJ2amUCh9zJJZVSgHy71XQ7CDzwJhf5vQRO/DqR4wR87qYn1+gS7gHi0gGdmvp5cKSv4tOsd1A68PaaH7loAg8bvuTz23s+lPS66BsvAhDX66rWlDlt4vEYitIgojbZULzvwqSH/OOPy8iZCBGyPQYiFmSB7GgFBpuNNPrtWfOZW2bzlcvmlFtnzGdvms3XLppTbqeYz18/15YkXq8heVObbAwb5DjLCJID4qjfmTBDyNTuxpi/vHtOCTGEhrarE/FX1cGTR1eMiuxxsTVJYgWp7GiSGe/A5rYHMVy68eGU35wddXc3o/EJ7u4rxlKLXXVYxHx91Y0DqNv2/7E5C5QOflIFoSkpZktPIhkxPMzNB7AzpHdYjcjh3XsOifl/aO+QOlPHtRs84E/vqL6jmwZP6HFO6sDNlyr8STJ2GECqLxHDLTmgcINpxZNZplPHTbOeJps23ZlhOn/AtOD5UtOua7GxZxMfMCKql8UDpxhJKmdCFOI4Iia+KCoGYO5rZ/qGn591Ihtu+V4euVVJ0qwUqZdakM3UE6mb41Lj2pOdfn9TGcYa6bC2JMkwEfv8dSQJmBDtYSZyJYDYGWAUSf4BlpAiIMJ/4R0XA2g1MJMkiUCUFrCs34bnrgaYgLVyle0QA7SAwMAGZlcDJgC75YC9EMdqAXcXBDxyNWA8cJBsdCeBUC1gZijnuIFnTVVFkgQAR8iGOwxEawHjfUPPkL1mJ+/0JKKW36C6TpIQYA9JtgLztYB1AcnvyE717LeFX5sT9YMmlyR/qZNIC4Et3xs0DCjToGeSu25KZNmARO0XBwKXOTVgaQAzk53aNYn07ewDdLWOAQEkac8jx9+oBFyOL2cVmPxJjd6LqtPSjFzOBt9emdwi8IeXccoQRraxazDYpAqqvnqnagoRFy8ARZ4k4S4AQmY9ZRlbL3hFP2Ol0ERDk0PklwbgPEeymQCEeZwUMKNt/INfA/DdPz/NAYsW8OMItRYBvPKTAoKm+JpdCfC4A5s7RpKNldKEWCng2Sy7SWQiNFHQZNAoC2zE9QayqZMKyStPooA/ovVyA6Yh0w5VfOWl2sNhFY9DZglkRIZ9kAnh0ip4RF8gonioSgc9hKpggADVo24foMhuQxRiheJxdWkrrywmohS7gds9zN8oAhD5r4WvEsnn3tvPJcofyxBbg7bDU5wHfLr2EcgO7NnUp7KeuOq+TTr2TxCB+/G6gFUjmAsBeUNKIQTSz9wvAGm1KeDE2vHSKqyHih/5GqqPnZ/nqi6mAUfc6BdN3gKXqgSMH9DNTETBO1RrqoZrDxdzpKpyGciuTXbGWYGDocv7xWcQUS40fQRompOi0gHg2wCyxy0EkBXhP/cWEeVD0w/ftSIbHVXeBwjRjMrQrxOBq9OMV3SOAzwmJPifBwR1OHbc1wJIH5q2sWvFcofQwivyCX/3NSAu0VO59AutgNUifji2f+O/cbL5VYLiFPHJM16LkFj+5sgBbtxbyCx3on79f52rP/+12iVvMCPHGp8TIRNS/22hI40xLku9XTxel37LMDUPCvGKP6k4n708FEvdyJlgEYqis2tmhE+dGDZr/dl0KxR8f3KqN49yCTyAkg7kVLNvgHh72YViAd9Z81JMLcakAp+bkFM+RbCsMxLn1Wnism1Hjh/YsSp2ZMtqjIjq7LW+9SWnqrzODjCQijFGPxiC71Ynp/RJrZnjehzZ+Q9fNggLmTcf8AAAAABJRU5ErkJggg==)](https://www.griefed.de) 4 | [![Blog](https://img.shields.io/badge/Griefed.de-Blog-c0ffee?style=for-the-badge&labelColor=325358&logo=wordpress)](https://blog.griefed.de) 5 | [![Fleet](https://img.shields.io/badge/Griefed.de-Fleet-c0ffee?style=for-the-badge&labelColor=325358&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAABiVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8XJWL///8gNCTuAAAAgXRSTlMAAgMEBQYHCAkLDA4PEBESFhgZGh0eISIlKC8zNDU3OT0+P0BBQkhKS01QU1RVVltcXWJjZGlrbG1wcnN0eHl6e4CBhYyOkJWWmZ6foaKkqaqsrrKztLe8vsHExcbHy8zNz9DT1NXX2Nna293e3+Tm5+nq7O3u7/Hy9fb4+fr7/f4zgtRAAAABWklEQVR42mKgHhCFMbg0dHW1xNGlBcw5wTS7tkcJoNV5UJItBoMA3GPjcm3btm3btq1+8s1JxijuV0p+X5NzVcfNRoT4O26ClEZykdydI5ddCHDt+EfqthiwYoXfRH++yb9r8IZ+o/CpeB1hE/zMtXf0KYKkP9p8ZSaCfq1S2ddDU84zrsuXYXZjYy0VcBxQKYVmgQ9slS8HhUbxSP+kNAPB+kIyO1ggr5mn9GoX70wKydA4/RNQQSVPvGspZEHQ5ZKHK5lu8UymUi/enRQuxYjcN5LPH+RTQfcVlQ4AbfJ1n4JKRusG0ErpzCn3vjFMe8g9/eUU2himHEAilc+Vq6XJ4Zyx6eXTk3f6/IOww7i2oOliXNXQ/H5kHBcWSO2MowyKJc4VU/BLOGcMm04EJF3FyHsQImkvMj/tQBhrz0to+rwSUf70XvjT23VWxKLLaBkYGuqr+Y8f9Q3q0fzzGED8cgAAAABJRU5ErkJggg==)](https://fleet.griefed.de) 6 | [![GitHub](https://img.shields.io/badge/Griefed.de-Github-c0ffee?style=for-the-badge&labelColor=325358&logo=github)](https://github.com/Griefed) 7 | [![DockerHub](https://img.shields.io/badge/Griefed.de-DockerHub-c0ffee?style=for-the-badge&labelColor=325358&logo=docker&logoColor=white)](https://hub.docker.com/u/griefed) 8 | [![Discord](https://img.shields.io/badge/Griefed.de-Discord-c0ffee?style=for-the-badge&labelColor=325358&logo=discord&logoColor=white)](https://discord.griefed.de) 9 | 10 | --- 11 | 12 | # Sources, GitHub, GitLab and Mirroring and all that good stuff 13 | 14 | Repositories on GitHub are now for issues only. I've set up my own installation of GitLab and moved all my repositories over to [Git.Griefed.de](https://git.griefed.de/users/Griefed/projects). Make sure to check there first for the latest code before opening an issue on GitHub. 15 | 16 | For questions, you can always join my [Discord server](https://discord.griefed.de) and talk to me there. 17 | 18 | --- 19 | # docker-App-Collection 20 | 21 | [![Docker Pulls](https://img.shields.io/docker/pulls/griefed/app-collection?style=for-the-badge&logo=Docker&labelColor=325358&color=c0ffee&logoColor=white)](https://hub.docker.com/repository/docker/griefed/app-collection) 22 | [![Docker Cloud Automated build](https://img.shields.io/docker/cloud/automated/griefed/app-collection?label=Docker%20build&style=for-the-badge&logo=Docker&labelColor=325358&color=c0ffee&logoColor=white)](https://hub.docker.com/repository/docker/griefed/app-collection) 23 | [![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/griefed/app-collection?label=Docker%20build&style=for-the-badge&logo=Docker&labelColor=325358&color=c0ffee&logoColor=white)](https://hub.docker.com/repository/docker/griefed/app-collection) 24 | [![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/griefed/app-collection?label=Image%20size&sort=date&style=for-the-badge&logo=Docker&labelColor=325358&color=c0ffee&logoColor=white)](https://hub.docker.com/repository/docker/griefed/app-collection) 25 | [![GitHub Repo stars](https://img.shields.io/github/stars/Griefed/docker-App-Collection?label=GitHub%20Stars&style=for-the-badge&logo=Github&labelColor=325358&color=c0ffee)](https://github.com/Griefed/docker-App-Collection) 26 | [![GitHub forks](https://img.shields.io/github/forks/Griefed/docker-App-Collection?label=GitHub%20Forks&style=for-the-badge&logo=Github&labelColor=325358&color=c0ffee)](https://github.com/Griefed/docker-App-Collection) 27 | 28 | App-Collection is, as the name implies, a collection of various apps which I have previously released in separate Docker Containers and am now moving/collecting into one single container.

Please keep in mind that the first start of the container may take a while.
That is due to the apps and how they are installed on first run as they are not part of the image itself.
Especially Composerize can take a couple of minutes to finish. 29 | 30 | Current applications: 31 | 32 | Creator | Repository 33 | --------|------------ 34 | [lukaszmn](https://github.com/lukaszmn) | [active-forks](https://github.com/lukaszmn/active-forks), a fork of [techgaun's](https://github.com/techgaun) [active-forks](https://github.com/techgaun/active-forks) 35 | [magicmark](https://github.com/magicmark) | [composerize](https://github.com/magicmark/composerize) 36 | [bucherfa](https://github.com/bucherfa) | [Griefed's](https://github.com/Griefed) [dcc-web](https://github.com/Griefed/dcc-web), a fork of [bucherfa's](https://github.com/bucherfa) [dcc-web](https://github.com/bucherfa/dcc-web) 37 | [digitalocean](https://github.com/digitalocean) | [nginxconfig.io](https://github.com/digitalocean/nginxconfig.io) 38 | [ThreadR-r](https://github.com/ThreadR-r) | [sui-dashboard-status](https://github.com/ThreadR-r/sui-dashboard-status), a fork of [jeroenpardon's](https://github.com/jeroenpardon) [sui](https://github.com/jeroenpardon/sui) 39 | [maeglin89273](https://github.com/maeglin89273) | [triangulator](https://github.com/maeglin89273/triangulator) 40 | [schalkt](https://github.com/schalkt) | [tgen](https://github.com/schalkt/tgen) 41 | [RundesBalli](https://github.com/RundesBalli) | [Griefed's](https://github.com/Griefed) [php-noise.com](https://github.com/Griefed/php-noise.com), a fork of [RundesBalli's](https://github.com/RundesBalli) [php-noise.com](https://github.com/RundesBalli/php-noise.com) 42 | [RundesBalli](https://github.com/RundesBalli) | [php-noise](https://github.com/RundesBalli/php-noise) 43 | 44 | App-Collection | Screenshots 45 | ------|------ 46 | [![active-forks](https://i.griefed.de/images/2020/11/19/docker-App-Collection_forks_screenshot.png)](https://github.com/lukaszmn/active-forks) | [![composerize](https://i.griefed.de/images/2020/11/19/docker-App-Collection_composerizescreenshot.png)](https://github.com/magicmark/composerize) 47 | [![dcc-web](https://i.griefed.de/images/2020/11/19/docker-App-Collection_dcc_screenshot.png)](https://github.com/bucherfa/dcc-web) | [![nginxconfig.io](https://i.griefed.de/images/2020/11/19/docker-App-Collection_nginxconfig.io_screenshot.png)](https://github.com/digitalocean/nginxconfig.io) 48 | [![sui-dashboard-status](https://i.griefed.de/images/2020/11/19/docker-App-Collection_screenshot.png)](https://github.com/ThreadR-r/sui-dashboard-status) | [![triangulator](https://i.griefed.de/images/2020/11/19/docker-App-Collection_triangulator_screenshot.png)](https://github.com/maeglin89273/triangulator) 49 | [![tgen](https://i.griefed.de/images/2020/11/28/docker-App-Collection_tgen_screenshot.png)](https://github.com/schalkt/tgen) | [![php-noise](https://i.griefed.de/images/2021/01/22/docker-App-Collection_noise_screenshot.png)](https://github.com/RundesBalli/php-noise.com) 50 | 51 | [[_TOC_]] 52 | 53 | --- 54 | 55 | Creates a Container which runs [Griefed's](https://github.com/Griefed) [docker-App-Collection](https://github.com/Griefed/docker-App-Collection), with [lsiobase/nginx](https://hub.docker.com/r/lsiobase/lsiobase/nginx) as the base image, similar to https://apps.griefed.de. 56 | 57 | The [lsiobase/nginx](https://hub.docker.com/r/lsiobase/nginx) image is a custom base image built with [Alpine linux](https://alpinelinux.org/) and [S6 overlay](https://github.com/just-containers/s6-overlay). 58 | Using this image allows us to use the same user/group ids in the container as on the host, making file transfers much easier 59 | 60 | # Deployment 61 | 62 | Tags | Description 63 | -----|------------ 64 | `latest` | Using the `latest` tag will pull the latest image for linux/amd64,linux/arm/v7,linux/arm64. 65 | `develop` | The latest image of, if existent, the in-dev version of this container. Use at your own risk! 66 | 67 | Using GitHub Workflows, images for this container are multi-arch. Simply pulling `:latest` should retrieve the correct image for your architecture. 68 | Images are available for linux/amd64,linux/arm/v7,linux/arm64. 69 | 70 | ## Pre-built images 71 | 72 | using docker-compose: 73 | 74 | ```docker-compose.yml 75 | version: "2" 76 | services: 77 | app-collection: 78 | image: griefed/app-collection:latest 79 | container_name: app-collection 80 | restart: unless-stopped 81 | environment: 82 | - TZ=Europe/Berlin # Timezone 83 | - PUID=1000 # User ID 84 | - PROTOCOL=https # The protocol used to access this container. Either HTTP or HTTPS. 85 | - PGID=1000 # Group ID 86 | - INSTALL_TRIANGULATOR=true # Whether to install triangulator. Either true or false. 87 | - INSTALL_TGEN=true # Whether to install tgen. Either true or false. 88 | - INSTALL_NGINXCONFIG_IO=true # Whether to install NGINXConfig.io. Either true or false. 89 | - INSTALL_DCC=true # Whether to install dcc. Either true or false. 90 | - INSTALL_COMPOSERIZE=true # Whether to install composerize. Either true or false. 91 | - INSTALL_ACTIVE_GITHUB_FORKS=true # Whether to install Active GitHub Forks. Either true or false. 92 | - INSTALL_PHP_NOISE=true # Whether to install php-noise. Either true or false. 93 | - DOMAIN=www.example.com # The address of the device this container is running on. Can be an IP or sub.domain.tld. 94 | volumes: 95 | - /host/path/to/config:/config # Contains all application data and base-image config files 96 | ports: 97 | - 443:443 # https 98 | - 80:80 # http 99 | ``` 100 | 101 | Using CLI: 102 | 103 | ```bash 104 | docker create \ 105 | --name=app-collection \ 106 | -e TZ=Europe/Berlin \ 107 | -e PUID=1000 \ 108 | -e PROTOCOL=https \ 109 | -e PGID=1000 \ 110 | -e INSTALL_TRIANGULATOR=true \ 111 | -e INSTALL_TGEN=true \ 112 | -e INSTALL_NGINXCONFIG_IO=true \ 113 | -e INSTALL_DCC=true \ 114 | -e INSTALL_COMPOSERIZE=true \ 115 | -e INSTALL_ACTIVE_GITHUB_FORKS=true \ 116 | -e INSTALL_PHP_NOISE=true \ 117 | -e DOMAIN=www.example.com \ 118 | -v /host/path/to/config:/config \ 119 | -p 443:443 \ 120 | -p 80:80 \ 121 | --restart unless-stopped \ 122 | griefed/app-collection:latest 123 | ``` 124 | 125 | # Configuration 126 | 127 | Configuration | Explanation 128 | ------------ | ------------- 129 | [Restart policy](https://docs.docker.com/compose/compose-file/#restart) | "no", always, on-failure, unless-stopped 130 | config volume | Contains config files and logs. 131 | TZ | Timezone 132 | PUID | for UserID 133 | PGID | for GroupID 134 | DOMAIN | The address of the device this container is running on. Can be an IP or sub.domain.tld. 135 | PROTOCOL | The protocol used to access this container. Either HTTP or HTTPS. 136 | INSTALL_DCC | Either `true` or `false`. 137 | INSTALL_COMPOSERIZE | Either `true` or `false`. 138 | INSTALL_NGINXCONFIG_IO | Either `true` or `false`. 139 | INSTALL_TGEN | Either `true` or `false`. 140 | INSTALL_TRIANGULATOR | Either `true` or `false`. 141 | INSTALL_ACTIVE_GITHUB_FORKS | Either `true` or `false`. 142 | INSTALL_PHP_NOISE | Either `true` or `false`. 143 | ports | The port where the service will be available at. 144 | 145 | ## INSTALL and .lock files 146 | 147 | If `INSTALL_`-variable is set to `false`, App-Collection will not install that app during boot. If set to `true`, App-Collection will install the corresponding app and place a `appname.lock` file in the `/config/www/` folder. 148 | If at any point you wish to reinstall one of the apps, make sure the corresponding `appname.lock` file is deleted. 149 | If at any point you wish to uninstall one of the apps: 150 | 1. Stop the container with `docker stop app-collection` 151 | 1. Set the `INSTALL_`-variable for the app you do not want to install to `false` 152 | 1. Edit your apps.json and remove entries no longer available. 153 | 1. Optionally, if you didn't edit your apps.json, delete the folder you specified in `volumes:` so App-Collection will generate a fresh one. 154 | 1. Run `docker-compose up -d app-collection` 155 | 156 | 157 | ## User / Group Identifiers 158 | 159 | When using volumes, permissions issues can arise between the host OS and the container. [Linuxserver.io](https://www.linuxserver.io/) avoids this issue by allowing you to specify the user `PUID` and group `PGID`. 160 | 161 | Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. 162 | 163 | In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below: 164 | 165 | ``` 166 | $ id username 167 | uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) 168 | ``` 169 | 170 | # Building the image yourself 171 | 172 | Use the [Dockerfile](https://github.com/Griefed/docker-App-Collection/Dockerfile) to build the image yourself, in case you want to make any changes to it 173 | 174 | docker-compose.yml 175 | 176 | ```docker-compose.yml 177 | version: '3.6' 178 | services: 179 | app-collection: 180 | build: ./docker-App-Collection/ 181 | container_name: app-collection 182 | restart: unless-stopped 183 | environment: 184 | - TZ=Europe/Berlin # Timezone 185 | - PUID=1000 # User ID 186 | - PROTOCOL=https # The protocol used to access this container. Either HTTP or HTTPS. 187 | - PGID=1000 # Group ID 188 | - INSTALL_TRIANGULATOR=true # Whether to install triangulator. Either true or false. 189 | - INSTALL_TGEN=true # Whether to install tgen. Either true or false. 190 | - INSTALL_NGINXCONFIG_IO=true # Whether to install NGINXConfig.io. Either true or false. 191 | - INSTALL_DCC=true # Whether to install dcc. Either true or false. 192 | - INSTALL_COMPOSERIZE=true # Whether to install composerize. Either true or false. 193 | - INSTALL_ACTIVE_GITHUB_FORKS=true # Whether to install Active GitHub Forks. Either true or false. 194 | - INSTALL_PHP_NOISE=true # Whether to install php-noise. Either true or false. 195 | - DOMAIN=www.example.com # The address of the device this container is running on. Can be an IP or sub.domain.tld. 196 | volumes: 197 | - /host/path/to/config:/config # Contains all application data and base-image config files 198 | ports: 199 | - 443:443 # https 200 | - 80:80 # http 201 | ``` 202 | 203 | 1. Clone the repository: `git clone https://github.com/Griefed/docker-App-Collection.git ./docker-App-Collection` 204 | 1. Prepare docker-compose.yml file as seen above 205 | 1. `docker-compose up -d --build app-collection` 206 | 1. Visit IP.ADDRESS.OF.HOST:8080 207 | 1. ??? 208 | 1. Profit! 209 | 210 | # App Information 211 | 212 | ## Active GitHub Forks 213 | 214 | * works after providing a **personal GitHub token**. It is used only to increase the limits to query to API. The token is stored in Local Storage only, not sent anywhere except for the GitHub API. 215 | * include the **original repository** in the list, marked in bold 216 | * after expanding **Options**, it is possible to increase the **maximum amount of forks** to retrieve and to utilize some kind of caching 217 | * retrieve **commits of each fork** and show the differences 218 | * click on box in the **Diff** column to see the commits 219 | 220 | **Optimizations** 221 | 222 | Because this version retrieves commits from every fork which is slow and uses your quota (it resets every hour, don't worry), I added two options for caching results: 223 | * **Same size** - if a fork has the same size as a fork that has already been read, it is assumed to be the same and contain the same commits. 224 | * **Same Push Date** - same but looks at the Last Push date. 225 | If both are selected, both conditions have to be satisfied at the same time. 226 | If the condition is satisfied, commits for the second fork are not retrieved but assumed to be the same as in the first fork. 227 | 228 | ## Composerize 229 | 230 | **IMPORTANT:** Composerize has ads built into it. These are implemented by the creator of Composerize and in no way affiliated with me, Griefed. Neither I nor you or anyone hosting Composerize will earn money from these placements, other than the creator of Composerize themselves. 231 | If you want to get rid of the ads, you'll need to edit /config/www/composerize/static/js/runtime-main.c7d51d1a.js at around line 162. 232 | If you want to get rid of Google Analytics, you will need to edit /config/www/composerize/index.html. 233 | 234 | ## dcc Web 235 | 236 | I've changed the index.html and .css under [/gh-pages](https://github.com/Griefed/dcc-web/tree/gh-pages) in order for the website to be deployed with regular apache's, for example a httpd:alpine docker container. 237 | 238 | ## NGINXConfig 239 | 240 | A lot of features with corresponding configuration directives. 241 | You can deep dive into the [NGINX documentation](http://nginx.org/en/docs/) right now OR you can use this tool to check 242 | how NGINX works, observe how your inputs are affecting the output, **generate the best config for your specific 243 | use-case** (and in parallel you can still use the docs). 244 | 245 | ## SUI Dashboard Status 246 | 247 | **Changing color themes** 248 | - Click the options button on the left bottom 249 | 250 | **Apps** 251 | 252 | Add your apps by editing apps.json: 253 | 254 | { 255 | "apps" : [ 256 | {"name":"Name of app 1","hostname":"sub1.example.com","port":80,"href":"https://sub1.example.com" ,"icon":"icon-name"}, 257 | {"name":"Name of app 2","hostname":"sub2.example.com""port":8080,"href":"https://sub1.example.com" ,"icon":"icon-name"} 258 | ] 259 | } 260 | 261 | Please note: 262 | 263 | - No `,` at the end of the last app's line 264 | - Find the names of icons to use at [Material Design Icons](https://materialdesignicons.com/) 265 | 266 | **Bookmarks** 267 | 268 | Add your bookmarks by editing links.json: 269 | 270 | ``` 271 | { 272 | "bookmarks":[ 273 | { 274 | "category":"Category1", 275 | "links":[ 276 | { 277 | "name":"Link1", 278 | "url":"http://example.com" 279 | }, 280 | { 281 | "name":"Link2", 282 | "url":"http://example.com" 283 | } 284 | ] 285 | }, 286 | { 287 | "category":"Category2", 288 | "links":[ 289 | { 290 | "name":"Link1", 291 | "url":"http://example.com" 292 | }, 293 | { 294 | "name":"Link2", 295 | "url":"http://example.com" 296 | } 297 | ] 298 | } 299 | ] 300 | } 301 | ``` 302 | Add names for the categories you wish to define and add the bookmarks for each category. 303 | 304 | Please note: 305 | 306 | - No `,` at the end of the last bookmark in a category and at the end of the last category 307 | 308 | 309 | **Color themes** 310 | 311 | These can be added or customized in the themer.js file. When changing the name of a theme or adding one, make sure to edit this section in index.html accordingly: 312 | 313 | ``` 314 |
315 | ``` 316 | 317 | ## tgen 318 | 319 | **Quick usage and examples** 320 | 321 | ```javascript 322 | // initialize the generator 323 | var generator = tgen.init(256, 256); 324 | 325 | 326 | // --- texture 1 -------------------------------------------------------------- 327 | 328 | var canvas1 = generator 329 | .do('waves') 330 | .toCanvas(); 331 | 332 | // set img src, and width height 333 | $('#img1').attr('src', canvas1.toDataURL("image/png")).css({width: canvas1.width, height: canvas1.height}); 334 | 335 | 336 | // --- texture 2 -------------------------------------------------------------- 337 | 338 | var canvas2 = generator 339 | .do('fill') 340 | .do('waves', {blend: 'difference'}) 341 | .do('waves', {blend: 'difference'}) 342 | .do('contrast', {"adjust": 50}) 343 | .toCanvas(); 344 | 345 | // set img src, and width height 346 | $('#img2').attr('src', canvas2.toDataURL("image/png")).css({width: canvas2.width, height: canvas2.height}); 347 | 348 | 349 | // --- texture 3 -------------------------------------------------------------- 350 | 351 | var texture3 = generator 352 | .clear() // remove previous layers 353 | .do('fill') 354 | .do('clouds', {blend: 'difference'}) 355 | .do('spheres', {blend: 'lineardodge', 'dynamic': true}) 356 | .do('vibrance', {"adjust": 50}); 357 | 358 | var canvas3 = texture3.toCanvas(); 359 | 360 | // set img src, and width height 361 | $('#img3').attr('src', canvas3.toDataURL("image/png")).css({width: canvas3.width, height: canvas3.height}); 362 | 363 | 364 | // --- texture 4 -------------------------------------------------------------- 365 | 366 | // get the generated params of texture3 367 | var params = texture3.params(); 368 | 369 | // get number of layers 370 | var layers = params.items.length; 371 | 372 | // change the color of clouds 373 | params.items[layers - 3][2].rgba = [255, 50, 10, 0.85]; 374 | 375 | // change the blending method 376 | params.items[layers - 2][2].blend = 'overlay'; 377 | 378 | // generate new texture with modified params of texture3 379 | var canvas4 = generator.render(params).toCanvas(); 380 | 381 | // set img src, and width height 382 | $('#img4').attr('src', canvas4.toDataURL("image/png")).css({width: canvas4.width, height: canvas4.height}); 383 | 384 | 385 | // --- texture 5 -------------------------------------------------------------- 386 | 387 | var params = { 388 | "width": 256, // texture width in pixel 389 | "height": 256, // texture height in pixel 390 | "debug": true, // render info to console log, default value: false 391 | "items": [ 392 | [0, "lines2", { // layer number and effect name 393 | "blend": "opacity", // layer blend mode 394 | "count": 21, // square count 395 | "size": [5, 15], // random size between 5-15% 396 | "rgba": [ 397 | 255, // fixed red channel 398 | [128, 192], // random green channel between 128 and 192 399 | [200, 255], // random blue channel between 200 and 255 400 | [0.2, 0.6] // random opacity between 0.2 and 0.6 401 | ] 402 | }], 403 | [1, "spheres", { // second layer 404 | "blend": "lighten", 405 | "origin": "random", 406 | "dynamic": true, // 407 | "count": 21, 408 | "size": [20, 100], 409 | "rgba": [200, 200, 200, 0.7] 410 | }], 411 | [2, "copy", 0], // copy layer 0 to layer 1 412 | [2, "merge", { // merge layer 1 in to 2 413 | "layer": 1, 414 | "blend": "lighten" 415 | }], 416 | [2, "brightness", {"adjust": -10, "legacy": true}], // set brightness 417 | [2, "vibrance", {"adjust": 50}], // set vibrance 418 | [2, "contrast", {"adjust": 50}] // set contrast 419 | ] 420 | }; 421 | 422 | // generate 423 | var canvas5 = generator.render(params).toCanvas(); 424 | 425 | // set img src, and width height 426 | $('#img5').attr('src', canvas5.toDataURL("image/png")).css({width: canvas5.width, height: canvas5.height}); 427 | 428 | 429 | // --- texture 6 -------------------------------------------------------------- 430 | 431 | // change layer of texture 5 merge blend method 432 | params.items[3] = [2, "merge", { 433 | "layer": 1, 434 | "blend": "difference" 435 | }]; 436 | 437 | // render and add new effects 438 | var canvas6 = generator 439 | .render(params) 440 | .do('sharpen') 441 | .do('noise') 442 | .toCanvas(); 443 | 444 | // set img src, and width height 445 | $('#img6').attr('src', canvas6.toDataURL("image/png")).css({width: canvas6.width, height: canvas6.height}); 446 | 447 | 448 | // --- available effects ------------------------------------------------------- 449 | 450 | // dump all effects and default config parameters 451 | for (key in tgen.defaults) { 452 | 453 | var params = tgen.defaults[key]; 454 | var item = $('

' + key + '

' + JSON.stringify(params) + '
'); 455 | $('.defaults').append(item); 456 | 457 | } 458 | ``` 459 | 460 | **Available other options** 461 | 462 | * map (cool effect) 463 | * merge (copy layer with blend) 464 | * copy (copy layer without blend) 465 | * history (store last x generated texture params in localStorage) 466 | 467 | **Available events** 468 | 469 | * beforeRender 470 | * afterRender 471 | * beforeEffect 472 | * afterEffect 473 | 474 | -------------------------------------------------------------------------------- /img/docker-App-Collection_composerizescreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_composerizescreenshot.png -------------------------------------------------------------------------------- /img/docker-App-Collection_dcc_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_dcc_screenshot.png -------------------------------------------------------------------------------- /img/docker-App-Collection_favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_favicon.png -------------------------------------------------------------------------------- /img/docker-App-Collection_forks_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_forks_screenshot.png -------------------------------------------------------------------------------- /img/docker-App-Collection_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_header.png -------------------------------------------------------------------------------- /img/docker-App-Collection_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_icon.png -------------------------------------------------------------------------------- /img/docker-App-Collection_nginxconfig.io_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_nginxconfig.io_screenshot.png -------------------------------------------------------------------------------- /img/docker-App-Collection_noise_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_noise_screenshot.png -------------------------------------------------------------------------------- /img/docker-App-Collection_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_screenshot.png -------------------------------------------------------------------------------- /img/docker-App-Collection_tgen_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_tgen_screenshot.png -------------------------------------------------------------------------------- /img/docker-App-Collection_triangulator_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Griefed/docker-App-Collection/cb69eef8fd3d3fdde4dd525932e71de8f92a5c38/img/docker-App-Collection_triangulator_screenshot.png -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ], 6 | "prConcurrentLimit": 5, 7 | "labels": ["dependencies"], 8 | "assignees": ["Griefed"] 9 | } 10 | -------------------------------------------------------------------------------- /root/defaults/apps.json: -------------------------------------------------------------------------------- 1 | { 2 | "apps": 3 | [ 4 | { 5 | "hostname":"DOMAIN", 6 | "port": 80, 7 | "name": "Active GitHub Forks", 8 | "href": "PROTOCOL://DOMAIN/forks", 9 | "icon": "source-fork", 10 | "status": "red" 11 | }, 12 | { 13 | "hostname": "DOMAIN", 14 | "port": 80, 15 | "name": "Composerize", 16 | "href": "PROTOCOL://DOMAIN/composerize", 17 | "icon": "cog-transfer", 18 | "status": "red" 19 | }, 20 | { 21 | "hostname": "DOMAIN", 22 | "port": 80, 23 | "name": "Docker Compose Converter", 24 | "href": "PROTOCOL://DOMAIN/dcc", 25 | "icon": "cog-transfer", 26 | "status": "red" 27 | }, 28 | { 29 | "hostname": "DOMAIN", 30 | "port": 80, 31 | "name": "NGINXConfig.io", 32 | "href": "PROTOCOL://DOMAIN/nginxconfig.io", 33 | "icon": "arrow-decision-outline", 34 | "status": "red" 35 | }, 36 | { 37 | "hostname": "DOMAIN", 38 | "port": 80, 39 | "name": "tgen", 40 | "href": "PROTOCOL://DOMAIN/tgen", 41 | "icon": "texture", 42 | "status": "red" 43 | }, 44 | { 45 | "hostname": "DOMAIN", 46 | "port": 80, 47 | "name": "php-noise", 48 | "href": "PROTOCOL://DOMAIN/noise/", 49 | "icon": "checkerboard", 50 | "status": "red" 51 | }, 52 | { 53 | "hostname": "DOMAIN", 54 | "port": 80, 55 | "name": "php-noise randomizer", 56 | "href": "PROTOCOL://DOMAIN/noise/random", 57 | "icon": "checkerboard-remove", 58 | "status": "red" 59 | }, 60 | { 61 | "hostname": "DOMAIN", 62 | "port": 80, 63 | "name": "Triangulator", 64 | "href": "PROTOCOL://DOMAIN/triangulator/", 65 | "icon": "triangle", 66 | "status": "red" 67 | } 68 | ] 69 | } 70 | -------------------------------------------------------------------------------- /root/defaults/links.json: -------------------------------------------------------------------------------- 1 | { 2 | "bookmarks" : [ 3 | { 4 | "category": "You", 5 | "links": [ 6 | { 7 | "name": "Can", 8 | "url": "https://www.example.com" 9 | }, 10 | { 11 | "name": "Customize", 12 | "url": "http://www.example.com" 13 | }, 14 | { 15 | "name": "This", 16 | "url": "https://www.example.com" 17 | } 18 | ] 19 | }, 20 | { 21 | "category": "By", 22 | "links": [ 23 | { 24 | "name": "Editing", 25 | "url": "https://www.example.com" 26 | }, 27 | { 28 | "name": "links.json", 29 | "url": "https://www.example.com" 30 | }, 31 | { 32 | "name": "In", 33 | "url": "https://www.example.com" 34 | } 35 | ] 36 | }, 37 | { 38 | "category": "Your", 39 | "links": [ 40 | { 41 | "name": "Volume", 42 | "url": "https://www.example.com" 43 | }, 44 | { 45 | "name": "At", 46 | "url": "https://www.example.com" 47 | }, 48 | { 49 | "name": "/config/www/links.json", 50 | "url": "https://www.example.com" 51 | } 52 | ] 53 | } 54 | ] 55 | } 56 | -------------------------------------------------------------------------------- /root/defaults/root: -------------------------------------------------------------------------------- 1 | # Run report.py to check status of website/services in apps.json every five minutes 2 | # min hour day month weekday command 3 | */15 * * * * run-parts /etc/periodic/15min 4 | 0 * * * * run-parts /etc/periodic/hourly 5 | 0 2 * * * run-parts /etc/periodic/daily 6 | 0 3 * * 6 run-parts /etc/periodic/weekly 7 | 0 5 1 * * run-parts /etc/periodic/monthly 8 | # SUI Dashboard status cronjob 9 | */5 * * * * cd /config/www/ && /usr/bin/python3 report.py &> /dev/null -------------------------------------------------------------------------------- /root/etc/cont-init.d/30-install: -------------------------------------------------------------------------------- 1 | #!/usr/bin/with-contenv bash 2 | 3 | # SUI 4 | if [ ! -f /config/www/sui.lock ]; then 5 | echo "**** Installing SUI ****" 6 | rm -f /config/www/* 7 | git clone \ 8 | https://github.com/ThreadR-r/sui-dashboard-status.git \ 9 | /config/www 10 | rm -f \ 11 | /config/www/apps.json \ 12 | /config/www/links.json 13 | rm -Rf /tmp/sui 14 | touch /config/www/sui.lock 15 | else 16 | echo "**** SUI already installed, skipping ****" 17 | fi 18 | 19 | # DCC 20 | if [ ! -f /config/www/dcc.lock ] && [ "$INSTALL_DCC" = "true" ]; then 21 | echo "**** Installing DCC ****" 22 | rm -Rf /config/www/dcc 23 | git clone -b \ 24 | gh-pages \ 25 | https://github.com/Griefed/dcc-web.git \ 26 | /config/www/dcc 27 | touch /config/www/dcc.lock 28 | elif [ "$INSTALL_DCC" = "false" ] && [ -f /config/www/dcc.lock ]; then 29 | echo "**** Uninstalling DCC ****" 30 | rm -Rf /config/www/dcc 31 | rm -f /config/www/dcc.lock 32 | else 33 | echo "**** DCC already installed, skipping ****" 34 | fi 35 | 36 | # NGINXConfig.io 37 | if [ ! -f /config/www/nginxconfig.lock ] && [ "$INSTALL_NGINXCONFIG_IO" = "true" ]; then 38 | echo "**** Installing NGINXConfig.io ****" 39 | rm -Rf /config/www/nginxconfig.io 40 | git clone -b \ 41 | gh-pages \ 42 | https://github.com/digitalocean/nginxconfig.io.git \ 43 | /config/www/nginxconfig.io 44 | touch /config/www/nginxconfig.lock 45 | elif [ "$INSTALL_NGINXCONFIG_IO" = "false" ] && [ -f /config/www/nginxconfig.lock ]; then 46 | echo "**** Uninstalling NGINXConfig.io ****" 47 | rm -Rf /config/www/nginxconfig.io 48 | rm -f /config/www/nginxconfig.lock 49 | else 50 | echo "**** NGINXConfig already installed, skipping ****" 51 | fi 52 | 53 | # Triangulator 54 | if [ ! -f /config/www/triangulator.lock ] && [ "$INSTALL_TRIANGULATOR" = "true" ]; then 55 | echo "**** Installing Triangulator ****" 56 | rm -Rf /config/www/triangulator 57 | git clone \ 58 | https://github.com/maeglin89273/triangulator.git \ 59 | /config/www/triangulator 60 | touch /config/www/triangulator.lock 61 | elif [ "$INSTALL_TRIANGULATOR" = "false" ] && [ -f /config/www/triangulator.lock ]; then 62 | echo "**** Uninstalling Triangulator ****" 63 | rm -Rf /config/www/triangulator 64 | rm -f /config/www/triangulator.lock 65 | else 66 | echo "**** Triangulator already installed, skipping ****" 67 | fi 68 | 69 | # Composerize 70 | if [ ! -f /config/www/composerize.lock ] && [ "$INSTALL_COMPOSERIZE" = "true" ]; then 71 | echo "**** Installing Composerize ****" 72 | rm -Rf /config/www/composerize 73 | mkdir -p /tmp/composerize 74 | mkdir -p /tmp/composerize-website 75 | mkdir -p /config/www/composerize 76 | git clone \ 77 | https://github.com/magicmark/composerize.git \ 78 | /tmp/composerize 79 | cp -r \ 80 | /tmp/composerize/packages/composerize-website/. \ 81 | /tmp/composerize-website 82 | cd /tmp/composerize-website 83 | sed -i \ 84 | "s,https://www.composerize.com,$PROTOCOL://$DOMAIN/composerize,g" \ 85 | /tmp/composerize-website/package.json 86 | npm install yarn@1.19.1 -g 87 | yarn add composerize 88 | make build 89 | cp -r \ 90 | /tmp/composerize-website/build/. \ 91 | /config/www/composerize/ 92 | rm -Rf \ 93 | /tmp/composerize \ 94 | /tmp/composerize-website 95 | touch /config/www/composerize.lock 96 | cd / 97 | elif [ "$INSTALL_COMPOSERIZE" = "false" ] && [ -f /config/www/composerize.lock ]; then 98 | echo "**** Uninstalling Composerize ****" 99 | rm -Rf /config/www/composerize 100 | rm -f /config/www/composerize.lock 101 | else 102 | echo "**** Composerize already installed, skipping ****" 103 | fi 104 | 105 | # Active GitHub Forks 106 | if [ ! -f /config/www/active_github_forks.lock ] && [ "$INSTALL_ACTIVE_GITHUB_FORKS" = "true" ]; then 107 | echo "**** Installing Active GitHub Forks ****" 108 | rm -Rf /config/www/active-github-forks 109 | git clone \ 110 | https://github.com/lukaszmn/active-forks.git \ 111 | /config/www/forks 112 | touch /config/www/active_github_forks.lock 113 | elif [ "$INSTALL_ACTIVE_GITHUB_FORKS" = "false" ] && [ -f /config/www/active_github_forks.lock ]; then 114 | echo "**** Uninstalling Active GitHub Forks ****" 115 | rm -Rf /config/www/forks 116 | rm -f /config/www/active_github_forks.lock 117 | else 118 | echo "**** Active GitHub Forks already installed, skipping ****" 119 | fi 120 | 121 | # tgen 122 | TGEN_VERSION=$(cat /version.txt) 123 | if [ ! -f /config/www/tgen.lock ] && [ "$INSTALL_TGEN" = "true" ]; then 124 | echo "**** Installing tgen ****" 125 | curl -o /tmp/tgen.zip -L \ 126 | "https://github.com/schalkt/tgen/archive/v${TGEN_VERSION}.zip" 127 | cd /tmp 128 | unzip -qq tgen.zip 129 | mv tgen-*/demo /config/www/tgen 130 | mv tgen-*/dist /config/www/dist 131 | rm -Rf \ 132 | /tmp/tgen* 133 | touch /config/www/tgen.lock 134 | elif [ "$INSTALL_TGEN" = "false" ] && [ -f /config/www/tgen.lock ]; then 135 | echo "**** Uninstalling tgen ****" 136 | rm -Rf /config/www/tgen 137 | rm -Rf /config/www/dist 138 | rm -f /config/www/tgen.lock 139 | else 140 | echo "**** tgen already installed, skipping ****" 141 | fi 142 | 143 | # php-noise 144 | if [ ! -f /config/www/noise.lock ] && [ "$INSTALL_PHP_NOISE" = "true" ]; then 145 | echo "**** Installing php-noise ****" 146 | git clone \ 147 | https://github.com/Griefed/php-noise.com.git \ 148 | /tmp/noise 149 | mv /tmp/noise/public /config/www/noise 150 | rm -Rf /tmp/noise 151 | git clone \ 152 | https://github.com/RundesBalli/php-noise.git \ 153 | /tmp/random 154 | mkdir -p /config/www/noise/random 155 | mv /tmp/random/noise.php /config/www/noise/random/index.php 156 | rm -Rf /tmp/random 157 | touch /config/www/noise.lock 158 | elif [ "$INSTALL_PHP_NOISE" = "false" ] && [ -f /config/www/noise.lock ]; then 159 | echo "**** Uninstalling php-noise ****" 160 | rm -Rf /config/www/noise 161 | rm -f /config/www/noise.lock 162 | else 163 | echo "**** php-noise already installed, skipping ****" 164 | fi 165 | 166 | # Permission Stuffs 167 | chown -R \ 168 | abc:abc \ 169 | /config/www 170 | -------------------------------------------------------------------------------- /root/etc/cont-init.d/40-config: -------------------------------------------------------------------------------- 1 | #!/usr/bin/with-contenv bash 2 | 3 | # Default configs 4 | if [ ! -f /config/www/apps.json ]; then 5 | cp -f \ 6 | /defaults/apps.json \ 7 | /config/www/apps.json 8 | sed -i \ 9 | "s/DOMAIN/$DOMAIN/g" \ 10 | /config/www/apps.json 11 | sed -i \ 12 | "s/PROTOCOL/$PROTOCOL/g" \ 13 | /config/www/apps.json 14 | fi 15 | 16 | if [ ! -f /config/www/links.json ]; then 17 | cp -f \ 18 | /defaults/links.json \ 19 | /config/www/links.json 20 | fi 21 | 22 | # Crontabs 23 | mkdir -p \ 24 | /config/crontabs 25 | # set cronjob 26 | [[ ! -f /config/crontabs/root ]] && \ 27 | cp /defaults/root /config/crontabs/root 28 | cp /config/crontabs/root /etc/crontabs/root 29 | 30 | # Permissions Stuffs 31 | chown -R \ 32 | abc:abc \ 33 | /config/www 34 | --------------------------------------------------------------------------------