├── .gitlab-ci.yml ├── README.md ├── alpine-xen-orchestra-aarch64 ├── Dockerfile ├── docker-compose.yml └── files │ ├── config.yaml │ └── entrypoint.sh ├── alpine-xen-orchestra-amd64 ├── Dockerfile ├── docker-compose.yml └── files │ ├── config.yaml │ └── entrypoint.sh └── alpine-xen-orchestra-armhf ├── Dockerfile ├── docker-compose.yml └── files ├── config.yaml └── entrypoint.sh /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | # You can override the included template(s) by including variable overrides 2 | # SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings 3 | # Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings 4 | # Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings 5 | # Container Scanning customization: https://docs.gitlab.com/ee/user/application_security/container_scanning/#customizing-the-container-scanning-settings 6 | # Note that environment variables can be set in several places 7 | # See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence 8 | stages: 9 | - build 10 | - test 11 | - manifest 12 | - deploy 13 | include: 14 | - remote: https://gitlab.com/yobasystems/gitlab-ci-templates/raw/master/container_scanning_all_arch.yml 15 | - template: Security/Secret-Detection.gitlab-ci.yml 16 | - template: Security/SAST.gitlab-ci.yml 17 | amd64 xen orchestra build: 18 | image: yobasystems/alpine-docker:dind 19 | stage: build 20 | tags: 21 | - amd64 22 | variables: 23 | CI_APPLICATION_REPOSITORY: "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG" 24 | CI_APPLICATION_TAG: "$CI_COMMIT_SHA" 25 | script: 26 | - export COMMIT_TIME=$(git show -s --format=%ct $CI_APPLICATION_TAG) 27 | - echo "$COMMIT_TIME" && echo "$CI_COMMIT_SHORT_SHA" 28 | - apk add --update git 29 | - echo "$CI_JOB_TOKEN" | docker login -u gitlab-ci-token "$DOCKER_REGISTRY" --password-stdin 30 | - cd alpine-xen-orchestra-amd64/ && docker build --build-arg VCS_REF=${CI_COMMIT_SHORT_SHA} 31 | --build-arg BUILD_DATE=${COMMIT_TIME} -t $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:amd64 32 | -t $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:x86_64 -t $DOCKER_REGISTRY_DOCKERHUB_REPO:amd64 33 | -t $DOCKER_REGISTRY_DOCKERHUB_REPO:x86_64 -t $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:amd64 34 | -t $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:x86_64 . 35 | - docker push $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:amd64 36 | - docker push $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:x86_64 37 | - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin 38 | && docker push $DOCKER_REGISTRY_DOCKERHUB_REPO:amd64 39 | - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin 40 | && docker push $DOCKER_REGISTRY_DOCKERHUB_REPO:x86_64 41 | - echo "$QUAY_PASSWORD" | docker login -u "$QUAY_USERNAME" quay.io --password-stdin 42 | && docker push $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:amd64 43 | - echo "$QUAY_PASSWORD" | docker login -u "$QUAY_USERNAME" quay.io --password-stdin 44 | && docker push $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:x86_64 45 | arm32v7 xen orchestra build: 46 | image: yobasystems/alpine-docker:dind 47 | stage: build 48 | tags: 49 | - armhf 50 | variables: 51 | CI_APPLICATION_REPOSITORY: "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG" 52 | CI_APPLICATION_TAG: "$CI_COMMIT_SHA" 53 | script: 54 | - export COMMIT_TIME=$(git show -s --format=%ct $CI_APPLICATION_TAG) 55 | - echo "$COMMIT_TIME" && echo "$CI_COMMIT_SHORT_SHA" 56 | - apk add --update git 57 | - echo "$CI_JOB_TOKEN" | docker login -u gitlab-ci-token "$DOCKER_REGISTRY" --password-stdin 58 | - cd alpine-xen-orchestra-armhf/ && docker build --build-arg VCS_REF=${CI_COMMIT_SHORT_SHA} 59 | --build-arg BUILD_DATE=${COMMIT_TIME} -t $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm32v7 60 | -t $DOCKER_REGISTRY_DOCKERHUB_REPO:arm32v7 -t $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:arm32v7 61 | -t $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:armhf -t $DOCKER_REGISTRY_DOCKERHUB_REPO:armhf 62 | -t $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:armhf . 63 | - docker push $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm32v7 64 | - docker push $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:armhf 65 | - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin 66 | && docker push $DOCKER_REGISTRY_DOCKERHUB_REPO:arm32v7 67 | - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin 68 | && docker push $DOCKER_REGISTRY_DOCKERHUB_REPO:armhf 69 | - echo "$QUAY_PASSWORD" | docker login -u "$QUAY_USERNAME" quay.io --password-stdin 70 | && docker push $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:arm32v7 71 | - echo "$QUAY_PASSWORD" | docker login -u "$QUAY_USERNAME" quay.io --password-stdin 72 | && docker push $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:armhf 73 | arm64v8 xen orchestra build: 74 | image: yobasystems/alpine-docker:dind 75 | stage: build 76 | tags: 77 | - aarch64 78 | variables: 79 | CI_APPLICATION_REPOSITORY: "$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG" 80 | CI_APPLICATION_TAG: "$CI_COMMIT_SHA" 81 | script: 82 | - export COMMIT_TIME=$(git show -s --format=%ct $CI_APPLICATION_TAG) 83 | - echo "$COMMIT_TIME" && echo "$CI_COMMIT_SHORT_SHA" 84 | - apk add --update git 85 | - echo "$CI_JOB_TOKEN" | docker login -u gitlab-ci-token "$DOCKER_REGISTRY" --password-stdin 86 | - cd alpine-xen-orchestra-aarch64/ && docker build --build-arg VCS_REF=${CI_COMMIT_SHORT_SHA} 87 | --build-arg BUILD_DATE=${COMMIT_TIME} -t $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm64v8 88 | -t $DOCKER_REGISTRY_DOCKERHUB_REPO:arm64v8 -t $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:arm64v8 89 | -t $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:aarch64 -t $DOCKER_REGISTRY_DOCKERHUB_REPO:aarch64 90 | -t $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:aarch64 . 91 | - docker push $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm64v8 92 | - docker push $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:aarch64 93 | - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin 94 | && docker push $DOCKER_REGISTRY_DOCKERHUB_REPO:arm64v8 95 | - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin 96 | && docker push $DOCKER_REGISTRY_DOCKERHUB_REPO:aarch64 97 | - echo "$QUAY_PASSWORD" | docker login -u "$QUAY_USERNAME" quay.io --password-stdin 98 | && docker push $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:arm64v8 99 | - echo "$QUAY_PASSWORD" | docker login -u "$QUAY_USERNAME" quay.io --password-stdin 100 | && docker push $DOCKER_REGISTRY_QUAY/$DOCKER_REGISTRY_QUAY_REPO:aarch64 101 | gitlab manifest creation: 102 | image: yobasystems/alpine-docker:dind 103 | stage: manifest 104 | tags: 105 | - amd64 106 | script: 107 | - mkdir /root/.docker 108 | - 'echo -e "{\n \"experimental\": \"enabled\"\n}\n" >> ~/.docker/config.json' 109 | - echo "$CI_JOB_TOKEN" | docker login -u gitlab-ci-token "$DOCKER_REGISTRY" --password-stdin 110 | - docker pull $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:amd64 111 | - docker pull $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm32v7 112 | - docker pull $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm64v8 113 | - docker manifest create $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:latest $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:amd64 114 | $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm32v7 $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm64v8 115 | - docker manifest annotate $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:latest $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:amd64 116 | --os linux --arch amd64 117 | - docker manifest annotate $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:latest $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm32v7 118 | --os linux --arch arm 119 | - docker manifest annotate $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:latest $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm64v8 120 | --os linux --arch arm64 121 | - docker manifest push $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:latest 122 | dockerhub manifest creation: 123 | image: yobasystems/alpine-docker:dind 124 | stage: manifest 125 | tags: 126 | - amd64 127 | script: 128 | - mkdir /root/.docker 129 | - 'echo -e "{\n \"experimental\": \"enabled\"\n}\n" >> ~/.docker/config.json' 130 | - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin 131 | - docker pull $DOCKER_REGISTRY_DOCKERHUB_REPO:amd64 132 | - docker pull $DOCKER_REGISTRY_DOCKERHUB_REPO:arm32v7 133 | - docker pull $DOCKER_REGISTRY_DOCKERHUB_REPO:arm64v8 134 | - docker manifest create $DOCKER_REGISTRY_DOCKERHUB_REPO:latest $DOCKER_REGISTRY_DOCKERHUB_REPO:amd64 135 | $DOCKER_REGISTRY_DOCKERHUB_REPO:arm32v7 $DOCKER_REGISTRY_DOCKERHUB_REPO:arm64v8 136 | - docker manifest annotate $DOCKER_REGISTRY_DOCKERHUB_REPO:latest $DOCKER_REGISTRY_DOCKERHUB_REPO:amd64 137 | --os linux --arch amd64 138 | - docker manifest annotate $DOCKER_REGISTRY_DOCKERHUB_REPO:latest $DOCKER_REGISTRY_DOCKERHUB_REPO:arm32v7 139 | --os linux --arch arm 140 | - docker manifest annotate $DOCKER_REGISTRY_DOCKERHUB_REPO:latest $DOCKER_REGISTRY_DOCKERHUB_REPO:arm64v8 141 | --os linux --arch arm64 142 | - docker manifest push $DOCKER_REGISTRY_DOCKERHUB_REPO:latest 143 | gitlab version 5.47.0 manifest creation: 144 | image: yobasystems/alpine-docker:dind 145 | stage: manifest 146 | tags: 147 | - amd64 148 | script: 149 | - mkdir /root/.docker 150 | - 'echo -e "{\n \"experimental\": \"enabled\"\n}\n" >> ~/.docker/config.json' 151 | - echo "$CI_JOB_TOKEN" | docker login -u gitlab-ci-token "$DOCKER_REGISTRY" --password-stdin 152 | - docker pull $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:amd64 153 | - docker pull $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm32v7 154 | - docker pull $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm64v8 155 | - docker manifest create $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:5.47.0 $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:amd64 156 | $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm32v7 $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm64v8 157 | - docker manifest annotate $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:5.47.0 $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:amd64 158 | --os linux --arch amd64 159 | - docker manifest annotate $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:5.47.0 $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm32v7 160 | --os linux --arch arm 161 | - docker manifest annotate $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:5.47.0 $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:arm64v8 162 | --os linux --arch arm64 163 | - docker manifest push $DOCKER_REGISTRY/$DOCKER_REGISTRY_REPO:5.47.0 164 | dockerhub version 5.47.0 manifest creation: 165 | image: yobasystems/alpine-docker:dind 166 | stage: manifest 167 | tags: 168 | - amd64 169 | script: 170 | - mkdir /root/.docker 171 | - 'echo -e "{\n \"experimental\": \"enabled\"\n}\n" >> ~/.docker/config.json' 172 | - echo "$DOCKERHUB_PASSWORD" | docker login -u "$DOCKERHUB_USERNAME" --password-stdin 173 | - docker pull $DOCKER_REGISTRY_DOCKERHUB_REPO:amd64 174 | - docker pull $DOCKER_REGISTRY_DOCKERHUB_REPO:arm32v7 175 | - docker pull $DOCKER_REGISTRY_DOCKERHUB_REPO:arm64v8 176 | - docker manifest create $DOCKER_REGISTRY_DOCKERHUB_REPO:5.47.0 $DOCKER_REGISTRY_DOCKERHUB_REPO:amd64 177 | $DOCKER_REGISTRY_DOCKERHUB_REPO:arm32v7 $DOCKER_REGISTRY_DOCKERHUB_REPO:arm64v8 178 | - docker manifest annotate $DOCKER_REGISTRY_DOCKERHUB_REPO:5.47.0 $DOCKER_REGISTRY_DOCKERHUB_REPO:amd64 179 | --os linux --arch amd64 180 | - docker manifest annotate $DOCKER_REGISTRY_DOCKERHUB_REPO:5.47.0 $DOCKER_REGISTRY_DOCKERHUB_REPO:arm32v7 181 | --os linux --arch arm 182 | - docker manifest annotate $DOCKER_REGISTRY_DOCKERHUB_REPO:5.47.0 $DOCKER_REGISTRY_DOCKERHUB_REPO:arm64v8 183 | --os linux --arch arm64 184 | - docker manifest push $DOCKER_REGISTRY_DOCKERHUB_REPO:5.47.0 185 | sast: 186 | stage: test 187 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Xen Orchestra Docker image running on Alpine Linux 2 | 3 | [![Docker Automated build](https://img.shields.io/docker/automated/yobasystems/alpine-caddy.svg?style=for-the-badge&logo=docker)](https://hub.docker.com/r/yobasystems/alpine-caddy/) 4 | [![Docker Pulls](https://img.shields.io/docker/pulls/yobasystems/alpine-caddy.svg?style=for-the-badge&logo=docker)](https://hub.docker.com/r/yobasystems/alpine-caddy/) 5 | [![Docker Stars](https://img.shields.io/docker/stars/yobasystems/alpine-caddy.svg?style=for-the-badge&logo=docker)](https://hub.docker.com/r/yobasystems/alpine-caddy/) 6 | 7 | [![Alpine Version](https://img.shields.io/badge/Alpine%20version-v3.8-green.svg?style=for-the-badge)](https://alpinelinux.org/) 8 | [![Caddy Version](https://img.shields.io/badge/XO%20version-v5.47.0-green.svg?style=for-the-badge)](https://xen-orchestra.com/) 9 | 10 | This Docker image [(yobasystems/alpine-xen-orchestra)](https://hub.docker.com/r/yobasystems/alpine-xen-orchestra/) is based on the minimal [Alpine Linux](http://alpinelinux.org/) with [Xen Orchestra](https://xen-orchestra.com/). 11 | 12 | ##### Alpine Version 3.8.2 (Released Dec 20, 2018) 13 | ##### Xen Orchestra Version 5.47.0 14 | 15 | ---- 16 | 17 | ## What is Alpine Linux? 18 | Alpine Linux is a Linux distribution built around musl libc and BusyBox. The image is only 5 MB in size and has access to a package repository that is much more complete than other BusyBox based images. This makes Alpine Linux a great image base for utilities and even production applications. Read more about Alpine Linux here and you can see how their mantra fits in right at home with Docker images. 19 | 20 | ## What is Xen Orchestra? 21 | Xen Orchestra provides a web based UI for the management and administration of XCP-ng installations without requiring any agent or extra software on your hosts nor VMs. The primary goal of XO is to provide a unified management panel for a complete XCP-ng infrastructure, regardless of pool size and quantity of pools. For those seeking a web based replacement for XCP-ng Center, Xen Orchestra fully supports VM lifecycle operations such as VM creation, migration or console access directly from a browser. Xen Orchestra extends the capabilities of XCP-ng to also provide delegated resource access, delta backup, continuous replication, performance graphs and visualisations. 22 | 23 | [More Info](https://xen-orchestra.com/#!/xo-home) | [Pro Support](https://xen-orchestra.com/#!/xo-pricing) (Highly recommended) | [Source Code](https://github.com/vatesfr/xen-orchestra) 24 | 25 | _ (May also work with Citrix Xenserver but XCP-ng is the better choice) _ 26 | 27 | ### What is XCP-ng? 28 | Based on XenServer, XCP-ng is the result of massive cooperation between individuals and companies, to deliver a product without limits. No restrictions on features and every bit available on GitHub! XCP-ng is a turnkey open source virtualisation platform. 29 | 30 | [More Info](https://xcp-ng.org/) | [Download .iso](http://mirrors.xcp-ng.org/isos/8.0/xcp-ng-8.0.0.iso) | [Source Code](https://github.com/xcp-ng/xcp) 31 | 32 | 33 | ## Features 34 | 35 | * Minimal size & layers 36 | * Memory usage is minimal on Alpine rather than using Debian 37 | * Xen Orchestra version 5.47.0 38 | 39 | ## Architectures 40 | 41 | * ```:amd64```, ```:latest``` - 64 bit Intel/AMD (x86_64/amd64) 42 | * ```:arm64v8```, ```:aarch64``` - 64 bit ARM (ARMv8/aarch64) 43 | * ```:arm32v7```, ```:armhf``` - 32 bit ARM (ARMv7/armhf) 44 | 45 | #### PLEASE CHECK TAGS BELOW FOR SUPPORTED ARCHITECTURES, THE ABOVE IS A LIST OF EXPLANATION 46 | 47 | ## Tags 48 | 49 | * ```:latest``` latest branch based (Automatic Architecture Selection) 50 | * ```:master``` master branch usually inline with latest 51 | * ```:v5.47.0``` version number related to xen orchestra version (Automatic Architecture Selection) 52 | * ```:armhf```, ```:arm32v7``` Armv7 based on latest tag but arm architecture 53 | * ```:aarch64```, ```:arm64v8``` Armv8 based on latest tag but arm64 architecture 54 | 55 | ## Environment Variables: 56 | 57 | ### Main Xen Orchestra parameters: 58 | 59 | * Check the config.yaml file for options, or leave for defaults. 60 | 61 | ## Creating an instance 62 | 63 | A redis container is required, e.g redis:alpine or yobasystems/alpine-redis to be linked to the Xen Orchestra container. Check the docker compose example for more info. 64 | 65 | ### Getting Started 66 | 67 | To forward all external traffic from port 80 to the container’s port 8080 68 | 69 | ```sh 70 | $ docker run -d --name xen-orchestra -p 80:8080 yobasystems/alpine-xen-orchestra ./bin/xo-server 71 | ``` 72 | 73 | Point your browser to `http://host-ip`. 74 | 75 | ## Docker Compose example: 76 | 77 | ```yalm 78 | version: '2' 79 | services: 80 | xen-orchestra: 81 | image: yobasystems/alpine-xen-orchestra:latest 82 | container_name: xoa 83 | command: ./bin/xo-server 84 | ports: 85 | - "8080:8080" 86 | depends_on: 87 | - redis 88 | environment: 89 | - NODE_ENV=production 90 | volumes: 91 | - /data/xoa/server:/app/data 92 | redis: 93 | container_name: xoa-redis 94 | image: redis:alpine 95 | command: redis-server --appendonly yes 96 | volumes: 97 | - /data/xoa/redis:/data 98 | ``` 99 | 100 | ## Source Repository 101 | 102 | * [Bitbucket - yobasystems/alpine-xen-orchestra](https://bitbucket.org/yobasystems/alpine-xen-orchestra/) 103 | 104 | * [Github - yobasystems/alpine-xen-orchestra](https://github.com/yobasystems/alpine-xen-orchestra) 105 | 106 | ## Links 107 | 108 | * [Yoba Systems](https://www.yobasystems.co.uk/) 109 | 110 | * [Dockerhub - yobasystems](https://hub.docker.com/u/yobasystems/) 111 | 112 | * [Quay.io - yobasystems](https://quay.io/organization/yobasystems) 113 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-aarch64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yobasystems/alpine:3.8-aarch64 as xoa-builder 2 | 3 | WORKDIR /app 4 | 5 | RUN apk add --no-cache bash git build-base git curl nodejs python libstdc++ make gcc g++ libpng-dev yarn 6 | 7 | RUN git clone -b master https://github.com/vatesfr/xen-orchestra && \ 8 | rm -rf /app/xen-orchestra/.git && \ 9 | echo "[i] Allow config restore..." && \ 10 | sed -i "s|process.env.XOA_PLAN < 5|process.env.XOA_PLAN > 0|" /app/xen-orchestra/packages/xo-web/src/xo-app/settings/config/index.js && \ 11 | echo "[i] Patching github issue redirect..." && \ 12 | sed -i "s|https://github.com/vatesfr/xen-orchestra/issues/new|https://github.com/yobasystems/alpine-xen-orchestra/issues/new|" /app/xen-orchestra/packages/xo-web/src/xo-app/about/index.js 13 | 14 | COPY files/config.yaml xen-orchestra/packages/xo-server/.xo-server.yaml 15 | 16 | RUN cd /app/xen-orchestra && \ 17 | yarn && yarn build 18 | 19 | FROM yobasystems/alpine:3.8-aarch64 20 | 21 | ARG BUILD_DATE 22 | ARG VCS_REF 23 | 24 | LABEL maintainer="Dominic Taylor " \ 25 | architecture="arm64v8/aarch64" \ 26 | xenorchestra-version="5.47.0" \ 27 | alpine-version="3.8" \ 28 | build="20-Aug-2019" \ 29 | org.opencontainers.image.title="alpine-xen-orchestra" \ 30 | org.opencontainers.image.description="Xen Orchestra Docker image running on Alpine Linux" \ 31 | org.opencontainers.image.authors="Dominic Taylor " \ 32 | org.opencontainers.image.vendor="Yoba Systems" \ 33 | org.opencontainers.image.version="v5.47.0" \ 34 | org.opencontainers.image.url="https://hub.docker.com/r/yobasystems/alpine-xen-orchestra/" \ 35 | org.opencontainers.image.source="https://github.com/yobasystems/alpine-xen-orchestra" \ 36 | org.opencontainers.image.revision=$VCS_REF \ 37 | org.opencontainers.image.created=$BUILD_DATE 38 | 39 | ENV USER=xenorchestra \ 40 | USER_HOME=/app 41 | 42 | RUN addgroup -S $USER && adduser -D -S -h $USER_HOME -G $USER $USER 43 | 44 | RUN apk add --no-cache nodejs bash libstdc++ lvm2 nfs-utils su-exec tini util-linux && \ 45 | rm -rf /tmp/* /var/cache/apk/* 46 | 47 | RUN mkdir -p $USER_HOME && \ 48 | chown $USER:$USER $USER_HOME 49 | 50 | WORKDIR /app 51 | 52 | COPY --from=xoa-builder /app/xen-orchestra /app/xen-orchestra 53 | COPY --from=xoa-builder /usr/bin/node /usr/bin/ 54 | COPY --from=xoa-builder /usr/lib/libgcc* /usr/lib/libstdc* /usr/lib/ 55 | COPY files/config.yaml /app/xen-orchestra/packages/xo-server/.xo-server.yaml 56 | 57 | COPY files/entrypoint.sh /entrypoint.sh 58 | RUN chmod +x /entrypoint.sh 59 | 60 | EXPOSE 8080 61 | 62 | WORKDIR /app/xen-orchestra/packages/xo-server/ 63 | 64 | ENTRYPOINT ["/sbin/tini", "--", "/entrypoint.sh" ] 65 | 66 | CMD ["./bin/xo-server"] 67 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-aarch64/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | xen-orchestra: 4 | image: yobasystems/alpine-xen-orchestra:aarch64 5 | command: ./bin/xo-server 6 | container_name: xoa 7 | ports: 8 | - "8000:8080" 9 | depends_on: 10 | - redis 11 | environment: 12 | - NODE_ENV=production 13 | volumes: 14 | - /data/xoa/server:/app/data 15 | redis: 16 | container_name: xoa-redis 17 | image: yobasystems/alpine-redis:aarch64 18 | command: redis-server --appendonly yes 19 | volumes: 20 | - /data/xoa/redis:/data 21 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-aarch64/files/config.yaml: -------------------------------------------------------------------------------- 1 | # Example XO-Server configuration. 2 | 3 | # This file is automatically looking for at the following places: 4 | # - `$HOME/.config/xo-server/config.yaml` 5 | # - `/etc/xo-server/config.yaml` 6 | # 7 | # The first entries have priority. 8 | 9 | # Note: paths are relative to the configuration file. 10 | 11 | #===================================================================== 12 | 13 | # It may be necessary to run XO-Server as a privileged user (e.g. 14 | # `root`) for instance to allow the HTTP server to listen on a 15 | # [privileged ports](http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html). 16 | # 17 | # To avoid security issues, XO-Server can drop its privileges by 18 | # changing the user and the group is running with. 19 | # 20 | # Note: XO-Server will change them just after reading the 21 | # configuration. 22 | 23 | # User to run XO-Server as. 24 | # 25 | # Note: The user can be specified using either its name or its numeric 26 | # identifier. 27 | # 28 | # Default: undefined 29 | user: 'xenorchestra' 30 | 31 | # Group to run XO-Server as. 32 | # 33 | # Note: The group can be specified using either its name or its 34 | # numeric identifier. 35 | # 36 | # Default: undefined 37 | #group: 'nogroup' 38 | 39 | #===================================================================== 40 | 41 | # Configuration of the embedded HTTP server. 42 | http: 43 | 44 | # Hosts & ports on which to listen. 45 | # 46 | # By default, the server listens on 0.0.0.0:80. 47 | listen: 48 | # Basic HTTP. 49 | - 50 | # Address on which the server is listening on. 51 | # 52 | # Sets it to '127.0.0.1' to listen only on the local host. 53 | # 54 | # Default: '0.0.0.0' (all addresses) 55 | #hostname: '127.0.0.1' 56 | 57 | # Port on which the server is listening on. 58 | # 59 | # Default: undefined 60 | port: 8080 61 | 62 | 63 | # List of files/directories which will be served. 64 | mounts: 65 | '/': '../xo-web/dist/' 66 | 67 | #===================================================================== 68 | 69 | # Connection to the Redis server. 70 | redis: 71 | uri: "redis://redis:6379" 72 | # 73 | # Default: tcp://localhost:6379 74 | #uri: '' 75 | 76 | # Directory containing the database of XO. 77 | # Currently used for logs. 78 | # 79 | # Default: '/var/lib/xo-server/data' 80 | datadir: '/app/data' 81 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-aarch64/files/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | rpcbind 4 | 5 | mkdir -p /app/data 6 | chown ${USER}:${USER} /app/data 7 | 8 | exec su-exec ${USER} "$@" 9 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-amd64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yobasystems/alpine:3.8-amd64 as xoa-builder 2 | 3 | WORKDIR /app 4 | 5 | RUN apk add --no-cache bash git build-base git curl nodejs python libstdc++ make gcc g++ libpng-dev yarn 6 | 7 | RUN git clone -b master https://github.com/vatesfr/xen-orchestra && \ 8 | rm -rf /app/xen-orchestra/.git && \ 9 | echo "[i] Allow config restore..." && \ 10 | sed -i "s|process.env.XOA_PLAN < 5|process.env.XOA_PLAN > 0|" /app/xen-orchestra/packages/xo-web/src/xo-app/settings/config/index.js && \ 11 | echo "[i] Patching github issue redirect..." && \ 12 | sed -i "s|https://github.com/vatesfr/xen-orchestra/issues/new|https://github.com/yobasystems/alpine-xen-orchestra/issues/new|" /app/xen-orchestra/packages/xo-web/src/xo-app/about/index.js 13 | 14 | COPY files/config.yaml xen-orchestra/packages/xo-server/.xo-server.yaml 15 | 16 | RUN cd /app/xen-orchestra && \ 17 | yarn && yarn build 18 | 19 | FROM yobasystems/alpine:3.8-amd64 20 | 21 | ARG BUILD_DATE 22 | ARG VCS_REF 23 | 24 | LABEL maintainer="Dominic Taylor " \ 25 | architecture="amd64/x86_64" \ 26 | xenorchestra-version="5.47.0" \ 27 | alpine-version="3.8" \ 28 | build="20-Aug-2019" \ 29 | org.opencontainers.image.title="alpine-xen-orchestra" \ 30 | org.opencontainers.image.description="Xen Orchestra Docker image running on Alpine Linux" \ 31 | org.opencontainers.image.authors="Dominic Taylor " \ 32 | org.opencontainers.image.vendor="Yoba Systems" \ 33 | org.opencontainers.image.version="v5.47.0" \ 34 | org.opencontainers.image.url="https://hub.docker.com/r/yobasystems/alpine-xen-orchestra/" \ 35 | org.opencontainers.image.source="https://github.com/yobasystems/alpine-xen-orchestra" \ 36 | org.opencontainers.image.revision=$VCS_REF \ 37 | org.opencontainers.image.created=$BUILD_DATE 38 | 39 | ENV USER=xenorchestra \ 40 | USER_HOME=/app 41 | 42 | RUN addgroup -S $USER && adduser -D -S -h $USER_HOME -G $USER $USER 43 | 44 | RUN apk add --no-cache nodejs bash libstdc++ lvm2 nfs-utils su-exec tini util-linux && \ 45 | rm -rf /tmp/* /var/cache/apk/* 46 | 47 | RUN mkdir -p $USER_HOME && \ 48 | chown $USER:$USER $USER_HOME 49 | 50 | WORKDIR /app 51 | 52 | COPY --from=xoa-builder /app/xen-orchestra /app/xen-orchestra 53 | COPY --from=xoa-builder /usr/bin/node /usr/bin/ 54 | COPY --from=xoa-builder /usr/lib/libgcc* /usr/lib/libstdc* /usr/lib/ 55 | COPY files/config.yaml /app/xen-orchestra/packages/xo-server/.xo-server.yaml 56 | 57 | COPY files/entrypoint.sh /entrypoint.sh 58 | RUN chmod +x /entrypoint.sh 59 | 60 | EXPOSE 8080 61 | 62 | WORKDIR /app/xen-orchestra/packages/xo-server/ 63 | 64 | ENTRYPOINT ["/sbin/tini", "--", "/entrypoint.sh" ] 65 | 66 | CMD ["./bin/xo-server"] 67 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-amd64/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | xen-orchestra: 4 | image: yobasystems/alpine-xen-orchestra:amd64 5 | command: ./bin/xo-server 6 | container_name: xoa 7 | ports: 8 | - "8000:8080" 9 | depends_on: 10 | - redis 11 | environment: 12 | - NODE_ENV=production 13 | volumes: 14 | - /data/xoa/server:/app/data 15 | redis: 16 | container_name: xoa-redis 17 | image: yobasystems/alpine-redis:amd64 18 | command: redis-server --appendonly yes 19 | volumes: 20 | - /data/xoa/redis:/data 21 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-amd64/files/config.yaml: -------------------------------------------------------------------------------- 1 | # Example XO-Server configuration. 2 | 3 | # This file is automatically looking for at the following places: 4 | # - `$HOME/.config/xo-server/config.yaml` 5 | # - `/etc/xo-server/config.yaml` 6 | # 7 | # The first entries have priority. 8 | 9 | # Note: paths are relative to the configuration file. 10 | 11 | #===================================================================== 12 | 13 | # It may be necessary to run XO-Server as a privileged user (e.g. 14 | # `root`) for instance to allow the HTTP server to listen on a 15 | # [privileged ports](http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html). 16 | # 17 | # To avoid security issues, XO-Server can drop its privileges by 18 | # changing the user and the group is running with. 19 | # 20 | # Note: XO-Server will change them just after reading the 21 | # configuration. 22 | 23 | # User to run XO-Server as. 24 | # 25 | # Note: The user can be specified using either its name or its numeric 26 | # identifier. 27 | # 28 | # Default: undefined 29 | user: 'xenorchestra' 30 | 31 | # Group to run XO-Server as. 32 | # 33 | # Note: The group can be specified using either its name or its 34 | # numeric identifier. 35 | # 36 | # Default: undefined 37 | #group: 'nogroup' 38 | 39 | #===================================================================== 40 | 41 | # Configuration of the embedded HTTP server. 42 | http: 43 | 44 | # Hosts & ports on which to listen. 45 | # 46 | # By default, the server listens on 0.0.0.0:80. 47 | listen: 48 | # Basic HTTP. 49 | - 50 | # Address on which the server is listening on. 51 | # 52 | # Sets it to '127.0.0.1' to listen only on the local host. 53 | # 54 | # Default: '0.0.0.0' (all addresses) 55 | #hostname: '127.0.0.1' 56 | 57 | # Port on which the server is listening on. 58 | # 59 | # Default: undefined 60 | port: 8080 61 | 62 | 63 | # List of files/directories which will be served. 64 | mounts: 65 | '/': '../xo-web/dist/' 66 | 67 | #===================================================================== 68 | 69 | # Connection to the Redis server. 70 | redis: 71 | uri: "redis://redis:6379" 72 | # 73 | # Default: tcp://localhost:6379 74 | #uri: '' 75 | 76 | # Directory containing the database of XO. 77 | # Currently used for logs. 78 | # 79 | # Default: '/var/lib/xo-server/data' 80 | datadir: '/app/data' 81 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-amd64/files/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | rpcbind 4 | 5 | mkdir -p /app/data 6 | chown ${USER}:${USER} /app/data 7 | 8 | exec su-exec ${USER} "$@" 9 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-armhf/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM yobasystems/alpine:3.8-armhf as xoa-builder 2 | 3 | WORKDIR /app 4 | 5 | RUN apk add --no-cache bash git build-base git curl nodejs python libstdc++ make gcc g++ libpng-dev yarn 6 | 7 | RUN git clone -b master https://github.com/vatesfr/xen-orchestra && \ 8 | rm -rf /app/xen-orchestra/.git && \ 9 | echo "[i] Allow config restore..." && \ 10 | sed -i "s|process.env.XOA_PLAN < 5|process.env.XOA_PLAN > 0|" /app/xen-orchestra/packages/xo-web/src/xo-app/settings/config/index.js && \ 11 | echo "[i] Patching github issue redirect..." && \ 12 | sed -i "s|https://github.com/vatesfr/xen-orchestra/issues/new|https://github.com/yobasystems/alpine-xen-orchestra/issues/new|" /app/xen-orchestra/packages/xo-web/src/xo-app/about/index.js 13 | 14 | COPY files/config.yaml xen-orchestra/packages/xo-server/.xo-server.yaml 15 | 16 | RUN cd /app/xen-orchestra && \ 17 | yarn && yarn build 18 | 19 | FROM yobasystems/alpine:3.8-armhf 20 | 21 | ARG BUILD_DATE 22 | ARG VCS_REF 23 | 24 | LABEL maintainer="Dominic Taylor " \ 25 | architecture="arm32v7/armhf" \ 26 | xenorchestra-version="5.47.0" \ 27 | alpine-version="3.8" \ 28 | build="20-Aug-2019" \ 29 | org.opencontainers.image.title="alpine-xen-orchestra" \ 30 | org.opencontainers.image.description="Xen Orchestra Docker image running on Alpine Linux" \ 31 | org.opencontainers.image.authors="Dominic Taylor " \ 32 | org.opencontainers.image.vendor="Yoba Systems" \ 33 | org.opencontainers.image.version="v5.47.0" \ 34 | org.opencontainers.image.url="https://hub.docker.com/r/yobasystems/alpine-xen-orchestra/" \ 35 | org.opencontainers.image.source="https://github.com/yobasystems/alpine-xen-orchestra" \ 36 | org.opencontainers.image.revision=$VCS_REF \ 37 | org.opencontainers.image.created=$BUILD_DATE 38 | 39 | ENV USER=xenorchestra \ 40 | USER_HOME=/app 41 | 42 | RUN addgroup -S $USER && adduser -D -S -h $USER_HOME -G $USER $USER 43 | 44 | RUN apk add --no-cache nodejs bash libstdc++ lvm2 nfs-utils su-exec tini util-linux && \ 45 | rm -rf /tmp/* /var/cache/apk/* 46 | 47 | RUN mkdir -p $USER_HOME && \ 48 | chown $USER:$USER $USER_HOME 49 | 50 | WORKDIR /app 51 | 52 | COPY --from=xoa-builder /app/xen-orchestra /app/xen-orchestra 53 | COPY --from=xoa-builder /usr/bin/node /usr/bin/ 54 | COPY --from=xoa-builder /usr/lib/libgcc* /usr/lib/libstdc* /usr/lib/ 55 | COPY files/config.yaml /app/xen-orchestra/packages/xo-server/.xo-server.yaml 56 | 57 | COPY files/entrypoint.sh /entrypoint.sh 58 | RUN chmod +x /entrypoint.sh 59 | 60 | EXPOSE 8080 61 | 62 | WORKDIR /app/xen-orchestra/packages/xo-server/ 63 | 64 | ENTRYPOINT ["/sbin/tini", "--", "/entrypoint.sh" ] 65 | 66 | CMD ["./bin/xo-server"] 67 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-armhf/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | xen-orchestra: 4 | image: yobasystems/alpine-xen-orchestra:armhf 5 | command: ./bin/xo-server 6 | container_name: xoa 7 | ports: 8 | - "8000:8080" 9 | depends_on: 10 | - redis 11 | environment: 12 | - NODE_ENV=production 13 | volumes: 14 | - /data/xoa/server:/app/data 15 | redis: 16 | container_name: xoa-redis 17 | image: yobasystems/alpine-redis:armhf 18 | command: redis-server --appendonly yes 19 | volumes: 20 | - /data/xoa/redis:/data 21 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-armhf/files/config.yaml: -------------------------------------------------------------------------------- 1 | # Example XO-Server configuration. 2 | 3 | # This file is automatically looking for at the following places: 4 | # - `$HOME/.config/xo-server/config.yaml` 5 | # - `/etc/xo-server/config.yaml` 6 | # 7 | # The first entries have priority. 8 | 9 | # Note: paths are relative to the configuration file. 10 | 11 | #===================================================================== 12 | 13 | # It may be necessary to run XO-Server as a privileged user (e.g. 14 | # `root`) for instance to allow the HTTP server to listen on a 15 | # [privileged ports](http://www.w3.org/Daemon/User/Installation/PrivilegedPorts.html). 16 | # 17 | # To avoid security issues, XO-Server can drop its privileges by 18 | # changing the user and the group is running with. 19 | # 20 | # Note: XO-Server will change them just after reading the 21 | # configuration. 22 | 23 | # User to run XO-Server as. 24 | # 25 | # Note: The user can be specified using either its name or its numeric 26 | # identifier. 27 | # 28 | # Default: undefined 29 | user: 'xenorchestra' 30 | 31 | # Group to run XO-Server as. 32 | # 33 | # Note: The group can be specified using either its name or its 34 | # numeric identifier. 35 | # 36 | # Default: undefined 37 | #group: 'nogroup' 38 | 39 | #===================================================================== 40 | 41 | # Configuration of the embedded HTTP server. 42 | http: 43 | 44 | # Hosts & ports on which to listen. 45 | # 46 | # By default, the server listens on 0.0.0.0:80. 47 | listen: 48 | # Basic HTTP. 49 | - 50 | # Address on which the server is listening on. 51 | # 52 | # Sets it to '127.0.0.1' to listen only on the local host. 53 | # 54 | # Default: '0.0.0.0' (all addresses) 55 | #hostname: '127.0.0.1' 56 | 57 | # Port on which the server is listening on. 58 | # 59 | # Default: undefined 60 | port: 8080 61 | 62 | 63 | # List of files/directories which will be served. 64 | mounts: 65 | '/': '../xo-web/dist/' 66 | 67 | #===================================================================== 68 | 69 | # Connection to the Redis server. 70 | redis: 71 | uri: "redis://redis:6379" 72 | # 73 | # Default: tcp://localhost:6379 74 | #uri: '' 75 | 76 | # Directory containing the database of XO. 77 | # Currently used for logs. 78 | # 79 | # Default: '/var/lib/xo-server/data' 80 | datadir: '/app/data' 81 | -------------------------------------------------------------------------------- /alpine-xen-orchestra-armhf/files/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | set -e 3 | rpcbind 4 | 5 | mkdir -p /app/data 6 | chown ${USER}:${USER} /app/data 7 | 8 | exec su-exec ${USER} "$@" 9 | --------------------------------------------------------------------------------