├── .github ├── ISSUE_TEMPLATE.md ├── no-response.yml ├── stale.yml └── workflows │ ├── debian-bullseye.yml │ └── ubuntu-impish.yml ├── .gitignore ├── README.md ├── buildsystem ├── README.md ├── debian │ ├── bullseye │ │ └── Dockerfile │ ├── buster │ │ └── Dockerfile │ ├── debian-buster-armhf │ │ └── Dockerfile │ ├── jessie │ │ └── Dockerfile │ ├── raspbian-stretch-armhf │ │ └── Dockerfile │ ├── stretch │ │ └── Dockerfile │ └── wheezy │ │ ├── Dockerfile │ │ ├── backports.list │ │ └── preferences ├── fedora │ ├── fedora-29-armhf │ │ └── Dockerfile │ ├── fedora-29 │ │ └── Dockerfile │ ├── fedora-30-armhf │ │ └── Dockerfile │ ├── fedora-31-armhf │ │ └── Dockerfile │ ├── fedora-32-aarch64 │ │ └── Dockerfile │ ├── fedora-33-aarch64 │ │ └── Dockerfile │ ├── fedora-40 │ │ └── Dockerfile │ └── fedora-41 │ │ └── Dockerfile ├── rhel │ ├── el-8-aarch64 │ │ └── Dockerfile │ └── el-8 │ │ └── Dockerfile ├── ubuntu │ ├── bionic │ │ └── Dockerfile │ ├── disco │ │ └── Dockerfile │ ├── eoan │ │ └── Dockerfile │ ├── focal │ │ └── Dockerfile │ ├── groovy │ │ └── Dockerfile │ ├── hirsute │ │ └── Dockerfile │ ├── impish │ │ └── Dockerfile │ ├── trusty │ │ └── Dockerfile │ └── xenial │ │ └── Dockerfile └── zmrepo-buildhost │ ├── README.md │ ├── synczmrepo.service │ └── synczmrepo.sh ├── development ├── README.md └── ubuntu │ └── xenial │ └── Dockerfile ├── docker-compose.yaml ├── release ├── README.md ├── debian10 │ ├── DockerFile │ └── README.md ├── el7 │ └── Dockerfile ├── el8 │ └── Dockerfile ├── ubuntu18.04 │ ├── Dockerfile │ └── README.md └── ubuntu20.04 │ ├── Dockerfile │ └── README.md └── utils ├── README.md └── entrypoint.sh /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | This forum is intended only for bug reports. 2 | 3 | Please post general use questions in our user forum at https://forums.zoneminder.com/. 4 | 5 | When creating an issue, please provide the following information: 6 | - The exact dockerfile you chose to use from this repository 7 | - Provide the full syntax showing how you started the container from the command line 8 | - Relevant output indiating the problem. 9 | 10 | -------------------------------------------------------------------------------- /.github/no-response.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-no-response - https://github.com/probot/no-response 2 | 3 | # Number of days of inactivity before an Issue is closed for lack of response 4 | daysUntilClose: 7 5 | # Label requiring a response 6 | responseRequiredLabel: more-information-needed 7 | # Comment to post when closing an Issue for lack of response. Set to `false` to disable 8 | closeComment: > 9 | This issue has been automatically closed because there has been no response 10 | to our request for more information from the original author. With only the 11 | information that is currently in the issue, we don't have enough information 12 | to take action. Please reach out if you have or find the answers we need so 13 | that we can investigate further. 14 | -------------------------------------------------------------------------------- /.github/stale.yml: -------------------------------------------------------------------------------- 1 | # Configuration for probot-stale - https://github.com/probot/stale 2 | 3 | # Number of days of inactivity before an issue becomes stale 4 | daysUntilStale: 60 5 | 6 | # Number of days of inactivity before a stale issue is closed 7 | daysUntilClose: 7 8 | 9 | # Issues with these labels will never be considered stale 10 | exemptLabels: 11 | - "Under Review" 12 | - "Bounty" 13 | - "bug" 14 | - "Feature" 15 | 16 | # Set to true to ignore issues in a milestone (defaults to false) 17 | exemptMilestones: true 18 | 19 | # Label to use when marking an issue as stale 20 | staleLabel: stale 21 | 22 | # Comment to post when marking an issue as stale. Set to `false` to disable 23 | markComment: > 24 | This issue has been automatically marked as stale because it has not had 25 | recent activity. It will be closed if no further activity occurs. Thank you 26 | for your contributions. 27 | 28 | # Comment to post when closing a stale issue. Set to `false` to disable 29 | closeComment: false 30 | -------------------------------------------------------------------------------- /.github/workflows/debian-bullseye.yml: -------------------------------------------------------------------------------- 1 | name: docker-build-and-push-debian-bullseye 2 | 3 | env: 4 | TAG: debian-bullseye # Change me based on image 5 | REPO: iconzm/packpack # Make sure this matches the DockerHub Repo you're pushing to 6 | DOCKERFILE_PATH: buildsystem/debian/bullseye/Dockerfile # Change me based on image 7 | 8 | on: 9 | push: 10 | paths: 11 | - 'buildsystem/debian/bullseye/Dockerfile' # Change me based on image 12 | 13 | jobs: 14 | debian-bulleye: # Change me based on image 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Checkout 18 | uses: actions/checkout@v2 19 | 20 | - name: Set up QEMU 21 | uses: docker/setup-qemu-action@v1 22 | 23 | - name: Set up Docker Buildx 24 | uses: docker/setup-buildx-action@v1 25 | 26 | - name: Login to DockerHub 27 | uses: docker/login-action@v1 28 | with: 29 | username: ${{ secrets.DOCKERHUB_USERNAME }} 30 | password: ${{ secrets.DOCKERHUB_TOKEN }} 31 | 32 | - name: Build and push 33 | uses: docker/build-push-action@v2 34 | with: 35 | context: . 36 | file: ${{ env.DOCKERFILE_PATH }} 37 | platforms: linux/amd64,linux/arm64,linux/arm/v7 38 | push: ${{ github.event_name != 'pull_request' }} 39 | tags: ${{ env.REPO }}:${{ env.TAG }} 40 | -------------------------------------------------------------------------------- /.github/workflows/ubuntu-impish.yml: -------------------------------------------------------------------------------- 1 | name: docker-build-and-push 2 | 3 | env: 4 | TAG: ubuntu-impish # Change me based on image 5 | REPO: iconzm/packpack # Make sure this matches the DockerHub Repo you're pushing to 6 | DOCKERFILE_PATH: buildsystem/ubuntu/impish/Dockerfile # Change me based on image 7 | 8 | on: 9 | push: 10 | paths: 11 | - 'buildsystem/ubuntu/impish/Dockerfile' # Change me based on image 12 | 13 | jobs: 14 | ubuntu-impish: # Change me based on image 15 | runs-on: ubuntu-latest 16 | steps: 17 | - name: Checkout 18 | uses: actions/checkout@v2 19 | 20 | - name: Set up QEMU 21 | uses: docker/setup-qemu-action@v1 22 | 23 | - name: Set up Docker Buildx 24 | uses: docker/setup-buildx-action@v1 25 | 26 | - name: Login to DockerHub 27 | uses: docker/login-action@v1 28 | with: 29 | username: ${{ secrets.DOCKERHUB_USERNAME }} 30 | password: ${{ secrets.DOCKERHUB_TOKEN }} 31 | 32 | - name: Build and push 33 | uses: docker/build-push-action@v2 34 | with: 35 | context: . 36 | file: ${{ env.DOCKERFILE_PATH }} 37 | platforms: linux/amd64,linux/arm64 38 | push: ${{ github.event_name != 'pull_request' }} 39 | tags: ${{ env.REPO }}:${{ env.TAG }} 40 | 41 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.env 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # zmdockerfiles 2 | This repository contains Docker files used in various ways for the ZoneMinder project. 3 | 4 | ## Usage 5 | 6 | **Note:** Detailled usage instructions for the development and release Dockerfiles are contained within each Dockerfile. 7 | 8 | Docker images are published to Docker Hub and can be pulled directly from there e.g. 9 | 10 | ### CentOS and Rocky 11 | 12 | Using external folders: 13 | ```bash 14 | docker run -d -t -p 1080:443 \ 15 | -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 16 | -v /disk/zoneminder/mysql:/var/lib/mysql \ 17 | -v /disk/zoneminder/logs:/var/log/zm \ 18 | --name zoneminder \ 19 | zoneminderhq/zoneminder:latest-el7 20 | ``` 21 | 22 | Using external folders and external MySQL database: 23 | 24 | ```bash 25 | docker run -d -t -p 1080:443 \ 26 | -e TZ='America/Los_Angeles' \ 27 | -e ZM_DB_USER='zmuser' \ 28 | -e ZM_DB_PASS='zmpassword' \ 29 | -e ZM_DB_NAME='zoneminder_database' \ 30 | -e ZM_DB_HOST='my_central_db_server' \ 31 | -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 32 | -v /disk/zoneminder/logs:/var/log/zm \ 33 | --shm-size="512m" \ 34 | --name zoneminder \ 35 | zoneminderhq/zoneminder:latest-el7 36 | ``` 37 | 38 | ### Ubuntu 39 | 40 | ```bash 41 | docker run -d -t -p 1080:80 \ 42 | -e TZ='Europe/London' \ 43 | -v ~/zoneminder/events:/var/cache/zoneminder/events \ 44 | -v ~/zoneminder/images:/var/cache/zoneminder/images \ 45 | -v ~/zoneminder/mysql:/var/lib/mysql \ 46 | -v ~/zoneminder/logs:/var/log/zm \ 47 | --shm-size="512m" \ 48 | --name zoneminder \ 49 | zoneminderhq/zoneminder:latest-ubuntu18.04 50 | ``` 51 | 52 | Example for passing a host device to the container (for hardware acceleration via DecoderHWAccelName/DecoderHWAccelDevice): 53 | 54 | ```bash 55 | docker run [...] \ 56 | [...] 57 | --device /dev/dri \ 58 | [...] 59 | ``` 60 | 61 | ## Contributions 62 | 63 | Contributions are welcome, but please follow instructions under each subfolder: 64 | 65 | - [buildsystem](https://github.com/ZoneMinder/zmdockerfiles/tree/master/buildsystem) - These build zoneminder into packages 66 | - [development](https://github.com/ZoneMinder/zmdockerfiles/tree/master/development) - These run the latest ZoneMinder code. 67 | - [release](https://github.com/ZoneMinder/zmdockerfiles/tree/master/release) - These run the latest ZoneMinder release. 68 | -------------------------------------------------------------------------------- /buildsystem/README.md: -------------------------------------------------------------------------------- 1 | ## ZoneMinder BuildSystem Dockerfiles 2 | 3 | ZoneMinder's automated build system uses the [PackPack](https://github.com/packpack/packpack) project to generate ZoneMinder packages for various redhat & debian distros. A Docker container must exist for each ZoneMinder package generated by the build system. If a particular Docker container does not already exist as part of the packapck project, they are added here and then uploaded independantly to dockerhub. 4 | 5 | The Docker files shown here are not intended to run ZoneMinder directly, and consequently they will not be useful to the average end user. However, advanced users looking to expand the build system to support a new distro can use the Dockerfiles shown here as an example to start from. 6 | -------------------------------------------------------------------------------- /buildsystem/debian/bullseye/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:bullseye 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | #RUN apt-get install --reinstall -y gpgv 14 | 15 | RUN apt-get update 16 | 17 | RUN apt-get install -y \ 18 | apt-transport-https \ 19 | curl \ 20 | wget \ 21 | ca-certificates 22 | 23 | # Install base toolset 24 | RUN apt-get install -y \ 25 | sudo \ 26 | git \ 27 | build-essential \ 28 | cmake \ 29 | gdb \ 30 | ccache \ 31 | devscripts \ 32 | debhelper \ 33 | cdbs \ 34 | fakeroot \ 35 | lintian \ 36 | equivs \ 37 | rpm \ 38 | alien \ 39 | libdistro-info-perl \ 40 | apache2-dev bzip2 dh-linktree docutils-common \ 41 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 \ 42 | libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data \ 43 | libass9 libasyncns0 libavc1394-0 libavcodec-dev libavcodec58 libavdevice-dev \ 44 | libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 \ 45 | libswresample-dev libswresample3 libavutil-dev libavutil56 \ 46 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-1.0 libbz2-dev libcaca0 \ 47 | libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1 \ 48 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 49 | libcurl4-gnutls-dev libdata-entropy-perl \ 50 | libdata-float-perl libdata-uuid-perl libdate-manip-perl libdatrie1 \ 51 | libdbd-mysql-perl libdbi-perl libdc1394-25 libdevel-callchecker-perl \ 52 | libdrm-common \ 53 | libdrm2 libdynaloader-functions-perl libedit2 libexpat1 \ 54 | libexpat1-dev libfftw3-double3 libflac8 libflite1 libfontconfig1 \ 55 | libfreetype6 libfribidi0 libgcrypt20-dev libgdk-pixbuf2.0-0 \ 56 | libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 \ 57 | libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 \ 58 | libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 \ 59 | libgnutls-openssl27 libgnutls28-dev libgnutls30 libgnutlsxx28 \ 60 | libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b libhttp-lite-perl \ 61 | libidn11 libidn2-0-dev libidn2-dev libiec61883-0 libjack-jackd2-0 libjbig0 \ 62 | libturbojpeg0 libturbojpeg0-dev \ 63 | libjs-mootools libjs-sphinxdoc libjs-underscore libldap-2.4-2 libldap-common \ 64 | libjwt0 libjwt-dev \ 65 | libldap2-dev libllvm11 libmp3lame0 libmpg123-0 \ 66 | libmysofa1 libmariadb-dev-compat libmariadb3 libnorm1 libnuma1 libogg0 \ 67 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 68 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 69 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 70 | libpgm-5.3-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 71 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 72 | libpostproc-dev libpostproc55 libpulse0 libpython2-stdlib \ 73 | libraw1394-11 librsvg2-2 \ 74 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors5 \ 75 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 \ 76 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libssl1.1 \ 77 | libswscale-dev libswscale5 libsys-mmap-perl libtasn1-6-dev \ 78 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound8 \ 79 | libusb-1.0-0 libuuid1 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 \ 80 | libva-drm2 libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 \ 81 | libvorbis0a libvorbisenc2 libvorbisfile3 libvpx6 libwavpack1 \ 82 | libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 \ 83 | libwrap0 libx11-6 libx11-data libx11-xcb1 \ 84 | libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \ 85 | libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 \ 86 | libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 \ 87 | libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 \ 88 | libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mysql-common \ 89 | net-tools nettle-dev pkg-config python3 python3-alabaster python3-babel \ 90 | python-babel-localedata python3-certifi python3-chardet python3-docutils \ 91 | python3-idna python3-imagesize python3-jinja2 python3-markupsafe \ 92 | python-pkg-resources python3-pygments python3-roman python3-six \ 93 | sphinx-doc python3-sphinx python3-tz \ 94 | python3-distutils python3-lib2to3 sgml-base \ 95 | shared-mime-info sphinx-common tzdata uuid-dev x11-common xkb-data xml-core \ 96 | zlib1g-dev \ 97 | bzip2 libbz2-1.0 libcurl3-gnutls libexpat1 libglib2.0-0 libglib2.0-data \ 98 | libgnutls30 libldap-2.4-2 libpcre3 libssl1.1 shared-mime-info 99 | 100 | # Enable sudo without password 101 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 102 | #comment 2 103 | -------------------------------------------------------------------------------- /buildsystem/debian/buster/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:buster 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | RUN apt-get update && apt-get install -y \ 14 | apt-transport-https \ 15 | curl \ 16 | wget \ 17 | gnupg \ 18 | ca-certificates 19 | 20 | RUN echo "deb https://zmrepo.zoneminder.com/debian/master buster/" >> /etc/apt/sources.list 21 | 22 | RUN wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | apt-key add - 23 | 24 | # Install base toolset 25 | RUN apt-get update && apt-get install -y \ 26 | sudo \ 27 | git \ 28 | build-essential \ 29 | cmake \ 30 | gdb \ 31 | ccache \ 32 | devscripts \ 33 | debhelper \ 34 | cdbs \ 35 | fakeroot \ 36 | lintian \ 37 | equivs \ 38 | rpm \ 39 | alien \ 40 | dh-systemd \ 41 | libdistro-info-perl \ 42 | apache2-dev bzip2 default-libmysqlclient-dev dh-linktree docutils-common \ 43 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 \ 44 | libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data \ 45 | libass9 libasyncns0 libavc1394-0 libavcodec-dev libavcodec58 libavdevice-dev \ 46 | libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 \ 47 | libswresample-dev libswresample3 libavutil-dev libavutil56 \ 48 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-1.0 libbz2-dev libcaca0 \ 49 | libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio18 libchromaprint1 \ 50 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 51 | libcrystalhd3 libcurl3-gnutls libcurl4-gnutls-dev libdata-entropy-perl \ 52 | libdata-float-perl libdata-uuid-perl libdate-manip-perl libdatrie1 \ 53 | libdbd-mysql-perl libdbi-perl libdc1394-22 libdevel-callchecker-perl \ 54 | libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 \ 55 | libdrm2 libdynaloader-functions-perl libedit2 libevent-2.1-6 libexpat1 \ 56 | libexpat1-dev libfftw3-double3 libflac8 libflite1 libfontconfig1 \ 57 | libfreetype6 libfribidi0 libgcrypt20-dev libgdk-pixbuf2.0-0 \ 58 | libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 \ 59 | libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 \ 60 | libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 \ 61 | libgnutls-openssl27 libgnutls28-dev libgnutls30 libgnutlsxx28 \ 62 | libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b libhttp-lite-perl \ 63 | libidn11 libidn2-0-dev libidn2-dev libiec61883-0 libjack-jackd2-0 libjbig0 \ 64 | libjpeg62-turbo libjpeg62-turbo-dev libjs-jquery \ 65 | libjs-mootools libjs-sphinxdoc libjs-underscore libldap-2.4-2 libldap-common \ 66 | libldap2-dev libllvm7 libmp3lame0 libmp4v2-2 libmp4v2-dev libmpg123-0 \ 67 | libmysofa0 libmariadb-dev-compat libmariadb3 libnorm1 libnuma1 libogg0 \ 68 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 69 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 70 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 71 | libpgm-5.2-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 72 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 73 | libpostproc-dev libpostproc55 libpulse0 libpython-stdlib \ 74 | libpython2.7-minimal libpython2.7-stdlib libraw1394-11 librsvg2-2 \ 75 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors5 \ 76 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 \ 77 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libssl1.1 \ 78 | libswscale-dev libswscale5 libsys-mmap-perl libtasn1-6-dev \ 79 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound8 \ 80 | libusb-1.0-0 libuuid1 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 \ 81 | libva-drm2 libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 \ 82 | libvorbis0a libvorbisenc2 libvorbisfile3 libvpx5 libwavpack1 \ 83 | libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 \ 84 | libwrap0 libx11-6 libx11-data libx11-xcb1 libx264-155 libx264-dev \ 85 | libx265-165 libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \ 86 | libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 \ 87 | libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 \ 88 | libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 \ 89 | libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mysql-common \ 90 | net-tools nettle-dev pkg-config python python-alabaster python-babel \ 91 | python-babel-localedata python-certifi python-chardet python-docutils \ 92 | python-idna python-imagesize python-jinja2 python-markupsafe python-minimal \ 93 | python-pkg-resources python-pygments python-requests python-roman python-six \ 94 | python-sphinx python-typing python-tz python-urllib3 python2.7 \ 95 | python2.7-minimal python3-distutils python3-lib2to3 sgml-base \ 96 | shared-mime-info sphinx-common tzdata uuid-dev x11-common xkb-data xml-core \ 97 | zlib1g-dev \ 98 | bzip2 libbz2-1.0 libcurl3-gnutls libexpat1 libglib2.0-0 libglib2.0-data \ 99 | libgnutls30 libldap-2.4-2 libpcre3 libssl1.1 shared-mime-info 100 | 101 | # Enable sudo without password 102 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 103 | -------------------------------------------------------------------------------- /buildsystem/debian/debian-buster-armhf/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:buster 2 | MAINTAINER Andrew Bauer 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | # Enable extra repositories 14 | RUN apt-get update && apt-get install -y --force-yes \ 15 | apt-transport-https \ 16 | curl \ 17 | wget \ 18 | gnupg \ 19 | ca-certificates 20 | 21 | RUN echo "deb https://zmrepo.zoneminder.com/debian/master buster/" > /etc/apt/sources.list.d/zmrepo.list 22 | RUN wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | apt-key add - 23 | 24 | # Install base toolset 25 | RUN apt-get update && apt-get install -y --force-yes \ 26 | sudo \ 27 | git \ 28 | build-essential \ 29 | cmake \ 30 | gdb \ 31 | ccache \ 32 | devscripts \ 33 | debhelper \ 34 | cdbs \ 35 | fakeroot \ 36 | lintian \ 37 | equivs \ 38 | rpm \ 39 | alien \ 40 | dh-systemd 41 | 42 | # Enable sudo without password 43 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 44 | 45 | -------------------------------------------------------------------------------- /buildsystem/debian/jessie/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | # Drop EOL repositories 14 | RUN sed -i '/jessie-updates/d' /etc/apt/sources.list 15 | 16 | RUN apt-get update && apt-get install -y --force-yes apt-utils 17 | 18 | # Enable extra repositories 19 | RUN apt-get install -y --force-yes \ 20 | apt-transport-https \ 21 | curl \ 22 | wget \ 23 | gnupg \ 24 | ca-certificates 25 | #ADD preferences /etc/apt/preferences.d/ 26 | RUN curl -s https://packagecloud.io/install/repositories/packpack/backports/script.deb.sh | bash 27 | 28 | # Install base toolset 29 | RUN apt-get update && apt-get install -y --force-yes \ 30 | sudo \ 31 | git \ 32 | build-essential \ 33 | cmake \ 34 | gdb \ 35 | ccache \ 36 | devscripts \ 37 | debhelper \ 38 | cdbs \ 39 | fakeroot \ 40 | lintian \ 41 | equivs \ 42 | rpm \ 43 | alien \ 44 | dh-systemd \ 45 | libdistro-info-perl 46 | 47 | # Enable sudo without password 48 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 49 | -------------------------------------------------------------------------------- /buildsystem/debian/raspbian-stretch-armhf/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM knnniggett/leosac:2017-11-29-raspbian-stretch-lite 2 | MAINTAINER Andrew Bauer 3 | 4 | # The existing pi user account causes issues with packpack so remove it 5 | RUN userdel -fr pi 6 | RUN rm -f /etc/sudoers.d/010_pi-nopasswd 7 | 8 | # Fix missing locales 9 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 10 | 11 | # Skip interactive post-install scripts 12 | ENV DEBIAN_FRONTEND=noninteractive 13 | 14 | # Don't install recommends 15 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 16 | 17 | # Enable extra repositories 18 | RUN apt-get update && apt-get install -y --force-yes \ 19 | apt-transport-https \ 20 | curl \ 21 | wget \ 22 | gnupg \ 23 | ca-certificates 24 | #ADD backports.list /etc/apt/sources.list.d/ 25 | #ADD preferences /etc/apt/preferences.d/ 26 | #RUN curl -s https://packagecloud.io/install/repositories/packpack/backports/script.deb.sh | bash 27 | 28 | # Install base toolset 29 | RUN apt-get update && apt-get install -y --force-yes \ 30 | sudo \ 31 | git \ 32 | build-essential \ 33 | cmake \ 34 | gdb \ 35 | ccache \ 36 | devscripts \ 37 | debhelper \ 38 | cdbs \ 39 | fakeroot \ 40 | lintian \ 41 | equivs \ 42 | rpm \ 43 | alien \ 44 | dh-systemd \ 45 | libdistro-info-perl \ 46 | apache2-dev bzip2 default-libmysqlclient-dev dh-linktree docutils-common \ 47 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core \ 48 | gir1.2-glib-2.0 gir1.2-polkit-1.0 libavcodec-dev libavdevice-dev \ 49 | libavfilter-dev libavformat-dev libavresample-dev libavutil-dev libbz2-dev \ 50 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 51 | libcurl4-gnutls-dev libdata-entropy-perl libdata-float-perl \ 52 | libdata-uuid-perl libdate-manip-perl libdbd-mysql-perl libdbi-perl \ 53 | libencode-locale-perl libfile-listing-perl libgcrypt20-dev \ 54 | libgirepository-1.0-1 libglib2.0-bin libglib2.0-data libglib2.0-dev \ 55 | libgmp-dev libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev \ 56 | libgnutlsxx28 libgpg-error-dev libhtml-tree-perl libhttp-cookies-perl \ 57 | libhttp-date-perl libhttp-lite-perl libhttp-message-perl \ 58 | libhttp-negotiate-perl libidn11-dev libio-html-perl libjpeg62-turbo \ 59 | libjpeg62-turbo-dev libjs-jquery libjs-mootools libjs-sphinxdoc \ 60 | libjs-underscore liblwp-mediatypes-perl liblwp-protocol-https-perl \ 61 | libmp4v2-2 libmp4v2-dev libnet-http-perl libp11-kit-dev \ 62 | libparams-classify-perl libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 63 | libphp-serialization-perl libpolkit-agent-1-0 libpolkit-gobject-1-0 \ 64 | libpolkit-gobject-1-dev libpostproc-dev libpython-stdlib \ 65 | libpython2.7-minimal libpython2.7-stdlib libssl-dev libswresample-dev \ 66 | libswscale-dev libsys-mmap-perl libtasn1-6-dev libunbound2 libv4l-0 \ 67 | libv4l-dev libv4l2rds0 libv4lconvert0 libvlc-dev libvlc5 libvlccore9 \ 68 | libwww-perl libwww-robotrules-perl libx264-dev net-tools nettle-dev \ 69 | pkg-config python python-alabaster python-babel python-babel-localedata \ 70 | python-docutils python-imagesize python-jinja2 python-markupsafe \ 71 | python-minimal python-pkg-resources python-pygments python-roman python-six \ 72 | python-sphinx python-tz python2.7 python2.7-minimal sphinx-common 73 | 74 | # Enable sudo without password 75 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 76 | 77 | -------------------------------------------------------------------------------- /buildsystem/debian/stretch/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:stretch 2 | MAINTAINER ISaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | # Enable extra repositories 14 | RUN apt-get update && apt-get install -y --force-yes \ 15 | apt-transport-https \ 16 | curl \ 17 | wget \ 18 | gnupg \ 19 | ca-certificates 20 | #ADD backports.list /etc/apt/sources.list.d/ 21 | #ADD preferences /etc/apt/preferences.d/ 22 | #RUN curl -s https://packagecloud.io/install/repositories/packpack/backports/script.deb.sh | bash 23 | 24 | # Install base toolset 25 | RUN apt-get update && apt-get install -y --force-yes \ 26 | sudo \ 27 | git \ 28 | build-essential \ 29 | cmake \ 30 | gdb \ 31 | ccache \ 32 | devscripts \ 33 | debhelper \ 34 | cdbs \ 35 | fakeroot \ 36 | lintian \ 37 | equivs \ 38 | dh-systemd \ 39 | libdistro-info-perl \ 40 | apache2-dev bzip2 default-libmysqlclient-dev dh-linktree docutils-common \ 41 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core \ 42 | gir1.2-glib-2.0 gir1.2-polkit-1.0 libavcodec-dev libavdevice-dev \ 43 | libavfilter-dev libavformat-dev libavresample-dev libavutil-dev libbz2-dev \ 44 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 45 | libcurl4-gnutls-dev libdata-entropy-perl libdata-float-perl \ 46 | libdata-uuid-perl libdate-manip-perl libdbd-mysql-perl libdbi-perl \ 47 | libencode-locale-perl libfile-listing-perl libgcrypt20-dev \ 48 | libgirepository-1.0-1 libglib2.0-bin libglib2.0-data libglib2.0-dev \ 49 | libgmp-dev libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev \ 50 | libgnutlsxx28 libgpg-error-dev libhtml-tree-perl libhttp-cookies-perl \ 51 | libhttp-date-perl libhttp-lite-perl libhttp-message-perl \ 52 | libhttp-negotiate-perl libidn11-dev libio-html-perl libjpeg62-turbo \ 53 | libjpeg62-turbo-dev libjs-jquery libjs-mootools libjs-sphinxdoc \ 54 | libjs-underscore liblwp-mediatypes-perl liblwp-protocol-https-perl \ 55 | libmp4v2-2 libmp4v2-dev libnet-http-perl libp11-kit-dev \ 56 | libparams-classify-perl libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 57 | libphp-serialization-perl libpolkit-agent-1-0 libpolkit-gobject-1-0 \ 58 | libpolkit-gobject-1-dev libpostproc-dev libpython-stdlib \ 59 | libpython2.7-minimal libpython2.7-stdlib libssl-dev libswresample-dev \ 60 | libswscale-dev libsys-mmap-perl libtasn1-6-dev libunbound2 libv4l-0 \ 61 | libv4l-dev libv4l2rds0 libv4lconvert0 libvlc-dev libvlc5 libvlccore9 \ 62 | libwww-perl libwww-robotrules-perl libx264-dev net-tools nettle-dev \ 63 | pkg-config python python-alabaster python-babel python-babel-localedata \ 64 | python-docutils python-imagesize python-jinja2 python-markupsafe \ 65 | python-minimal python-pkg-resources python-pygments python-roman python-six \ 66 | python-sphinx python-tz python2.7 python2.7-minimal sphinx-common 67 | 68 | # Enable sudo without password 69 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 70 | -------------------------------------------------------------------------------- /buildsystem/debian/wheezy/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:wheezy 2 | MAINTAINER Roman Tsisyk 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | # Enable extra repositories 14 | RUN apt-get update && apt-get install -y --force-yes \ 15 | apt-transport-https \ 16 | curl \ 17 | wget \ 18 | gnupg \ 19 | ca-certificates 20 | ADD backports.list /etc/apt/sources.list.d/ 21 | ADD preferences /etc/apt/preferences.d/ 22 | RUN curl -s https://packagecloud.io/install/repositories/packpack/backports/script.deb.sh | bash 23 | 24 | # Install base toolset 25 | RUN apt-get update && apt-get install -y --force-yes \ 26 | sudo \ 27 | git \ 28 | build-essential \ 29 | cmake \ 30 | gdb \ 31 | ccache \ 32 | devscripts \ 33 | debhelper \ 34 | cdbs \ 35 | fakeroot \ 36 | lintian \ 37 | equivs \ 38 | rpm \ 39 | alien \ 40 | dh-systemd \ 41 | libdistro-info-perl 42 | 43 | # Enable sudo without password 44 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 45 | -------------------------------------------------------------------------------- /buildsystem/debian/wheezy/backports.list: -------------------------------------------------------------------------------- 1 | deb http://ftp.debian.org/debian wheezy-backports main 2 | deb-src http://ftp.debian.org/debian wheezy-backports main 3 | -------------------------------------------------------------------------------- /buildsystem/debian/wheezy/preferences: -------------------------------------------------------------------------------- 1 | Package: * 2 | Pin: release a=wheezy-backports 3 | Pin-Priority: 100 4 | -------------------------------------------------------------------------------- /buildsystem/fedora/fedora-29-armhf/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM arm32v7/fedora:29 2 | MAINTAINER Andrew Bauer 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Install base toolset 8 | RUN dnf -y group install 'Development Tools' 9 | RUN dnf -y group install 'C Development Tools and Libraries' 10 | RUN dnf -y group install 'RPM Development Tools' 11 | RUN dnf -y install fedora-packager 12 | RUN dnf -y install sudo git ccache cmake 13 | 14 | # Enable cache system-wide 15 | ENV PATH /usr/lib/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 16 | 17 | # Enable sudo without tty 18 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 19 | 20 | -------------------------------------------------------------------------------- /buildsystem/fedora/fedora-29/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM fedora:29 2 | MAINTAINER Andrew Bauer 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Install base toolset 8 | RUN dnf -y group install 'Development Tools' 9 | RUN dnf -y group install 'C Development Tools and Libraries' 10 | RUN dnf -y group install 'RPM Development Tools' 11 | RUN dnf -y install fedora-packager 12 | RUN dnf -y install sudo git ccache cmake 13 | 14 | # Enable cache system-wide 15 | ENV PATH /usr/lib/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 16 | 17 | # Enable sudo without tty 18 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 19 | 20 | -------------------------------------------------------------------------------- /buildsystem/fedora/fedora-30-armhf/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM arm32v7/fedora:30 2 | MAINTAINER Andrew Bauer 3 | 4 | # Disbale Fedora updates-testing repos 5 | RUN sed -i 's!enabled=1!enabled=0!' /etc/yum.repos.d/fedora-updates-testing.repo 6 | RUN sed -i 's!enabled=1!enabled=0!' /etc/yum.repos.d/fedora-updates-testing-modular.repo 7 | 8 | # workaround setrlimit error 9 | RUN echo "Set disable_coredump false" >> /etc/sudo.conf 10 | 11 | # Fix missing locales 12 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 13 | 14 | # Install base toolset 15 | RUN dnf -y group install 'Development Tools' 16 | RUN dnf -y group install 'C Development Tools and Libraries' 17 | RUN dnf -y group install 'RPM Development Tools' 18 | RUN dnf -y install fedora-packager 19 | RUN dnf -y install sudo git ccache cmake 20 | 21 | # Enable cache system-wide 22 | ENV PATH /usr/lib/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 23 | 24 | # Enable sudo without tty 25 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 26 | 27 | -------------------------------------------------------------------------------- /buildsystem/fedora/fedora-31-armhf/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM arm32v7/fedora:31 2 | MAINTAINER Andrew Bauer 3 | 4 | 5 | # Disbale Fedora rawhide repos 6 | RUN sed -i 's!enabled=1!enabled=0!' /etc/yum.repos.d/fedora-rawhide.repo 7 | RUN sed -i 's!enabled=1!enabled=0!' /etc/yum.repos.d/fedora-rawhide-modular.repo 8 | 9 | # Enable Fedora 31 release repos 10 | RUN sed -i '0,/enabled=0/s/enabled=0/enabled=1/' /etc/yum.repos.d/fedora.repo 11 | RUN sed -i '0,/enabled=0/s/enabled=0/enabled=1/' /etc/yum.repos.d/fedora-updates.repo 12 | 13 | # workaround setrlimit error 14 | RUN echo "Set disable_coredump false" >> /etc/sudo.conf 15 | 16 | # Fix missing locales 17 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 18 | 19 | # Install base toolset 20 | RUN dnf -y update fedora-gpg-keys --nogpgcheck 21 | RUN dnf -y group install 'Development Tools' 22 | RUN dnf -y group install 'C Development Tools and Libraries' 23 | RUN dnf -y group install 'RPM Development Tools' 24 | RUN dnf -y install fedora-packager 25 | RUN dnf -y install sudo git ccache cmake 26 | 27 | # Enable cache system-wide 28 | ENV PATH /usr/lib/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 29 | 30 | # Enable sudo without tty 31 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 32 | 33 | -------------------------------------------------------------------------------- /buildsystem/fedora/fedora-32-aarch64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM fedora:32 2 | MAINTAINER Andrew Bauer 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Install base toolset 8 | RUN dnf -y update fedora-gpg-keys --nogpgcheck 9 | RUN dnf -y group install 'Development Tools' 10 | RUN dnf -y group install 'C Development Tools and Libraries' 11 | RUN dnf -y group install 'RPM Development Tools' 12 | RUN dnf -y install fedora-packager 13 | RUN dnf -y install sudo git ccache cmake 14 | 15 | # Enable cache system-wide 16 | ENV PATH /usr/lib/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 17 | 18 | # Enable sudo without tty 19 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 20 | 21 | -------------------------------------------------------------------------------- /buildsystem/fedora/fedora-33-aarch64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM fedora:33 2 | MAINTAINER Andrew Bauer 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Install base toolset 8 | RUN dnf -y update fedora-gpg-keys --nogpgcheck 9 | RUN dnf -y group install 'Development Tools' 10 | RUN dnf -y group install 'C Development Tools and Libraries' 11 | RUN dnf -y group install 'RPM Development Tools' 12 | RUN dnf -y install fedora-packager 13 | RUN dnf -y install sudo git ccache cmake 14 | 15 | # Enable cache system-wide 16 | ENV PATH /usr/lib/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 17 | 18 | # Enable sudo without tty 19 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 20 | 21 | -------------------------------------------------------------------------------- /buildsystem/fedora/fedora-40/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG ARCH= 2 | FROM ${ARCH}fedora:40 3 | MAINTAINER Oleg Chaplashkin 4 | 5 | # Fix missing locales 6 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 7 | 8 | # Update repositories and installed packages to avoid issues from: 9 | # https://github.com/tarantool/tarantool-qa/issues/60 10 | RUN dnf update -y && \ 11 | # Install base toolset 12 | dnf -y group install \ 13 | 'development-tools' \ 14 | 'c-development' \ 15 | 'rpm-development-tools' && \ 16 | dnf -y install \ 17 | fedora-packager \ 18 | sudo \ 19 | git \ 20 | ccache \ 21 | cmake && \ 22 | # Cleanup DNF metadata and decrease image size 23 | dnf clean all 24 | 25 | # Enable cache system-wide 26 | ENV PATH /usr/lib/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 27 | 28 | # Enable sudo without tty 29 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 30 | -------------------------------------------------------------------------------- /buildsystem/fedora/fedora-41/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG ARCH= 2 | FROM ${ARCH}fedora:41 3 | MAINTAINER Oleg Chaplashkin 4 | 5 | # Fix missing locales 6 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 7 | 8 | # Update repositories and installed packages to avoid issues from: 9 | # https://github.com/tarantool/tarantool-qa/issues/60 10 | RUN dnf update -y && \ 11 | # Install base toolset 12 | dnf -y group install \ 13 | 'development-tools' \ 14 | 'c-development' \ 15 | 'rpm-development-tools' && \ 16 | dnf -y install \ 17 | fedora-packager \ 18 | sudo \ 19 | git \ 20 | ccache \ 21 | cmake && \ 22 | # Cleanup DNF metadata and decrease image size 23 | dnf clean all 24 | 25 | # Enable cache system-wide 26 | ENV PATH /usr/lib/ccache:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin 27 | 28 | # Enable sudo without tty 29 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 30 | -------------------------------------------------------------------------------- /buildsystem/rhel/el-8-aarch64/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM knnniggett/packpack:centos-8-base 2 | MAINTAINER Andrew Bauer 3 | 4 | # - fix missing locales 5 | ENV LC_ALL="C" LANG="en_US.UTF-8" 6 | 7 | # Add the latest version of qemu-aarch64-static to allow running container on amd64 architecture 8 | ADD https://github.com/multiarch/qemu-user-static/releases/latest/download/qemu-aarch64-static /usr/bin/qemu-aarch64-static 9 | 10 | # Apply various fixes 11 | RUN \ 12 | # Fix dnf best candidate failures 13 | echo "module_hotfixes=1" >> /etc/dnf/dnf.conf \ 14 | && echo "best=0" >> /etc/dnf/dnf.conf \ 15 | # Fix missing yum symlink 16 | && ln -sf /usr/bin/dnf /usr/bin/yum \ 17 | # Remove unsupported flag in repo files 18 | && sed -i 's!failovermethod=priority!!' /etc/yum.repos.d/*.repo \ 19 | # Set the execute bit on our qemu binary 20 | && chmod +x /usr/bin/qemu-aarch64-static 21 | 22 | # Enable extra tools and repositories 23 | RUN \ 24 | # Enable extra tools 25 | dnf -y install wget dnf-utils cmake sudo \ 26 | # Install base toolset 27 | && dnf -y group install 'Development Tools' \ 28 | # Enable extra repositories 29 | && dnf -y install epel-release \ 30 | # Fetch and enable the RPMFusion repo 31 | && dnf -y localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm \ 32 | # added PowerTools as suggested at: 33 | # https://fedoraproject.org/wiki/EPEL 34 | && dnf config-manager --set-enabled PowerTools 35 | 36 | # Enable sudo without tty 37 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 38 | -------------------------------------------------------------------------------- /buildsystem/rhel/el-8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rockylinux/rockylinux:8 2 | MAINTAINER Andrew Bauer 3 | 4 | # Fix dnf best candidate failures 5 | RUN echo "module_hotfixes=1" >> /etc/dnf/dnf.conf 6 | RUN echo "best=0" >> /etc/dnf/dnf.conf 7 | 8 | # Enable extra tools 9 | RUN dnf -y install wget dnf-utils 10 | 11 | # Enable extra repositories 12 | RUN dnf -y install epel-release 13 | # added PowerTools as suggested at: 14 | # https://fedoraproject.org/wiki/EPEL 15 | RUN dnf config-manager --set-enabled powertools 16 | 17 | # Repository for building/testing dependencies that are not present in vanilla 18 | # Rocky Linux and PowerTools / EPEL repositories, e.g. some Python 2 packages 19 | # - fix missing locales 20 | ENV LC_ALL="C" LANG="en_US.UTF-8" 21 | # - install the backport repository 22 | RUN curl -s https://packagecloud.io/install/repositories/packpack/backports/script.rpm.sh | bash 23 | 24 | # Install base toolset 25 | RUN dnf -y groupinstall 'Development Tools' 26 | RUN dnf -y install \ 27 | cmake \ 28 | sudo 29 | 30 | # Enable sudo without tty 31 | RUN sed -i.bak -n -e '/^Defaults.*requiretty/ { s/^/# /;};/^%wheel.*ALL$/ { s/^/# / ;} ;/^#.*wheel.*NOPASSWD/ { s/^#[ ]*//;};p' /etc/sudoers 32 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/bionic/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:bionic 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | # Enable extra repositories 14 | RUN apt-get update && apt-get install -y \ 15 | apt-transport-https \ 16 | apt-utils \ 17 | curl \ 18 | wget \ 19 | gnupg \ 20 | ca-certificates \ 21 | software-properties-common 22 | 23 | # Install base toolset 24 | RUN DEBIAN_FRONTEND="noninteractive" apt-get update && apt-get install -y \ 25 | tzdata \ 26 | sudo \ 27 | git \ 28 | build-essential \ 29 | cmake \ 30 | gdb \ 31 | ccache \ 32 | devscripts \ 33 | debhelper \ 34 | cdbs \ 35 | fakeroot \ 36 | lintian \ 37 | equivs \ 38 | rpm \ 39 | alien \ 40 | dh-systemd \ 41 | libdistro-info-perl \ 42 | apache2-dev default-libmysqlclient-dev dh-linktree docutils-doc docutils-common ffmpeg \ 43 | fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 libapr1 \ 44 | libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data libass9 \ 45 | libasyncns0 libavc1394-0 libavcodec-dev libavcodec57 libavdevice-dev \ 46 | libavdevice57 libavfilter-dev libavfilter6 libavformat-dev libavformat57 \ 47 | libavresample-dev libavresample3 libavutil-dev libavutil55 \ 48 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-dev libcaca0 libcairo2 \ 49 | libcdio-cdda2 libcdio-paranoia2 libcdio17 libchromaprint1 libclass-mix-perl \ 50 | libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 51 | libcurl4-gnutls-dev libdata-entropy-perl libdata-float-perl \ 52 | libdata-uuid-perl libdate-manip-perl libdatrie1 libdbd-mysql-perl \ 53 | libdbi-perl libdc1394-22 libdevel-callchecker-perl libdrm-amdgpu1 \ 54 | libdrm-common libdrm-nouveau2 libdrm-radeon1 libdrm2 \ 55 | libdynaloader-functions-perl libedit2 libevent-2.1-6 libexpat1-dev \ 56 | libfftw3-double3 libflac8 libflite1 libfontconfig1 libfreetype6 libfribidi0 \ 57 | libgcrypt20-dev libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgl1 \ 58 | libgl1-mesa-dri libglapi-mesa libglib2.0-bin libglib2.0-data libglib2.0-dev \ 59 | libglib2.0-dev-bin libglvnd0 libglx-mesa0 libglx0 libgme0 libgmp-dev \ 60 | libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev \ 61 | libgnutlsxx28 libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b \ 62 | libhttp-lite-perl libidn11 libidn2-0-dev libidn2-dev libiec61883-0 \ 63 | libjack-jackd2-0 libjbig0 libjpeg-turbo8 libjpeg-turbo8-dev libjpeg8 \ 64 | libjpeg8-dev libjs-jquery libjs-mootools libjs-sphinxdoc libjs-underscore \ 65 | libjwt0 libjwt-dev liblivemedia-dev libusageenvironment3 libbasicusageenvironment1 \ 66 | libldap2-dev libllvm8 libmp3lame0 libmpg123-0 \ 67 | libmysofa0 libmysqlclient-dev libmysqlclient20 libnorm1 libnuma1 libogg0 \ 68 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 69 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 70 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 71 | libpgm-5.2-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 72 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 73 | libpostproc-dev libpostproc54 libpulse0 libpython-stdlib \ 74 | libraw1394-11 librsvg2-2 \ 75 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors4 \ 76 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio6.1 libsodium23 \ 77 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libswresample-dev \ 78 | libswresample2 libswscale-dev libswscale4 libsys-mmap-perl libtasn1-6-dev \ 79 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound2 \ 80 | libusb-1.0-0 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 libva-drm2 \ 81 | libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 libvorbis0a \ 82 | libvorbisenc2 libvorbisfile3 libvpx5 libwavpack1 libwayland-client0 \ 83 | libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 libwrap0 libx11-6 \ 84 | libx11-data libx11-xcb1 libx264-152 libx264-dev libx265-146 libxau6 \ 85 | libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-render0 \ 86 | libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 libxcursor1 \ 87 | libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 libxkbcommon0 \ 88 | libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 libxvidcore4 libxxf86vm1 \ 89 | libzmq5 libzvbi-common libzvbi0 mysql-common net-tools nettle-dev pkg-config \ 90 | python python-alabaster python-babel python-babel-localedata python-certifi \ 91 | python-chardet python-docutils python-idna python-imagesize python-jinja2 \ 92 | python-markupsafe python-minimal python-pkg-resources python-pygments \ 93 | python-requests python-roman python-six python3-sphinx python-typing \ 94 | python-tz python-urllib3 python3-distutils \ 95 | python3-lib2to3 sgml-base shared-mime-info sphinx-common tzdata uuid-dev \ 96 | x11-common xkb-data xml-core zlib1g-dev 97 | 98 | # Enable sudo without password 99 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 100 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/disco/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:disco 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | RUN apt-get update && apt-get install -y \ 14 | apt-transport-https \ 15 | curl \ 16 | wget \ 17 | gnupg \ 18 | ca-certificates 19 | 20 | # Install base toolset 21 | RUN apt-get update && apt-get install -y \ 22 | tzdata \ 23 | sudo \ 24 | git \ 25 | build-essential \ 26 | cmake \ 27 | gdb \ 28 | ccache \ 29 | devscripts \ 30 | debhelper \ 31 | cdbs \ 32 | fakeroot \ 33 | lintian \ 34 | equivs \ 35 | rpm \ 36 | alien \ 37 | dh-systemd \ 38 | libdistro-info-perl \ 39 | apache2-dev bzip2 dh-linktree docutils-common \ 40 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 \ 41 | libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data \ 42 | libass9 libasyncns0 libavc1394-0 libavcodec-dev libavcodec58 libavdevice-dev \ 43 | libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 \ 44 | libswresample-dev libswresample3 libavutil-dev libavutil56 \ 45 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-1.0 libbz2-dev libcaca0 \ 46 | libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio18 libchromaprint1 \ 47 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 48 | libcurl3-gnutls libcurl4-gnutls-dev libdata-entropy-perl \ 49 | libdata-float-perl libdata-uuid-perl libdate-manip-perl libdatrie1 \ 50 | libdbd-mysql-perl libdbi-perl libdc1394-22 libdevel-callchecker-perl \ 51 | libdrm-amdgpu1 libdrm-common libdrm-nouveau2 libdrm-radeon1 \ 52 | libdrm2 libdynaloader-functions-perl libedit2 libevent-2.1-6 libexpat1 \ 53 | libexpat1-dev libfftw3-double3 libflac8 libflite1 libfontconfig1 \ 54 | libfreetype6 libfribidi0 libgcrypt20-dev libgdk-pixbuf2.0-0 \ 55 | libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 \ 56 | libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 \ 57 | libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 \ 58 | libgnutls-openssl27 libgnutls28-dev libgnutls30 libgnutlsxx28 \ 59 | libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b libhttp-lite-perl \ 60 | libidn11 libidn2-0-dev libidn2-dev libiec61883-0 libjack-jackd2-0 libjbig0 \ 61 | libjs-jquery \ 62 | libjs-mootools libjs-sphinxdoc libjs-underscore libldap-2.4-2 libldap-common \ 63 | libldap2-dev libllvm7 libmp3lame0 libmpg123-0 \ 64 | libmysofa0 libmariadb-dev-compat libmariadb3 libnorm1 libnuma1 libogg0 \ 65 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 66 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 67 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 68 | libpgm-5.2-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 69 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 70 | libpostproc-dev libpostproc55 libpulse0 libpython-stdlib \ 71 | libpython2.7-minimal libpython2.7-stdlib libraw1394-11 librsvg2-2 \ 72 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors5 \ 73 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 \ 74 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libssl1.1 \ 75 | libswscale-dev libswscale5 libsys-mmap-perl libtasn1-6-dev \ 76 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound8 \ 77 | libusb-1.0-0 libuuid1 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 \ 78 | libva-drm2 libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 \ 79 | libvorbis0a libvorbisenc2 libvorbisfile3 libvpx5 libwavpack1 \ 80 | libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 \ 81 | libwrap0 libx11-6 libx11-data libx11-xcb1 libx264-155 libx264-dev \ 82 | libx265-165 libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \ 83 | libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 \ 84 | libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 \ 85 | libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 \ 86 | libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mysql-common \ 87 | net-tools nettle-dev pkg-config python python-alabaster python-babel \ 88 | python-babel-localedata python-certifi python-chardet python-docutils \ 89 | python-idna python-imagesize python-jinja2 python-markupsafe python-minimal \ 90 | python-pkg-resources python-pygments python-requests python-roman python-six \ 91 | python-sphinx python-typing python-tz python-urllib3 python2.7 \ 92 | python2.7-minimal python3-distutils python3-lib2to3 sgml-base \ 93 | shared-mime-info sphinx-common tzdata uuid-dev x11-common xkb-data xml-core \ 94 | zlib1g-dev \ 95 | bzip2 libbz2-1.0 libcurl3-gnutls libexpat1 libglib2.0-0 libglib2.0-data \ 96 | libgnutls30 libldap-2.4-2 libpcre3 libssl1.1 shared-mime-info 97 | 98 | # Enable sudo without password 99 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 100 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/eoan/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:eoan 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | RUN apt-get update && apt-get install -y \ 14 | apt-transport-https \ 15 | curl \ 16 | wget \ 17 | gnupg \ 18 | ca-certificates 19 | 20 | # Install base toolset 21 | RUN apt-get update && apt-get install -y \ 22 | sudo \ 23 | git \ 24 | build-essential \ 25 | cmake \ 26 | gdb \ 27 | ccache \ 28 | devscripts \ 29 | debhelper \ 30 | cdbs \ 31 | fakeroot \ 32 | lintian \ 33 | equivs \ 34 | rpm \ 35 | alien \ 36 | dh-systemd \ 37 | libdistro-info-perl \ 38 | apache2-dev bzip2 default-libmysqlclient-dev dh-linktree docutils-common \ 39 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 \ 40 | libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data \ 41 | libass9 libasyncns0 libavc1394-0 libavcodec-dev libavcodec58 libavdevice-dev \ 42 | libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 \ 43 | libswresample-dev libswresample3 libavutil-dev libavutil56 \ 44 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-1.0 libbz2-dev libcaca0 \ 45 | libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio18 libchromaprint1 \ 46 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 47 | libcrystalhd3 libcurl3-gnutls libcurl4-gnutls-dev libdata-entropy-perl \ 48 | libdata-float-perl libdata-uuid-perl libdate-manip-perl libdatrie1 \ 49 | libdbd-mysql-perl libdbi-perl libdc1394-22 libdevel-callchecker-perl \ 50 | libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 \ 51 | libdrm2 libdynaloader-functions-perl libedit2 libevent-2.1-6 libexpat1 \ 52 | libexpat1-dev libfftw3-double3 libflac8 libflite1 libfontconfig1 \ 53 | libfreetype6 libfribidi0 libgcrypt20-dev libgdk-pixbuf2.0-0 \ 54 | libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 \ 55 | libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 \ 56 | libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 \ 57 | libgnutls-openssl27 libgnutls28-dev libgnutls30 libgnutlsxx28 \ 58 | libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b libhttp-lite-perl \ 59 | libidn11 libidn2-0-dev libidn2-dev libiec61883-0 libjack-jackd2-0 libjbig0 \ 60 | libjpeg62-turbo libjpeg62-turbo-dev libjs-jquery \ 61 | libjs-mootools libjs-sphinxdoc libjs-underscore libldap-2.4-2 libldap-common \ 62 | libldap2-dev libllvm7 libmp3lame0 libmp4v2-2 libmp4v2-dev libmpg123-0 \ 63 | libmysofa0 libmariadb-dev-compat libmariadb3 libnorm1 libnuma1 libogg0 \ 64 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 65 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 66 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 67 | libpgm-5.2-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 68 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 69 | libpostproc-dev libpostproc55 libpulse0 libpython-stdlib \ 70 | libpython2.7-minimal libpython2.7-stdlib libraw1394-11 librsvg2-2 \ 71 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors5 \ 72 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 \ 73 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libssl1.1 \ 74 | libswscale-dev libswscale5 libsys-mmap-perl libtasn1-6-dev \ 75 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound8 \ 76 | libusb-1.0-0 libuuid1 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 \ 77 | libva-drm2 libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 \ 78 | libvorbis0a libvorbisenc2 libvorbisfile3 libvpx5 libwavpack1 \ 79 | libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 \ 80 | libwrap0 libx11-6 libx11-data libx11-xcb1 libx264-155 libx264-dev \ 81 | libx265-165 libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \ 82 | libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 \ 83 | libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 \ 84 | libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 \ 85 | libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mysql-common \ 86 | net-tools nettle-dev pkg-config python python-alabaster python-babel \ 87 | python-babel-localedata python-certifi python-chardet python-docutils \ 88 | python-idna python-imagesize python-jinja2 python-markupsafe python-minimal \ 89 | python-pkg-resources python-pygments python-requests python-roman python-six \ 90 | python-sphinx python-typing python-tz python-urllib3 python2.7 \ 91 | python2.7-minimal python3-distutils python3-lib2to3 sgml-base \ 92 | shared-mime-info sphinx-common tzdata uuid-dev x11-common xkb-data xml-core \ 93 | zlib1g-dev \ 94 | bzip2 libbz2-1.0 libcurl3-gnutls libexpat1 libglib2.0-0 libglib2.0-data \ 95 | libgnutls30 libldap-2.4-2 libpcre3 libssl1.1 shared-mime-info 96 | 97 | # Enable sudo without password 98 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 99 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/focal/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:focal 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | RUN apt-get update && apt-get install -y \ 14 | apt-transport-https \ 15 | curl \ 16 | wget \ 17 | gnupg \ 18 | ca-certificates 19 | 20 | RUN apt-get update && apt-get install -y \ 21 | apt-transport-https \ 22 | curl \ 23 | wget \ 24 | gnupg \ 25 | ca-certificates 26 | 27 | # Install base toolset 28 | RUN apt-get update && apt-get install -y \ 29 | sudo \ 30 | git \ 31 | build-essential \ 32 | cmake \ 33 | gdb \ 34 | ccache \ 35 | devscripts \ 36 | debhelper \ 37 | cdbs \ 38 | fakeroot \ 39 | lintian \ 40 | equivs \ 41 | rpm \ 42 | alien \ 43 | dh-systemd \ 44 | libdistro-info-perl \ 45 | apache2-dev bzip2 dh-linktree docutils-common \ 46 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 \ 47 | libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data \ 48 | libass9 libasyncns0 libavc1394-0 libavcodec-dev libavcodec58 libavdevice-dev \ 49 | libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 \ 50 | libswresample-dev libswresample3 libavutil-dev libavutil56 \ 51 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-1.0 libbz2-dev libcaca0 \ 52 | libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio18 libchromaprint1 \ 53 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 54 | libcrystalhd3 libcurl3-gnutls libcurl4-gnutls-dev libdata-entropy-perl \ 55 | libdata-float-perl libdata-uuid-perl libdate-manip-perl libdatrie1 \ 56 | libdbd-mysql-perl libdbi-perl libdc1394-22 libdevel-callchecker-perl \ 57 | libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 \ 58 | libdrm2 libdynaloader-functions-perl libedit2 libexpat1 \ 59 | libexpat1-dev libfftw3-double3 libflac8 libflite1 libfontconfig1 \ 60 | libfreetype6 libfribidi0 libgcrypt20-dev libgdk-pixbuf2.0-0 \ 61 | libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 \ 62 | libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 \ 63 | libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 \ 64 | libgnutls-openssl27 libgnutls28-dev libgnutls30 libgnutlsxx28 \ 65 | libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b libhttp-lite-perl \ 66 | libidn11 libidn2-0-dev libidn2-dev libiec61883-0 libjack-jackd2-0 libjbig0 \ 67 | libjpeg-turbo8 libjpeg-turbo8-dev libjs-jquery \ 68 | libjs-mootools libjs-sphinxdoc libjs-underscore libldap-2.4-2 libldap-common \ 69 | libjwt0 libjwt-dev libbasicusageenvironment1 libusageenvironment3 liblivemedia77 liblivemedia-dev \ 70 | libldap2-dev libllvm7 libmp3lame0 libmpg123-0 \ 71 | libmysofa1 libmariadb-dev-compat libmariadb3 libnorm1 libnuma1 libogg0 \ 72 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 73 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 74 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 75 | libpgm-5.2-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 76 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 77 | libpostproc-dev libpostproc55 libpulse0 libpython2-stdlib \ 78 | libraw1394-11 librsvg2-2 \ 79 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors5 \ 80 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 \ 81 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libssl1.1 \ 82 | libswscale-dev libswscale5 libsys-mmap-perl libtasn1-6-dev \ 83 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound8 \ 84 | libusb-1.0-0 libuuid1 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 \ 85 | libva-drm2 libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 \ 86 | libvorbis0a libvorbisenc2 libvorbisfile3 libvpx6 libwavpack1 \ 87 | libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 \ 88 | libwrap0 libx11-6 libx11-data libx11-xcb1 libx264-155 libx264-dev \ 89 | libx265-179 libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \ 90 | libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 \ 91 | libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 \ 92 | libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 \ 93 | libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mysql-common \ 94 | net-tools nettle-dev pkg-config python python-alabaster python-babel \ 95 | python-babel-localedata python-certifi python-chardet python-docutils \ 96 | python-idna python-imagesize python-jinja2 python-markupsafe \ 97 | python-pkg-resources python-pygments python-roman python-six \ 98 | sphinx-doc python3-sphinx python-typing python-tz \ 99 | python3-distutils python3-lib2to3 sgml-base \ 100 | shared-mime-info sphinx-common tzdata uuid-dev x11-common xkb-data xml-core \ 101 | zlib1g-dev \ 102 | bzip2 libbz2-1.0 libcurl3-gnutls libexpat1 libglib2.0-0 libglib2.0-data \ 103 | libgnutls30 libldap-2.4-2 libpcre3 libssl1.1 shared-mime-info 104 | 105 | # Enable sudo without password 106 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 107 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/groovy/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:groovy 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | RUN apt-get update && apt-get install -y \ 14 | apt-transport-https \ 15 | curl \ 16 | wget \ 17 | gnupg \ 18 | ca-certificates 19 | 20 | RUN echo "deb https://zmrepo.zoneminder.com/debian/master groovy/" >> /etc/apt/sources.list 21 | 22 | RUN wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | apt-key add - 23 | 24 | RUN apt-get update && apt-get install -y \ 25 | apt-transport-https \ 26 | curl \ 27 | wget \ 28 | gnupg \ 29 | ca-certificates 30 | 31 | # Install base toolset 32 | RUN apt-get update && apt-get install -y \ 33 | sudo \ 34 | git \ 35 | build-essential \ 36 | cmake \ 37 | gdb \ 38 | ccache \ 39 | devscripts \ 40 | debhelper \ 41 | cdbs \ 42 | fakeroot \ 43 | lintian \ 44 | equivs \ 45 | rpm \ 46 | alien \ 47 | dh-systemd \ 48 | libdistro-info-perl \ 49 | apache2-dev bzip2 dh-linktree docutils-common \ 50 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 \ 51 | libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data \ 52 | libass9 libasyncns0 libavc1394-0 libavcodec-dev libavcodec58 libavdevice-dev \ 53 | libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 \ 54 | libswresample-dev libswresample3 libavutil-dev libavutil56 \ 55 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-1.0 libbz2-dev libcaca0 \ 56 | libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1 \ 57 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 58 | libcrystalhd3 libcurl3-gnutls libcurl4-gnutls-dev libdata-entropy-perl \ 59 | libdata-float-perl libdata-uuid-perl libdate-manip-perl libdatrie1 \ 60 | libdbd-mysql-perl libdbi-perl libdc1394-25 libdevel-callchecker-perl \ 61 | libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 \ 62 | libdrm2 libdynaloader-functions-perl libedit2 libexpat1 \ 63 | libexpat1-dev libfftw3-double3 libflac8 libflite1 libfontconfig1 \ 64 | libfreetype6 libfribidi0 libgcrypt20-dev libgdk-pixbuf2.0-0 \ 65 | libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 \ 66 | libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 \ 67 | libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 \ 68 | libgnutls-openssl27 libgnutls28-dev libgnutls30 libgnutlsxx28 \ 69 | libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b libhttp-lite-perl \ 70 | libidn11 libidn2-0-dev libidn2-dev libiec61883-0 libjack-jackd2-0 libjbig0 \ 71 | libjpeg-turbo8 libjpeg-turbo8-dev \ 72 | libjs-mootools libjs-sphinxdoc libjs-underscore libldap-2.4-2 libldap-common \ 73 | libjwt0 libjwt-dev libbasicusageenvironment1 libusageenvironment3 liblivemedia77 liblivemedia-dev \ 74 | libldap2-dev libllvm11 libmp3lame0 libmpg123-0 \ 75 | libmysofa1 libmariadb-dev-compat libmariadb3 libnorm1 libnuma1 libogg0 \ 76 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 77 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 78 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 79 | libpgm-5.2-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 80 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 81 | libpostproc-dev libpostproc55 libpulse0 libpython2-stdlib \ 82 | libraw1394-11 librsvg2-2 \ 83 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors5 \ 84 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 \ 85 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libssl1.1 \ 86 | libswscale-dev libswscale5 libsys-mmap-perl libtasn1-6-dev \ 87 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound8 \ 88 | libusb-1.0-0 libuuid1 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 \ 89 | libva-drm2 libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 \ 90 | libvorbis0a libvorbisenc2 libvorbisfile3 libvpx6 libwavpack1 \ 91 | libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 \ 92 | libwrap0 libx11-6 libx11-data libx11-xcb1 \ 93 | libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \ 94 | libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 \ 95 | libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 \ 96 | libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 \ 97 | libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mysql-common \ 98 | net-tools nettle-dev pkg-config python3 python3-alabaster python3-babel \ 99 | python-babel-localedata python3-certifi python3-chardet python3-docutils \ 100 | python3-idna python3-imagesize python3-jinja2 python3-markupsafe \ 101 | python-pkg-resources python3-pygments python3-roman python3-six \ 102 | sphinx-doc python3-sphinx python3-tz \ 103 | python3-distutils python3-lib2to3 sgml-base \ 104 | shared-mime-info sphinx-common tzdata uuid-dev x11-common xkb-data xml-core \ 105 | zlib1g-dev \ 106 | bzip2 libbz2-1.0 libcurl3-gnutls libexpat1 libglib2.0-0 libglib2.0-data \ 107 | libgnutls30 libldap-2.4-2 libpcre3 libssl1.1 shared-mime-info 108 | 109 | # Enable sudo without password 110 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 111 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/hirsute/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:hirsute 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | RUN apt-get install --reinstall -y gpgv 14 | 15 | RUN apt-get update 16 | 17 | RUN apt-get install -y \ 18 | apt-transport-https \ 19 | curl \ 20 | wget \ 21 | ca-certificates 22 | 23 | #RUN echo "deb https://zmrepo.zoneminder.com/debian/master groovy/" >> /etc/apt/sources.list 24 | 25 | #RUN wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | apt-key add - 26 | 27 | # Install base toolset 28 | RUN apt-get update && apt-get install -y \ 29 | sudo \ 30 | git \ 31 | build-essential \ 32 | cmake \ 33 | gdb \ 34 | ccache \ 35 | devscripts \ 36 | debhelper \ 37 | cdbs \ 38 | fakeroot \ 39 | lintian \ 40 | equivs \ 41 | rpm \ 42 | alien \ 43 | dh-systemd \ 44 | libdistro-info-perl \ 45 | apache2-dev bzip2 dh-linktree docutils-common \ 46 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 \ 47 | libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data \ 48 | libass9 libasyncns0 libavc1394-0 libavcodec-dev libavcodec58 libavdevice-dev \ 49 | libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 \ 50 | libswresample-dev libswresample3 libavutil-dev libavutil56 \ 51 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-1.0 libbz2-dev libcaca0 \ 52 | libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1 \ 53 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 54 | libcrystalhd3 libcurl3-gnutls libcurl4-gnutls-dev libdata-entropy-perl \ 55 | libdata-float-perl libdata-uuid-perl libdate-manip-perl libdatrie1 \ 56 | libdbd-mysql-perl libdbi-perl libdc1394-25 libdevel-callchecker-perl \ 57 | libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm-nouveau2 libdrm-radeon1 \ 58 | libdrm2 libdynaloader-functions-perl libedit2 libexpat1 \ 59 | libexpat1-dev libfftw3-double3 libflac8 libflite1 libfontconfig1 \ 60 | libfreetype6 libfribidi0 libgcrypt20-dev libgdk-pixbuf2.0-0 \ 61 | libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 \ 62 | libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 \ 63 | libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 \ 64 | libgnutls-openssl27 libgnutls28-dev libgnutls30 libgnutlsxx28 \ 65 | libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b libhttp-lite-perl \ 66 | libidn11 libidn2-0-dev libidn2-dev libiec61883-0 libjack-jackd2-0 libjbig0 \ 67 | libjpeg-turbo8 libjpeg-turbo8-dev \ 68 | libjs-mootools libjs-sphinxdoc libjs-underscore libldap-2.4-2 libldap-common \ 69 | libjwt0 libjwt-dev libbasicusageenvironment1 libusageenvironment3 liblivemedia77 liblivemedia-dev \ 70 | libldap2-dev libllvm11 libmp3lame0 libmpg123-0 \ 71 | libmysofa1 libmariadb-dev-compat libmariadb3 libnorm1 libnuma1 libogg0 \ 72 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 73 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 74 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 75 | libpgm-5.2-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 76 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 77 | libpostproc-dev libpostproc55 libpulse0 libpython2-stdlib \ 78 | libraw1394-11 librsvg2-2 \ 79 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors5 \ 80 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 \ 81 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libssl1.1 \ 82 | libswscale-dev libswscale5 libsys-mmap-perl libtasn1-6-dev \ 83 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound8 \ 84 | libusb-1.0-0 libuuid1 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 \ 85 | libva-drm2 libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 \ 86 | libvorbis0a libvorbisenc2 libvorbisfile3 libvpx6 libwavpack1 \ 87 | libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 \ 88 | libwrap0 libx11-6 libx11-data libx11-xcb1 \ 89 | libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \ 90 | libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 \ 91 | libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 \ 92 | libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 \ 93 | libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mysql-common \ 94 | net-tools nettle-dev pkg-config python3 python3-alabaster python3-babel \ 95 | python-babel-localedata python3-certifi python3-chardet python3-docutils \ 96 | python3-idna python3-imagesize python3-jinja2 python3-markupsafe \ 97 | python-pkg-resources python3-pygments python3-roman python3-six \ 98 | sphinx-doc python3-sphinx python3-tz \ 99 | python3-distutils python3-lib2to3 sgml-base \ 100 | shared-mime-info sphinx-common tzdata uuid-dev x11-common xkb-data xml-core \ 101 | zlib1g-dev \ 102 | bzip2 libbz2-1.0 libcurl3-gnutls libexpat1 libglib2.0-0 libglib2.0-data \ 103 | libgnutls30 libldap-2.4-2 libpcre3 libssl1.1 shared-mime-info 104 | 105 | # Enable sudo without password 106 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 107 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/impish/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:impish 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | RUN apt-get install --reinstall -y gpgv 14 | 15 | RUN apt-get update 16 | 17 | RUN apt-get install -y \ 18 | apt-transport-https \ 19 | curl \ 20 | wget \ 21 | ca-certificates 22 | 23 | # Install base toolset 24 | RUN apt-get update && apt-get install -y \ 25 | sudo \ 26 | git \ 27 | build-essential \ 28 | cmake \ 29 | gdb \ 30 | ccache \ 31 | devscripts \ 32 | debhelper \ 33 | cdbs \ 34 | fakeroot \ 35 | lintian \ 36 | equivs \ 37 | rpm \ 38 | alien \ 39 | libdistro-info-perl \ 40 | apache2-dev bzip2 dh-linktree docutils-common \ 41 | ffmpeg fontconfig fontconfig-config fonts-dejavu-core gir1.2-polkit-1.0 \ 42 | libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 libasound2-data \ 43 | libass9 libasyncns0 libavc1394-0 libavcodec-dev libavcodec58 libavdevice-dev \ 44 | libavdevice58 libavfilter-dev libavfilter7 libavformat-dev libavformat58 \ 45 | libswresample-dev libswresample3 libavutil-dev libavutil56 \ 46 | libb-hooks-op-check-perl libbluray2 libbs2b0 libbz2-1.0 libbz2-dev libcaca0 \ 47 | libcairo2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1 \ 48 | libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 49 | libcurl3-gnutls libcurl4-gnutls-dev libdata-entropy-perl \ 50 | libdata-float-perl libdata-uuid-perl libdate-manip-perl libdatrie1 \ 51 | libdbd-mysql-perl libdbi-perl libdc1394-25 libdevel-callchecker-perl \ 52 | libdrm-common \ 53 | libdrm2 libdynaloader-functions-perl libedit2 libexpat1 \ 54 | libexpat1-dev libfftw3-double3 libflac8 libflite1 libfontconfig1 \ 55 | libfreetype6 libfribidi0 libgcrypt20-dev libgdk-pixbuf2.0-0 \ 56 | libgdk-pixbuf2.0-common libgl1 libgl1-mesa-dri libglapi-mesa libglib2.0-0 \ 57 | libglib2.0-bin libglib2.0-data libglib2.0-dev libglib2.0-dev-bin libglvnd0 \ 58 | libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 \ 59 | libgnutls-openssl27 libgnutls28-dev libgnutls30 libgnutlsxx28 \ 60 | libgpg-error-dev libgraphite2-3 libgsm1 libharfbuzz0b libhttp-lite-perl \ 61 | libidn11 libidn2-0-dev libidn2-dev libiec61883-0 libjack-jackd2-0 libjbig0 \ 62 | libjpeg-turbo8 libjpeg-turbo8-dev \ 63 | libjs-mootools libjs-sphinxdoc libjs-underscore libldap-2.5-0 libldap-common \ 64 | libjwt0 libjwt-dev \ 65 | libldap2-dev libllvm11 libmp3lame0 libmpg123-0 \ 66 | libmysofa1 libmariadb-dev-compat libmariadb3 libnorm1 libnuma1 libogg0 \ 67 | libopenal-data libopenal1 libopenjp2-7 libopenmpt0 libopus0 libp11-kit-dev \ 68 | libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 libparams-classify-perl \ 69 | libpciaccess0 libpcre16-3 libpcre3-dev libpcre32-3 libpcrecpp0v5 \ 70 | libpgm-5.3-0 libphp-serialization-perl libpixman-1-0 libpng16-16 \ 71 | libpolkit-agent-1-0 libpolkit-gobject-1-0 libpolkit-gobject-1-dev \ 72 | libpostproc-dev libpostproc55 libpulse0 libpython2-stdlib \ 73 | libraw1394-11 librsvg2-2 \ 74 | librubberband2 libsamplerate0 libsctp-dev libsctp1 libsdl2-2.0-0 libsensors5 \ 75 | libshine3 libslang2 libsnappy1v5 libsndfile1 libsndio7.0 libsodium23 \ 76 | libsoxr0 libspeex1 libssh-gcrypt-4 libssl-dev libssl1.1 \ 77 | libswscale-dev libswscale5 libsys-mmap-perl libtasn1-6-dev \ 78 | libthai-data libthai0 libtheora0 libtiff5 libtwolame0 libunbound8 \ 79 | libusb-1.0-0 libuuid1 libv4l-0 libv4l-dev libv4l2rds0 libv4lconvert0 \ 80 | libva-drm2 libva-x11-2 libva2 libvdpau1 libvlc-dev libvlc5 libvlccore9 \ 81 | libvorbis0a libvorbisenc2 libvorbisfile3 libvpx6 libwavpack1 \ 82 | libwayland-client0 libwayland-cursor0 libwayland-egl1 libwebp6 libwebpmux3 \ 83 | libwrap0 libx11-6 libx11-data libx11-xcb1 \ 84 | libxau6 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0 libxcb-present0 \ 85 | libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxcb1 \ 86 | libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 libxi6 libxinerama1 \ 87 | libxkbcommon0 libxrandr2 libxrender1 libxshmfence1 libxss1 libxv1 \ 88 | libxvidcore4 libxxf86vm1 libzmq5 libzvbi-common libzvbi0 mysql-common \ 89 | net-tools nettle-dev pkg-config python3 python3-alabaster python3-babel \ 90 | python-babel-localedata python3-certifi python3-chardet python3-docutils \ 91 | python3-idna python3-imagesize python3-jinja2 python3-markupsafe \ 92 | python-pkg-resources python3-pygments python3-roman python3-six \ 93 | sphinx-doc python3-sphinx python3-tz \ 94 | python3-distutils python3-lib2to3 sgml-base \ 95 | shared-mime-info sphinx-common tzdata uuid-dev x11-common xkb-data xml-core \ 96 | zlib1g-dev \ 97 | bzip2 libbz2-1.0 libcurl3-gnutls libexpat1 libglib2.0-0 libglib2.0-data \ 98 | libgnutls30 libssl1.1 shared-mime-info 99 | 100 | # Enable sudo without password 101 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 102 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/trusty/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:trusty 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | # Enable extra repositories 14 | RUN apt-get update && apt-get install -y --force-yes \ 15 | apt-transport-https \ 16 | curl \ 17 | wget \ 18 | gnupg \ 19 | ca-certificates \ 20 | software-properties-common python-software-properties 21 | #ADD backports.list /etc/apt/sources.list.d/ 22 | #ADD preferences /etc/apt/preferences.d/ 23 | RUN curl -s https://packagecloud.io/install/repositories/computology/apt-backport/script.deb.sh | bash 24 | RUN apt-get install -y --force-yes apt=1.2.10 25 | RUN curl -s https://packagecloud.io/install/repositories/packpack/backports/script.deb.sh | bash 26 | 27 | # Install base toolset 28 | RUN apt-get update && apt-get install -y --force-yes \ 29 | sudo \ 30 | git \ 31 | build-essential \ 32 | cmake \ 33 | gdb \ 34 | ccache \ 35 | devscripts \ 36 | debhelper \ 37 | cdbs \ 38 | fakeroot \ 39 | lintian \ 40 | equivs \ 41 | rpm \ 42 | alien \ 43 | dh-systemd 44 | 45 | RUN apt-get update && apt-get install -y --force-yes \ 46 | libdistro-info-perl apache2-dev comerr-dev dh-linktree docutils-common gir1.2-polkit-1.0 \ 47 | krb5-multidev libapr1 libapr1-dev libaprutil1 libaprutil1-dev libasound2 \ 48 | libasound2-data libasyncns0 libavcodec-dev libavcodec54 libavdevice-dev \ 49 | libavdevice53 libavformat-dev libavformat54 libavresample-dev libavresample1 \ 50 | libavutil-dev libavutil52 libbz2-dev libcdio-cdda1 libcdio-paranoia1 \ 51 | libcdio13 libclass-mix-perl libcrypt-eksblowfish-perl libcrypt-rijndael-perl \ 52 | libcurl4-gnutls-dev libdata-entropy-perl libdata-float-perl \ 53 | libdata-uuid-perl libdate-manip-perl libdbd-mysql-perl libdbi-perl \ 54 | libdc1394-22 libelfg0 libexpat1-dev libflac8 libgcrypt11-dev libglib2.0-bin \ 55 | libglib2.0-data libglib2.0-dev libgnutls-dev libgnutlsxx27 libgpg-error-dev \ 56 | libgsm1 libgssrpc4 libhttp-lite-perl libidn11-dev libjack-jackd2-0 \ 57 | libjpeg-turbo8 libjpeg-turbo8-dev libjpeg8 libjpeg8-dev libjs-jquery \ 58 | libjs-mootools libjs-sphinxdoc libjs-underscore libkadm5clnt-mit9 \ 59 | libkadm5srv-mit9 libkdb5-7 libkrb5-dev libldap2-dev libmp3lame0 libmp4v2-2 \ 60 | libmp4v2-dev libmysqlclient-dev libmysqlclient18 libogg0 libopenjpeg2 \ 61 | libopus0 liborc-0.4-0 libp11-kit-dev libparams-classify-perl libpcre3-dev \ 62 | libpcrecpp0 libphp-serialization-perl libpolkit-agent-1-0 \ 63 | libpolkit-gobject-1-0 libpolkit-gobject-1-dev libpq-dev libpq5 \ 64 | libproxy-tools libproxy1 libpulse0 libraw1394-11 librtmp-dev libsamplerate0 \ 65 | libschroedinger-1.0-0 libsctp-dev libsctp1 libsndfile1 libspeex1 \ 66 | libsqlite3-dev libssl-dev libswscale-dev libswscale2 libsys-mmap-perl \ 67 | libsystemd-login0 libtasn1-6-dev libtheora0 libusb-1.0-0 libv4l-0 libv4l-dev \ 68 | libv4l2rds0 libv4lconvert0 libva1 libvlc-dev libvlc5 libvlccore7 libvorbis0a \ 69 | libvorbisenc2 libvpx1 libwrap0 libx11-6 libx11-data libx264-142 libx264-dev \ 70 | libxau6 libxcb1 libxdmcp6 libxext6 libxfixes3 libxvidcore4 mysql-common \ 71 | pkg-config python-docutils python-jinja2 python-markupsafe python-pygments \ 72 | python-roman python-sphinx sgml-base sphinx-common uuid-dev vlc-data \ 73 | xml-core zlib1g-dev 74 | 75 | # Enable sudo without password 76 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 77 | -------------------------------------------------------------------------------- /buildsystem/ubuntu/xenial/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | MAINTAINER Isaac Connor 3 | 4 | # Fix missing locales 5 | ENV LC_ALL="C.UTF-8" LANG="C.UTF-8" 6 | 7 | # Skip interactive post-install scripts 8 | ENV DEBIAN_FRONTEND=noninteractive 9 | 10 | # Don't install recommends 11 | RUN echo 'apt::install-recommends "false";' > /etc/apt/apt.conf.d/00recommends 12 | 13 | # Enable extra repositories 14 | RUN apt-get update && apt-get install -y --force-yes \ 15 | apt-transport-https \ 16 | curl \ 17 | wget \ 18 | gnupg \ 19 | ca-certificates \ 20 | software-properties-common python-software-properties 21 | #ADD backports.list /etc/apt/sources.list.d/ 22 | #ADD preferences /etc/apt/preferences.d/ 23 | #RUN curl -s https://packagecloud.io/install/repositories/packpack/backports/script.deb.sh | bash 24 | 25 | # Install base toolset 26 | RUN apt-get update && apt-get install -y --force-yes \ 27 | sudo \ 28 | git \ 29 | build-essential \ 30 | cmake \ 31 | gdb \ 32 | ccache \ 33 | devscripts \ 34 | debhelper \ 35 | cdbs \ 36 | fakeroot \ 37 | lintian \ 38 | equivs \ 39 | rpm \ 40 | alien \ 41 | dh-systemd \ 42 | libdistro-info-perl 43 | 44 | # Enable sudo without password 45 | RUN echo '%adm ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers 46 | -------------------------------------------------------------------------------- /buildsystem/zmrepo-buildhost/README.md: -------------------------------------------------------------------------------- 1 | ## ZMRepo Remote Buildhost Configuration 2 | 3 | The instructions and files contained in this folder allow any third party to contribute builds to ZMRepo that otherwise would not be available. 4 | 5 | OPERATION 6 | --------- 7 | 8 | The synczmrepo service manages the shell script with the same name. The shell script will run continuously, checking github once a minute for new changes. When a new commit is detected, the script will run the desired build(s) then rysnc them to zmrepo. Once sent to zmrepo, the packages will be available to the public momentarily. 9 | 10 | PREREQUISITES 11 | ------------- 12 | 13 | Before a new machine can be added as a build host, the following must be done first: 14 | - [Contact the Development Team](https://github.com/ZoneMinder/zoneminder#contacting-the-development-team) and let us know the desired Operating System, Distribution, and Architecture e.g. CentOS 8 on aarch64. 15 | - Docker must be installed and working, using a non-root user account 16 | - A tagged image must exist in any dockerhub repo, named with this format: OS-Distro-Arch. Arch is only required for non-AMD64 builds. See the [packpack dockerhub repo](https://hub.docker.com/r/packpack/packpack/tags) for an example. 17 | - The tagged image must be verified to work with packpack. See [these instructions](https://zoneminder.readthedocs.io/en/stable/installationguide/packpack.html). 18 | - Send us an rsa key of the machine in question 19 | 20 | INSTALLATION STEPS 21 | ------------------ 22 | These steps assume you have cloned [zmdockerfliles](https://github.com/ZoneMinder/zmdockerfiles) to your local drive and are relative to the folder `buildsystem/zmrepo-buildhost`. 23 | 24 | **Step 1:** Open `synczmrepo.sh` with your favorite text editor: 25 | 26 | - Set the paths for HEAD and GIT_HOME to something your user account can write to. 27 | - All the commands used and their paths are shown at the top of the script. Verify these commands exist on your system and the paths are correct. For example, you may need to install `jq`. 28 | - Scroll down to the portion of the script labelled "STEP 2". Add, remove, or edit the lines that start each packpack build to suite. 29 | 30 | **Step 2:** Copy `synczmrepo.sh` to your local bin folder and make it executable 31 | 32 | sudo cp synczmrepo.sh /usr/local/bin/ 33 | sudo chmod +x /usr/local/bin/synczmrepo.sh 34 | 35 | **Step 3:** Open `synczmrepo.service` with your favorite text editor and change the `User=youraccount` line to match the name of your user account. 36 | 37 | **Step 4:** Copy `synczmrepo.service` to your local systemd service folder 38 | 39 | sudo cp synczmrepo.service /etc/systemd/system/ 40 | 41 | **Step 5:** Enable the synczmrepo service to start automatically then start the service. 42 | 43 | sudo systemctl enable synczmrepo.service 44 | sudo systemctl start synczmrepo.service 45 | 46 | **Step 6:** Verify the service is running. 47 | 48 | systemctl status synczmrepo.service 49 | 50 | **Step 7:** Optionally monitor the progress of the service. 51 | 52 | journalctl -u synczmrepo -f 53 | -------------------------------------------------------------------------------- /buildsystem/zmrepo-buildhost/synczmrepo.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=ZoneMinder ZMRepo Synchronization Service 3 | Requires=docker.service 4 | After=network.target docker.service 5 | 6 | [Service] 7 | Type=simple 8 | Restart=always 9 | ExecStart=/bin/bash /usr/local/bin/synczmrepo.sh 10 | User=youraccount 11 | 12 | [Install] 13 | WantedBy=multi-user.target 14 | -------------------------------------------------------------------------------- /buildsystem/zmrepo-buildhost/synczmrepo.sh: -------------------------------------------------------------------------------- 1 | #~/bin/bash 2 | ################################################################################ 3 | # Date of last revision: 12/29/19 4 | # 5 | # This script: 6 | # - retrieves zoneminder source from github 7 | # - builds arm packages using packpack 8 | # - rsync results to zmrepo.zoneminder.com 9 | # 10 | ################################################################################ 11 | 12 | # Arbitrary location to save zoneminder git HEAD 13 | HEAD="/home/youraccount/HEAD" 14 | 15 | # Parent folder to save ZoneMinder source from github 16 | GIT_HOME="/home/youraccount/git" 17 | 18 | # Enter your personal Git token 19 | # See: https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line 20 | GIT_TOKEN="abcdefghijklmnopqrstuvwxyz0123456789" 21 | 22 | # Recommend setting this to the number of real cpu cores, not threads 23 | NUM_CPUS=4 24 | 25 | MKDIR="/bin/mkdir" 26 | RSYNC="/usr/bin/rsync" 27 | CP="/bin/cp" 28 | FIND="/usr/bin/find" 29 | GIT="/usr/bin/git" 30 | RM="/bin/rm" 31 | LS="/bin/ls" 32 | CURL="/usr/bin/curl" 33 | CAT="/bin/cat" 34 | JQ="/usr/bin/jq" 35 | TOUCH="/usr/bin/touch" 36 | 37 | # Check to see if this script has access to all the commands it needs 38 | for CMD in set echo $MKDIR $RSYNC $CP $FIND $GIT $RM $LS $CURL $CAT $JQ $TOUCH; do 39 | type $CMD &> /dev/null 40 | 41 | if [ $? -ne 0 ]; then 42 | echo 43 | echo "ERROR: The script cannot find the required command \"${CMD}\"." 44 | echo 45 | exit 1 46 | fi 47 | done 48 | 49 | ############### 50 | # SUBROUTINES # 51 | ############### 52 | 53 | # 54 | # subroutine to pull lastest html source from github 55 | # 56 | 57 | git_update () { 58 | GIT_ZONEMINDER="$GIT_HOME/zoneminder" 59 | 60 | if [ -d "$GIT_ZONEMINDER" ]; then 61 | cd "$GIT_ZONEMINDER" 62 | $GIT checkout master 63 | $GIT pull origin master 64 | else 65 | $MKDIR -p "$GIT_HOME" 66 | cd "$GIT_HOME" 67 | $GIT clone https://github.com/ZoneMinder/zoneminder 68 | cd zoneminder 69 | fi 70 | 71 | } 72 | 73 | # 74 | # subroutine to run packpack then rsync the results 75 | # 76 | 77 | start_packpack () { 78 | 79 | $RM -rf ./build 80 | 81 | ./utils/packpack/startpackpack.sh 82 | 83 | if [ "$?" -eq 0 ]; then 84 | echo 85 | echo "SUCCESS: ${OS} ${DIST} build completed." 86 | echo "Transferring packages to zmrepo..." 87 | echo 88 | rsync_xfer 89 | else 90 | echo 91 | echo "ERROR: ${OS} ${DIST} build failed." 92 | echo 93 | ((build_error++)) 94 | fi 95 | } 96 | 97 | # 98 | # subroutine to rsync files to zmrepo 99 | # 100 | 101 | rsync_xfer () { 102 | 103 | if [ "${OS}" == "debian" ] || [ "${OS}" == "ubuntu" ] || [ "${OS}" == "raspbian" ]; then 104 | targetfolder="debian/master/mini-dinstall/incoming" 105 | else 106 | targetfolder="travis" 107 | fi 108 | 109 | $RSYNC -l --ignore-missing-args --exclude 'external-repo.noarch.rpm' build/*.{rpm,deb,dsc,tar.xz,buildinfo,changes} zmrepo@zmrepo.zoneminder.com:${targetfolder}/ 2>&1 110 | 111 | if [ "$?" -eq 0 ]; then 112 | echo 113 | echo "SUCCESS: Packages transferred successfully." 114 | echo 115 | else 116 | echo 117 | echo "ERROR: Attempt to rsync to zmrepo.zoneminder.com failed!" 118 | echo 119 | ((rsync_error++)) 120 | fi 121 | 122 | } 123 | 124 | ################ 125 | # MAIN PROGRAM # 126 | ################ 127 | 128 | # Verify the provided github token is good 129 | result=$(${CURL} -s -H "Authorization: token ${GIT_TOKEN}" https://api.github.com/ | ${JQ} -r ".message") 130 | if [ "$result" == "Bad credentials" ]; then 131 | echo 132 | echo "FATAL: Github token appears to be invalid." 133 | echo 134 | exit 99 135 | fi 136 | 137 | # pre-loop init 138 | build_error=0 139 | rsync_error=0 140 | shopt -s nullglob 141 | 142 | echo 143 | echo "Waiting for new changes to the ZoneMinder github repo..." 144 | echo 145 | 146 | while true; do 147 | 148 | if [ ! -f "${HEAD}" ]; then 149 | $TOUCH "${HEAD}" 150 | fi 151 | 152 | local_head=$(${CAT} ${HEAD}) 153 | remote_head=$(${CURL} -H "Authorization: token ${GIT_TOKEN}" -s 'https://api.github.com/repos/ZoneMinder/zoneminder/git/refs/heads/master' | ${JQ} -r '.object.sha') 154 | 155 | if [ "${local_head}" != "${remote_head}" ] && [ "${remote_head}" != "null" ]; then 156 | 157 | ## STEP 1 - Pull latest ZoneMinder changes from github 158 | git_update 159 | 160 | ## STEP 2 - Start PackPack builds, one at a time 161 | 162 | SMPFLAGS=-j${NUM_CPUS} OS=fedora DIST=30 DOCKER_REPO=knnniggett/packpack ARCH=armhf start_packpack 163 | 164 | SMPFLAGS=-j${NUM_CPUS} OS=fedora DIST=31 DOCKER_REPO=knnniggett/packpack ARCH=armhf start_packpack 165 | 166 | SMPFLAGS=-j${NUM_CPUS} OS=ubuntu DIST=xenial DOCKER_REPO=knnniggett/packpack ARCH=armhf start_packpack 167 | 168 | SMPFLAGS=-j${NUM_CPUS} OS=ubuntu DIST=bionic DOCKER_REPO=knnniggett/packpack ARCH=armhf start_packpack 169 | 170 | ## STEP 3 - Report build summary 171 | if [ $build_error -eq 0 ] && [ $rsync_error -eq 0 ]; then 172 | echo 173 | echo "SUCCESS: All builds reported completion." 174 | echo 175 | else 176 | if [ $build_error -gt 0 ]; then 177 | echo 178 | echo "ERROR: ${build_error} builds failed!" 179 | echo 180 | build_error=0 181 | fi 182 | if [ $rsync_error -gt 0 ]; then 183 | echo 184 | echo "ERROR: ${rsync_error} rsync transfers failed!" 185 | echo 186 | rsync_error=0 187 | fi 188 | fi 189 | 190 | # Update HEAD with the latest git commit hash 191 | echo "${remote_head}" > "${HEAD}" 192 | echo 193 | echo "FINISHED: Waiting for new changes to the ZoneMinder github repo..." 194 | echo 195 | 196 | elif [ "${remote_head}" == "null" ]; then 197 | echo 198 | echo "ERROR: Failed to retrive latest zoneminder commit hash from github." 199 | echo "Check Internet conectivity." 200 | echo 201 | fi 202 | 203 | sleep 1m 204 | done 205 | 206 | -------------------------------------------------------------------------------- /development/README.md: -------------------------------------------------------------------------------- 1 | # ZoneMinder Development Dockerfiles 2 | This folder contains Docker files used for running the latest code from the ZoneMinder master branch. 3 | These are not intended for production. See the [release](https://github.com/ZoneMinder/zmdockerfiles/tree/master/release) folder if you are looking to run ZoneMinder inside Docker for production. 4 | 5 | Contributions are welcome, but please follow these simple guidelines: 6 | 7 | - Only one Dockerfile per distro 8 | - Keep each Dockerfile sorted by distro 9 | - Use our [entrypoint script](https://github.com/ZoneMinder/zmdockerfiles/blob/master/utils/entrypoint.sh) as the entrypoint in your Dockerfile. It is intended to work with most Linux distros and will take care of starting mysql, apache, then zoneminder. 10 | - Each Dockerfile should be self sufficient. It should grab the ZoneMinder project, and any other other requried files, from github or other online resource, rather than expect files to pre-exist on the filesystem. 11 | 12 | -------------------------------------------------------------------------------- /development/ubuntu/xenial/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:xenial 2 | MAINTAINER Markos Vakondios Riley Schuit 3 | 4 | # Resynchronize the package index files 5 | RUN apt-get update \ 6 | && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 7 | apache2 \ 8 | build-essential \ 9 | cmake \ 10 | dh-autoreconf \ 11 | dpatch \ 12 | git \ 13 | libapache2-mod-php \ 14 | libarchive-zip-perl \ 15 | libavcodec-dev \ 16 | libavdevice-dev \ 17 | libavfilter-dev \ 18 | libavformat-dev \ 19 | libavresample-dev \ 20 | libav-tools \ 21 | libavutil-dev \ 22 | libbz2-dev \ 23 | libcurl4-gnutls-dev \ 24 | libdate-manip-perl \ 25 | libdbd-mysql-perl \ 26 | libdbi-perl \ 27 | libdevice-serialport-perl \ 28 | libgcrypt-dev \ 29 | libgnutls-openssl-dev \ 30 | libjpeg-turbo8 \ 31 | libjpeg-turbo8-dev \ 32 | libmime-lite-perl \ 33 | libmime-perl \ 34 | libmp4v2-dev \ 35 | libmysqlclient-dev \ 36 | libnet-sftp-foreign-perl \ 37 | libnetpbm10-dev \ 38 | libpcre3 \ 39 | libpcre3-dev \ 40 | libpolkit-gobject-1-dev \ 41 | libpostproc-dev \ 42 | libssl-dev \ 43 | libswscale-dev \ 44 | libsys-cpu-perl \ 45 | libsys-meminfo-perl \ 46 | libsys-mmap-perl \ 47 | libtheora-dev \ 48 | libtool \ 49 | libv4l-dev \ 50 | libvlc5 \ 51 | libvlccore8 \ 52 | libvlccore-dev \ 53 | libvlc-dev \ 54 | libvorbis-dev \ 55 | libvpx-dev \ 56 | libwww-perl \ 57 | libjson-any-perl \ 58 | libjson-maybexs-perl \ 59 | libnumber-bytes-human-perl \ 60 | libsoap-wsdl-perl \ 61 | libio-socket-multicast-perl \ 62 | libphp-serialization-perl \ 63 | libimage-info-perl \ 64 | liburi-encode-perl \ 65 | libdata-dump-perl \ 66 | libclass-std-fast-perl \ 67 | libdigest-sha-perl \ 68 | libdata-uuid-perl \ 69 | libfile-slurp-perl \ 70 | libcrypt-eksblowfish-perl \ 71 | libdata-entropy-perl \ 72 | perl-modules \ 73 | libx264-dev \ 74 | mysql-client \ 75 | mysql-server \ 76 | php \ 77 | php-cli \ 78 | php-gd \ 79 | php-mysql \ 80 | ssmtp \ 81 | software-properties-common \ 82 | vlc-data \ 83 | yasm \ 84 | zip \ 85 | && add-apt-repository -y ppa:iconnor/zoneminder \ 86 | && apt-get update \ 87 | && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ 88 | php-apcu-bc \ 89 | && rm -rf /var/lib/apt/lists/* 90 | 91 | # Get the latest master branch and submodule(s) 92 | RUN git clone --recursive https://github.com/ZoneMinder/ZoneMinder 93 | 94 | # Change into the ZoneMinder directory 95 | WORKDIR /ZoneMinder 96 | 97 | # Configure ZoneMinder 98 | RUN cmake . 99 | 100 | # Build & install ZoneMinder 101 | RUN make && make install 102 | 103 | # ensure writable folders 104 | RUN ./zmlinkcontent.sh 105 | 106 | # Set our volumes before we attempt to configure apache 107 | VOLUME /var/lib/zoneminder/events /var/lib/mysql /var/log/zm 108 | 109 | # Stop Apache and Mysql before we configure them 110 | RUN service mysql stop && service apache2 stop 111 | 112 | # Configure Apache 113 | RUN cp misc/apache.conf /etc/apache2/sites-available/000-default.conf 114 | RUN echo "ServerName localhost" > /etc/apache2/conf-available/servername.conf && a2enconf -q servername 115 | RUN a2enmod -q rewrite && a2enmod -q cgi 116 | 117 | # Configure mysql 118 | # No longer needed for zm >= 1.32.0 119 | #RUN echo "sql_mode=NO_ENGINE_SUBSTITUTION" >> /etc/mysql/mysql.conf.d/mysqld.cnf 120 | 121 | # Expose http port 122 | EXPOSE 80 123 | 124 | # Get the entrypoint script and make sure it is executable 125 | ADD https://raw.githubusercontent.com/ZoneMinder/zmdockerfiles/master/utils/entrypoint.sh /usr/local/bin/ 126 | RUN chmod 755 /usr/local/bin/entrypoint.sh 127 | 128 | # This is run each time the container is started 129 | ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] 130 | 131 | ################ 132 | # RUN EXAMPLES # 133 | ################ 134 | 135 | # ZoneMinder uses /dev/shm for shared memory and many users will need to increase 136 | # the size significantly at runtime like so: 137 | # 138 | # docker run -d -t -p 1080:80 \ 139 | # --shm-size="512m" \ 140 | # --name zoneminder \ 141 | # zoneminder/zoneminder 142 | 143 | # ZoneMinder checks the TZ environment variable at runtime to determine the timezone. 144 | # If this variable is not set, then ZoneMinder will default to UTC. 145 | # Alternaitvely, the timezone can be set manually like so: 146 | # 147 | # docker run -d -t -p 1080:80 \ 148 | # -e TZ='America/Los_Angeles' \ 149 | # --name zoneminder \ 150 | # zoneminder/zoneminder 151 | 152 | # ZoneMinder can write its data to folders outside the container using volumes. 153 | # 154 | # docker run -d -t -p 1080:80 \ 155 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 156 | # -v /disk/zoneminder/mysql:/var/lib/mysql \ 157 | # -v /disk/zoneminder/logs:/var/log/zm \ 158 | # --name zoneminder \ 159 | # zoneminder/zoneminder 160 | 161 | # ZoneMinder can use an external database by setting the appropriate environment variables. 162 | # 163 | # docker run -d -t -p 1080:80 \ 164 | # -e ZM_DB_USER='zmuser' \ 165 | # -e ZM_DB_PASS='zmpassword' \ 166 | # -e ZM_DB_NAME='zoneminder_database' \ 167 | # -e ZM_DB_HOST='my_central_db_server' \ 168 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 169 | # -v /disk/zoneminder/logs:/var/log/zm \ 170 | # --name zoneminder \ 171 | # zoneminder/zoneminder 172 | 173 | # Here is an example using the options described above with the internal database: 174 | # 175 | # docker run -d -t -p 1080:80 \ 176 | # -e TZ='America/Los_Angeles' \ 177 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 178 | # -v /disk/zoneminder/mysql:/var/lib/mysql \ 179 | # -v /disk/zoneminder/logs:/var/log/zm \ 180 | # --shm-size="512m" \ 181 | # --name zoneminder \ 182 | # zoneminder/zoneminder 183 | 184 | # Here is an example using the options described above with an external database: 185 | # 186 | # docker run -d -t -p 1080:80 \ 187 | # -e TZ='America/Los_Angeles' \ 188 | # -e ZM_DB_user='zmuser' \ 189 | # -e ZM_DB_PASS='zmpassword' \ 190 | # -e ZM_DB_NAME='zoneminder_database' \ 191 | # -e ZM_DB_HOST='my_central_db_server' \ 192 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 193 | # -v /disk/zoneminder/logs:/var/log/zm \ 194 | # --shm-size="512m" \ 195 | # --name zoneminder \ 196 | # zoneminder/zoneminder 197 | 198 | ####################### 199 | # Email Notifications # 200 | ####################### 201 | # 202 | # Zoneminder can notify you via email but for this SSMTP needs to be configured. 203 | # 204 | # 1. Copy the ssmtp.conf from your container to your local directory. 205 | # $ docker cp zoneminder:/etc/ssmtp/ssmtp.conf . 206 | # 2. Edit ssmtp.conf to match your SMTP server and email addresses 207 | # 3. Copy the modified ssmtpt.conf back into the container. 208 | # $ docker cp ssmtp.conf zoneminder:/etc/ssmtp/ssmtp.conf 209 | # 4. In the ZM Console Options, set 210 | # - Email->NEW_MAIL_MODULES to enabled 211 | # - Email->SSMTP_MAIL to enabled 212 | # - Email->SSMTP_PATH to /usr/sbin/ssmtp 213 | # 5. Create an Email sending event filter as described in the docs 214 | # http://zoneminder.readthedocs.io/en/stable/userguide/filterevents.html 215 | 216 | -------------------------------------------------------------------------------- /docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.1' 2 | services: 3 | zoneminder: 4 | container_name: zoneminder 5 | image: zoneminderhq/zoneminder:latest-ubuntu18.04 6 | restart: unless-stopped 7 | ports: 8 | - 7878:80 9 | network_mode: "bridge" 10 | privileged: true 11 | shm_size: 512M 12 | environment: 13 | - TZ=${TZ:-Australia/Perth} 14 | volumes: 15 | - events:/var/cache/zoneminder/events 16 | - images:/var/cache/zoneminder/images 17 | - mysql:/var/lib/mysql 18 | - logs:/var/log/zm 19 | volumes: 20 | events: 21 | images: 22 | mysql: 23 | logs: 24 | -------------------------------------------------------------------------------- /release/README.md: -------------------------------------------------------------------------------- 1 | # ZoneMinder Release Dockerfiles 2 | This folder contains Docker files used for running the latest ZoneMinder release. 3 | If you are looking to run the latest code from the master branch, see the [development](https://github.com/ZoneMinder/zmdockerfiles/tree/master/development) folder instead. 4 | 5 | Contributions are welcome, but please follow these simple guidelines: 6 | 7 | - Only one Dockerfile per distro 8 | - Keep each Dockerfile sorted by distro 9 | - Use our [entrypoint script](https://github.com/ZoneMinder/zmdockerfiles/blob/master/utils/entrypoint.sh) as the entrypoint in your Dockerfile. It is intended to work with most Linux distros and will take care of starting mysql, apache, then zoneminder. 10 | - Each Dockerfile should be self sufficient. It should grab the ZoneMinder project, and any other other requried files, from github or other online resource, rather than expect files to pre-exist on the filesystem. 11 | - Avoid building ZoneMinder. Instead, install ZoneMinder from a package, using a third party repo if necessary. 12 | -------------------------------------------------------------------------------- /release/debian10/DockerFile: -------------------------------------------------------------------------------- 1 | FROM debian:10 2 | 3 | RUN apt-get update ; apt-get install -y gnupg apt-transport-https wget ca-certificates; echo "deb [trusted=yes] https://zmrepo.zoneminder.com/debian/release-1.34 buster/" >> etc/apt/sources.list; wget -O - https://zmrepo.zoneminder.com/debian/archive-keyring.gpg | apt-key add -; apt-get update; apt-get -y install zoneminder; apt-get remove --purge -y $BUILD_PACKAGES $(apt-mark showauto) && rm -rf /var/lib/apt/lists/*; adduser www-data video; systemctl enable zoneminder.service; a2enconf zoneminder; a2enmod rewrite 4 | # Setup Volumes 5 | VOLUME /var/cache/zoneminder/events /var/cache/zoneminder/images /var/lib/mysql /var/log/zm 6 | 7 | # Expose http port 8 | EXPOSE 80 9 | 10 | # Configure entrypoint 11 | COPY utils/entrypoint.sh /usr/local/bin/ 12 | RUN chmod 755 /usr/local/bin/entrypoint.sh 13 | ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] -------------------------------------------------------------------------------- /release/debian10/README.md: -------------------------------------------------------------------------------- 1 | # Usage 2 | 3 | The Docker images are available from the Docker Hub e.g. 4 | 5 | ```bash 6 | docker run -d -t -p 1080:80 \ 7 | -e TZ='Europe/London' \ 8 | -v ~/zoneminder/events:/var/cache/zoneminder/events \ 9 | -v ~/zoneminder/images:/var/cache/zoneminder/images \ 10 | -v ~/zoneminder/mysql:/var/lib/mysql \ 11 | -v ~/zoneminder/logs:/var/log/zm \ 12 | --shm-size="512m" \ 13 | --name zoneminder \ 14 | zoneminderhq/zoneminder:debian10 15 | ``` 16 | 17 | Once the container is running you will need to browse to http://hostname:port/zm to access the Zoneminder interface. 18 | -------------------------------------------------------------------------------- /release/el7/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM centos:7 2 | MAINTAINER Andrew Bauer 3 | 4 | # Get the entrypoint script 5 | ADD https://raw.githubusercontent.com/ZoneMinder/zmdockerfiles/master/utils/entrypoint.sh /usr/local/bin/ 6 | 7 | ## Dependencies layer 8 | RUN \ 9 | # Enable the EPEL repo. The repo package is part of centos base so no need fetch it. 10 | yum -y install epel-release \ 11 | # Fetch and enable the RPMFusion repo 12 | && yum -y localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm \ 13 | # Install dependencies 14 | && yum -y install mariadb-server mod_ssl zip file \ 15 | # Clean up yum cache 16 | && yum clean all \ 17 | # Make sure the entrypoint is executable 18 | && chmod 755 /usr/local/bin/entrypoint.sh 19 | 20 | ## ZoneMinder layer 21 | RUN \ 22 | # Install the latest *release* of zoneminder 23 | yum -y install zoneminder \ 24 | # Clean up yum cache 25 | && yum clean all \ 26 | # Configure Apache 27 | && ln -sf /etc/zm/www/zoneminder.conf /etc/httpd/conf.d/ \ 28 | && echo "ServerName localhost" > /etc/httpd/conf.d/servername.conf \ 29 | && echo -e "# Redirect the webroot to /zm\nRedirectMatch permanent ^/$ /zm" > /etc/httpd/conf.d/redirect.conf 30 | 31 | # Set our volumes before we do anything else 32 | VOLUME /var/lib/zoneminder/events /var/lib/mysql /var/log/zoneminder 33 | 34 | # Expose https port 35 | EXPOSE 443 36 | 37 | # This is run each time the container is started 38 | ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] 39 | 40 | ################ 41 | # RUN EXAMPLES # 42 | ################ 43 | 44 | # ZoneMinder uses /dev/shm for shared memory and many users will need to increase 45 | # the size significantly at runtime like so: 46 | # 47 | # docker run -d -t -p 1080:443 \ 48 | # --shm-size="512m" \ 49 | # --name zoneminder \ 50 | # zoneminder/zoneminder 51 | 52 | # ZoneMinder checks the TZ environment variable at runtime to determine the timezone. 53 | # If this variable is not set, then ZoneMinder will default to UTC. 54 | # Alternaitvely, the timezone can be set manually like so: 55 | # 56 | # docker run -d -t -p 1080:443 \ 57 | # -e TZ='America/Los_Angeles' \ 58 | # --name zoneminder \ 59 | # zoneminder/zoneminder 60 | 61 | # ZoneMinder can write its data to folders outside the container using volumes. 62 | # 63 | # docker run -d -t -p 1080:443 \ 64 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 65 | # -v /disk/zoneminder/mysql:/var/lib/mysql \ 66 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 67 | # --name zoneminder \ 68 | # zoneminder/zoneminder 69 | 70 | # ZoneMinder can use an external database by setting the appropriate environment variables. 71 | # 72 | # docker run -d -t -p 1080:443 \ 73 | # -e ZM_DB_USER='zmuser' \ 74 | # -e ZM_DB_PASS='zmpassword' \ 75 | # -e ZM_DB_NAME='zoneminder_database' \ 76 | # -e ZM_DB_HOST='my_central_db_server' \ 77 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 78 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 79 | # --name zoneminder \ 80 | # zoneminder/zoneminder 81 | 82 | # Here is an example using the options described above with the internal database: 83 | # 84 | # docker run -d -t -p 1080:443 \ 85 | # -e TZ='America/Los_Angeles' \ 86 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 87 | # -v /disk/zoneminder/mysql:/var/lib/mysql \ 88 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 89 | # --shm-size="512m" \ 90 | # --name zoneminder \ 91 | # zoneminder/zoneminder 92 | 93 | # Here is an example using the options described above with an external database: 94 | # 95 | # docker run -d -t -p 1080:443 \ 96 | # -e TZ='America/Los_Angeles' \ 97 | # -e ZM_DB_USER='zmuser' \ 98 | # -e ZM_DB_PASS='zmpassword' \ 99 | # -e ZM_DB_NAME='zoneminder_database' \ 100 | # -e ZM_DB_HOST='my_central_db_server' \ 101 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 102 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 103 | # --shm-size="512m" \ 104 | # --name zoneminder \ 105 | # zoneminder/zoneminder 106 | 107 | -------------------------------------------------------------------------------- /release/el8/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rockylinux/rockylinux:8 2 | MAINTAINER Andrew Bauer 3 | 4 | # Get the entrypoint script 5 | ADD https://raw.githubusercontent.com/ZoneMinder/zmdockerfiles/master/utils/entrypoint.sh /usr/local/bin/ 6 | 7 | ## Dependencies layer 8 | RUN \ 9 | # Enable PowerTools repository to reach all required dependencies 10 | dnf -y install 'dnf-command(config-manager)' && dnf config-manager --set-enabled powertools \ 11 | # Enable the EPEL repo. The repo package is part of Rocky base so no need fetch it. 12 | && dnf -y install epel-release \ 13 | # Fetch and enable the RPMFusion repo 14 | && dnf -y localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm \ 15 | # Install dependencies 16 | && dnf -y install mariadb-server mod_ssl zip file \ 17 | # Install support for hardware accelerator decoder devices 18 | && dnf -y install mesa-dri-drivers libva-intel-driver \ 19 | # Clean up dnf cache 20 | && dnf clean all \ 21 | # Make sure the entrypoint is executable 22 | && chmod 755 /usr/local/bin/entrypoint.sh 23 | 24 | ## ZoneMinder layer 25 | RUN \ 26 | # Install the latest *release* of zoneminder 27 | dnf -y install zoneminder \ 28 | # Clean up dnf cache 29 | && dnf clean all \ 30 | # Configure Apache 31 | && ln -sf /etc/zm/www/zoneminder.conf /etc/httpd/conf.d/ \ 32 | && echo "ServerName localhost" > /etc/httpd/conf.d/servername.conf \ 33 | && echo -e "# Redirect the webroot to /zm\nRedirectMatch permanent ^/$ /zm" > /etc/httpd/conf.d/redirect.conf 34 | 35 | # Set our volumes before we do anything else 36 | VOLUME /var/lib/zoneminder/events /var/lib/mysql /var/log/zoneminder 37 | 38 | # Expose https port 39 | EXPOSE 443 40 | 41 | # This is run each time the container is started 42 | ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] 43 | 44 | ################ 45 | # RUN EXAMPLES # 46 | ################ 47 | 48 | # ZoneMinder uses /dev/shm for shared memory and many users will need to increase 49 | # the size significantly at runtime like so: 50 | # 51 | # docker run -d -t -p 1080:443 \ 52 | # --shm-size="512m" \ 53 | # --name zoneminder \ 54 | # zoneminder/zoneminder 55 | 56 | # ZoneMinder checks the TZ environment variable at runtime to determine the timezone. 57 | # If this variable is not set, then ZoneMinder will default to UTC. 58 | # Alternaitvely, the timezone can be set manually like so: 59 | # 60 | # docker run -d -t -p 1080:443 \ 61 | # -e TZ='America/Los_Angeles' \ 62 | # --name zoneminder \ 63 | # zoneminder/zoneminder 64 | 65 | # ZoneMinder can write its data to folders outside the container using volumes. 66 | # 67 | # docker run -d -t -p 1080:443 \ 68 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 69 | # -v /disk/zoneminder/mysql:/var/lib/mysql \ 70 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 71 | # --name zoneminder \ 72 | # zoneminder/zoneminder 73 | 74 | # ZoneMinder can use an external database by setting the appropriate environment variables. 75 | # 76 | # docker run -d -t -p 1080:443 \ 77 | # -e ZM_DB_USER='zmuser' \ 78 | # -e ZM_DB_PASS='zmpassword' \ 79 | # -e ZM_DB_NAME='zoneminder_database' \ 80 | # -e ZM_DB_HOST='my_central_db_server' \ 81 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 82 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 83 | # --name zoneminder \ 84 | # zoneminder/zoneminder 85 | 86 | # Here is an example using a Docker Secrets type password file: 87 | 88 | # docker run -d -t -p 1080:443 \ 89 | # -e ZM_DB_USER='zmuser' \ 90 | # -e ZM_DB_PASS_FILE='/run/secure/zm_db_password' \ 91 | # -e ZM_DB_NAME='zoneminder_database' \ 92 | # -e ZM_DB_HOST='my_central_db_server' \ 93 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 94 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 95 | # --name zoneminder \ 96 | # zoneminder/zoneminder 97 | 98 | 99 | # Here is an example using the options described above with the internal database: 100 | # 101 | # docker run -d -t -p 1080:443 \ 102 | # -e TZ='America/Los_Angeles' \ 103 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 104 | # -v /disk/zoneminder/mysql:/var/lib/mysql \ 105 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 106 | # --shm-size="512m" \ 107 | # --name zoneminder \ 108 | # zoneminder/zoneminder 109 | 110 | # Here is an example using the options described above with an external database: 111 | # 112 | # docker run -d -t -p 1080:443 \ 113 | # -e TZ='America/Los_Angeles' \ 114 | # -e ZM_DB_USER='zmuser' \ 115 | # -e ZM_DB_PASS='zmpassword' \ 116 | # -e ZM_DB_NAME='zoneminder_database' \ 117 | # -e ZM_DB_HOST='my_central_db_server' \ 118 | # -v /disk/zoneminder/events:/var/lib/zoneminder/events \ 119 | # -v /disk/zoneminder/logs:/var/log/zoneminder \ 120 | # --shm-size="512m" \ 121 | # --name zoneminder \ 122 | # zoneminder/zoneminder 123 | 124 | -------------------------------------------------------------------------------- /release/ubuntu18.04/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | MAINTAINER Peter Gallagher 3 | 4 | # Update base packages 5 | RUN apt update \ 6 | && apt upgrade --assume-yes 7 | 8 | # Install pre-reqs 9 | RUN apt install --assume-yes --no-install-recommends gnupg 10 | 11 | # Configure Zoneminder PPA 12 | RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABE4C7F993453843F0AEB8154D0BF748776FFB04 \ 13 | && echo deb http://ppa.launchpad.net/iconnor/zoneminder-1.36/ubuntu bionic main > /etc/apt/sources.list.d/zoneminder.list \ 14 | && apt update 15 | 16 | # Install zoneminder 17 | RUN DEBIAN_FRONTEND=noninteractive apt install --assume-yes zoneminder \ 18 | && a2enconf zoneminder \ 19 | && a2enmod rewrite cgi 20 | 21 | # Setup Volumes 22 | VOLUME /var/cache/zoneminder/events /var/cache/zoneminder/images /var/lib/mysql /var/log/zm 23 | 24 | # Expose http port 25 | EXPOSE 80 26 | 27 | # Configure entrypoint 28 | COPY utils/entrypoint.sh /usr/local/bin/ 29 | RUN chmod 755 /usr/local/bin/entrypoint.sh 30 | ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] 31 | -------------------------------------------------------------------------------- /release/ubuntu18.04/README.md: -------------------------------------------------------------------------------- 1 | # Usage 2 | 3 | The Docker images are available from the Docker Hub e.g. 4 | 5 | ```bash 6 | docker run -d -t -p 1080:80 \ 7 | -e TZ='Europe/London' \ 8 | -v ~/zoneminder/events:/var/cache/zoneminder/events \ 9 | -v ~/zoneminder/images:/var/cache/zoneminder/images \ 10 | -v ~/zoneminder/mysql:/var/lib/mysql \ 11 | -v ~/zoneminder/logs:/var/log/zm \ 12 | --shm-size="512m" \ 13 | --name zoneminder \ 14 | zoneminderhq/zoneminder:latest-ubuntu18.04 15 | ``` 16 | 17 | Once the container is running you will need to browse to http://hostname:port/zm to access the Zoneminder interface. 18 | -------------------------------------------------------------------------------- /release/ubuntu20.04/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:20.04 2 | MAINTAINER Greg Cockburn 3 | 4 | # Update base packages 5 | RUN apt update \ 6 | && apt upgrade --assume-yes 7 | 8 | # Install pre-reqs 9 | RUN apt install --assume-yes --no-install-recommends gnupg 10 | 11 | # Configure Zoneminder PPA 12 | RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABE4C7F993453843F0AEB8154D0BF748776FFB04 \ 13 | && echo deb http://ppa.launchpad.net/iconnor/zoneminder-1.36/ubuntu focal main > /etc/apt/sources.list.d/zoneminder.list \ 14 | && apt update 15 | 16 | # Install zoneminder 17 | RUN DEBIAN_FRONTEND=noninteractive apt install --assume-yes zoneminder \ 18 | && a2enconf zoneminder \ 19 | && a2enmod rewrite cgi 20 | 21 | # Setup Volumes 22 | VOLUME /var/cache/zoneminder/events /var/cache/zoneminder/images /var/lib/mysql /var/log/zm 23 | 24 | # Expose http port 25 | EXPOSE 80 26 | 27 | # Configure entrypoint 28 | COPY utils/entrypoint.sh /usr/local/bin/ 29 | RUN chmod 755 /usr/local/bin/entrypoint.sh 30 | ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] 31 | -------------------------------------------------------------------------------- /release/ubuntu20.04/README.md: -------------------------------------------------------------------------------- 1 | # Usage 2 | 3 | The Docker images are available from the Docker Hub e.g. 4 | 5 | ```bash 6 | docker run -d -t -p 1080:80 \ 7 | -e TZ='Europe/London' \ 8 | -v ~/zoneminder/events:/var/cache/zoneminder/events \ 9 | -v ~/zoneminder/images:/var/cache/zoneminder/images \ 10 | -v ~/zoneminder/mysql:/var/lib/mysql \ 11 | -v ~/zoneminder/logs:/var/log/zm \ 12 | --shm-size="512m" \ 13 | --name zoneminder \ 14 | zoneminderhq/zoneminder:latest-ubuntu20.04 15 | ``` 16 | 17 | Once the container is running you will need to browse to http://hostname:port/zm to access the Zoneminder interface. 18 | -------------------------------------------------------------------------------- /utils/README.md: -------------------------------------------------------------------------------- 1 | # ZoneMinder Docker Entrypoint Script 2 | Use this script as the entrypoint in your Dockerfile. 3 | 4 | Entrypoint.sh looks in common places in the container filesystem for the files and executables it needs to run. 5 | It should be compatible with most major Linux distributions. 6 | 7 | If the Linux distro you are using stores a critical component in a folder unknown to the script, the script will 8 | fail with an appropriate message, indicating what it could not find. If that is the case, it is fairly straight forward 9 | to teach the script to look in additional folders for said critical component. Refer to the initialize subroutine inside the script. 10 | -------------------------------------------------------------------------------- /utils/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # ZoneMinder Dockerfile entrypoint script 3 | # Written by Andrew Bauer 4 | # 5 | # This script will start mysql, apache, and zoneminder services. 6 | # It looks in common places for the files & executables it needs 7 | # and thus should be compatible with major Linux distros. 8 | 9 | ############### 10 | # SUBROUTINES # 11 | ############### 12 | 13 | # Find ciritical files and perform sanity checks 14 | initialize () { 15 | 16 | # check if remote db credentials have been given and set properly 17 | counter=0 18 | for CREDENTIAL in $ZM_DB_HOST $ZM_DB_USER $ZM_DB_PASS $ZM_DB_PASS_FILE $ZM_DB_NAME; do 19 | if [ -n "$CREDENTIAL" ]; then 20 | counter=$((counter+1)) 21 | fi 22 | done 23 | 24 | # counter = 0 means a local database 25 | # counter = 4 means a remote database 26 | # counter != 0 or 4 means the credentials were not specified correctly and we should fail 27 | remoteDB=0 28 | serverbins="my_print_defaults mysqld_safe" 29 | if [ "$counter" -eq "4" ]; then 30 | echo " * Remote database credentials detected. Continuing..." 31 | remoteDB=1 32 | serverbins="" 33 | elif [ "$counter" -ne "0" ]; then 34 | echo " * Fatal: Remote database credentials not set correctly." 35 | exit 97 36 | fi 37 | 38 | # Check to see if this script has access to all the commands it needs 39 | for CMD in cat grep install ln mysql mysqladmin mysqlshow sed sleep su tail usermod head file $serverbins; do 40 | type $CMD &> /dev/null 41 | 42 | if [ $? -ne 0 ]; then 43 | echo 44 | echo "ERROR: The script cannot find the required command \"${CMD}\"." 45 | echo 46 | exit 1 47 | fi 48 | done 49 | 50 | # Look in common places for the mysqld/MariaDB executable 51 | for FILE in "/usr/sbin/mysqld" "/usr/libexec/mysqld" "/usr/local/sbin/mysqld" "/usr/local/libexec/mysqld"; do 52 | if [ -f $FILE ]; then 53 | MYSQLD=$FILE 54 | break 55 | fi 56 | done 57 | 58 | # Look in common places for the apache executable commonly called httpd or apache2 59 | for FILE in "/usr/sbin/httpd" "/usr/sbin/apache2"; do 60 | if [ -f $FILE ]; then 61 | HTTPBIN=$FILE 62 | break 63 | fi 64 | done 65 | 66 | # Look in common places for the zoneminder config file - zm.conf 67 | for FILE in "/etc/zm.conf" "/etc/zm/zm.conf" "/usr/local/etc/zm.conf" "/usr/local/etc/zm/zm.conf"; do 68 | if [ -f $FILE ]; then 69 | ZMCONF=$FILE 70 | break 71 | fi 72 | done 73 | 74 | # Look in common places for the zoneminder startup perl script - zmpkg.pl 75 | for FILE in "/usr/bin/zmpkg.pl" "/usr/local/bin/zmpkg.pl"; do 76 | if [ -f $FILE ]; then 77 | ZMPKG=$FILE 78 | break 79 | fi 80 | done 81 | 82 | # Look in common places for the zoneminder dB update perl script - zmupdate.pl 83 | for FILE in "/usr/bin/zmupdate.pl" "/usr/local/bin/zmupdate.pl"; do 84 | if [ -f $FILE ]; then 85 | ZMUPDATE=$FILE 86 | break 87 | fi 88 | done 89 | 90 | # Look in common places for the zoneminder dB creation script - zm_create.sql 91 | for FILE in "/usr/share/zoneminder/db/zm_create.sql" "/usr/local/share/zoneminder/db/zm_create.sql"; do 92 | if [ -f $FILE ]; then 93 | ZMCREATE=$FILE 94 | break 95 | fi 96 | done 97 | 98 | # Look in common places for the php.ini relevant to zoneminder 99 | # Search order matters here because debian distros commonly have multiple php.ini's 100 | for FILE in "/etc/php/7.4/apache2/php.ini" "/etc/php/7.2/apache2/php.ini" "/etc/php/7.0/apache2/php.ini" "/etc/php5/apache2/php.ini" "/etc/php.ini" "/usr/local/etc/php.ini"; do 101 | if [ -f $FILE ]; then 102 | PHPINI=$FILE 103 | break 104 | fi 105 | done 106 | 107 | # Do we have php-fpm installed 108 | for FILE in "/usr/sbin/php-fpm"; do 109 | if [ -f $FILE ]; then 110 | PHPFPM=$FILE 111 | fi 112 | done 113 | 114 | for FILE in $ZMCONF $ZMPKG $ZMUPDATE $ZMCREATE $PHPINI $HTTPBIN $MYSQLD; do 115 | if [ -z $FILE ]; then 116 | echo 117 | echo "FATAL: This script was unable to determine one or more critical files. Cannot continue." 118 | echo 119 | echo "VARIABLE DUMP" 120 | echo "-------------" 121 | echo 122 | echo "Path to zm.conf: ${ZMCONF}" 123 | echo "Path to zmpkg.pl: ${ZMPKG}" 124 | echo "Path to zmupdate.pl: ${ZMUPDATE}" 125 | echo "Path to zm_create.sql: ${ZMCREATE}" 126 | echo "Path to php.ini: ${PHPINI}" 127 | echo "Path to Apache executable: ${HTTPBIN}" 128 | echo "Path to Mysql executable: ${MYSQLD}" 129 | echo 130 | exit 98 131 | fi 132 | done 133 | 134 | # Set the php-fpm socket owner 135 | if [ -e /etc/php-fpm.d/www.conf ]; then 136 | mkdir -p /var/run/php-fpm 137 | 138 | sed -E 's/^;(listen.(group|owner) = ).*/\1apache/g' /etc/php-fpm.d/www.conf | \ 139 | sed -E 's/^(listen\.acl_users.*)/;\1/' > /etc/php-fpm.d/www.conf.n 140 | 141 | if [ $? -ne 0 ]; then 142 | echo 143 | echo " * Unable to update php-fpm file" 144 | exit 95 145 | fi 146 | 147 | mv -f /etc/php-fpm.d/www.conf.n /etc/php-fpm.d/www.conf 148 | fi 149 | } 150 | 151 | # Usage: get_mysql_option SECTION VARNAME DEFAULT 152 | # result is returned in $result 153 | # We use my_print_defaults which prints all options from multiple files, 154 | # with the more specific ones later; hence take the last match. 155 | get_mysql_option (){ 156 | result=`my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1` 157 | if [ -z "$result" ]; then 158 | # not found, use default 159 | result="$3" 160 | fi 161 | } 162 | 163 | # Return status of mysql service 164 | mysql_running () { 165 | if [ "$remoteDB" -eq "1" ]; then 166 | mysqladmin ping -u${ZM_DB_USER} -p${ZM_DB_PASS} -h${ZM_DB_HOST} > /dev/null 2>&1 167 | else 168 | mysqladmin ping > /dev/null 2>&1 169 | fi 170 | local result="$?" 171 | if [ "$result" -eq "0" ]; then 172 | echo "1" # mysql is running 173 | else 174 | echo "0" # mysql is not running 175 | fi 176 | } 177 | 178 | # Blocks until mysql starts completely or timeout expires 179 | mysql_timer () { 180 | timeout=60 181 | count=0 182 | while [ "$(mysql_running)" -eq "0" ] && [ "$count" -lt "$timeout" ]; do 183 | sleep 1 # Mysql has not started up completely so wait one second then check again 184 | count=$((count+1)) 185 | done 186 | 187 | if [ "$count" -ge "$timeout" ]; then 188 | echo " * Warning: Mysql startup timer expired!" 189 | fi 190 | } 191 | 192 | mysql_datadir_exists() { 193 | if [ -d /var/lib/mysql/mysql ]; then 194 | echo "1" # datadir exists 195 | else 196 | echo "0" # datadir does not exist 197 | fi 198 | } 199 | 200 | zm_db_exists() { 201 | if [ "$remoteDB" -eq "1" ]; then 202 | mysqlshow -u${ZM_DB_USER} -p${ZM_DB_PASS} -h${ZM_DB_HOST} ${ZM_DB_NAME} > /dev/null 2>&1 203 | else 204 | mysqlshow zm > /dev/null 2>&1 205 | fi 206 | RETVAL=$? 207 | if [ "$RETVAL" = "0" ]; then 208 | echo "1" # ZoneMinder database exists 209 | else 210 | echo "0" # ZoneMinder database does not exist 211 | fi 212 | } 213 | 214 | # The secret sauce to determine wether to use mysql_install_db 215 | # or mysqld --initialize seems to be wether mysql_install_db is a shell 216 | # script or a binary executable 217 | use_mysql_install_db () { 218 | local result="$?" 219 | 220 | if [ "$result" -eq "0" ] && [ -n "$MYSQL_INSTALL_DB" ]; then 221 | local contents=$(file -b "$MYSQL_INSTALL_DB") 222 | if [[ "$contents" =~ .*ASCII.text.executable.* ]]; then 223 | echo "1" # mysql_install_db is a shell script 224 | else 225 | echo "0" # mysql_install_db is a binary 226 | fi 227 | else 228 | echo "0" # mysql_install_db does not exist 229 | fi 230 | } 231 | 232 | # mysql service management 233 | start_mysql () { 234 | # determine if we are running mariadb or mysql then guess pid location 235 | if [ $(mysql --version |grep -ci mariadb) -ge "1" ]; then 236 | default_pidfile="/var/run/mariadb/mariadb.pid" 237 | else 238 | default_pidfile="/var/run/mysqld/mysqld.pid" 239 | fi 240 | 241 | # verify our guessed pid file location is right 242 | get_mysql_option mysqld_safe pid-file $default_pidfile 243 | mypidfile=$result 244 | mypidfolder=${mypidfile%/*} 245 | mysocklockfile=${mypidfolder}/mysqld.sock.lock 246 | 247 | if [ "$(mysql_datadir_exists)" -eq "0" ]; then 248 | echo " * First run of MYSQL, initializing DB." 249 | MYSQL_INSTALL_DB=$(type -p mysql_install_db) 250 | if [ "$(use_mysql_install_db)" -eq "1" ]; then 251 | ${MYSQL_INSTALL_DB} --user=mysql --datadir=/var/lib/mysql/ > /dev/null 2>&1 252 | else 253 | ${MYSQLD} --initialize-insecure --user=mysql --datadir=/var/lib/mysql/ > /dev/null 2>&1 254 | fi 255 | elif [ -e ${mysocklockfile} ]; then 256 | echo " * Removing stale lock file" 257 | rm -f ${mysocklockfile} 258 | fi 259 | # Start mysql only if it is not already running 260 | if [ "$(mysql_running)" -eq "0" ]; then 261 | echo -n " * Starting MySQL database server service" 262 | test -e $mypidfolder || install -m 755 -o mysql -g root -d $mypidfolder 263 | mysqld_safe --user=mysql --timezone="$TZ" > /dev/null 2>&1 & 264 | RETVAL=$? 265 | if [ "$RETVAL" = "0" ]; then 266 | echo " ...done." 267 | mysql_timer # Now wait until mysql finishes its startup 268 | else 269 | echo " ...failed!" 270 | fi 271 | else 272 | echo " * MySQL database server already running." 273 | fi 274 | 275 | mysqlpid=`cat "$mypidfile" 2>/dev/null` 276 | } 277 | 278 | # Check the status of the remote mysql server using supplied credentials 279 | chk_remote_mysql () { 280 | if [ "$remoteDB" -eq "1" ]; then 281 | echo -n " * Looking for remote database server" 282 | if [ "$(mysql_running)" -eq "1" ]; then 283 | echo " ...found." 284 | else 285 | echo " ...failed!" 286 | return 287 | fi 288 | echo -n " * Looking for existing remote database" 289 | if [ "$(zm_db_exists)" -eq "1" ]; then 290 | echo " ...found." 291 | else 292 | echo " ...not found." 293 | echo -n " * Attempting to create remote database using provided credentials" 294 | mysql -u${ZM_DB_USER} -p${ZM_DB_PASS} -h${ZM_DB_HOST} < $ZMCREATE > /dev/null 2>&1 295 | RETVAL=$? 296 | if [ "$RETVAL" = "0" ]; then 297 | echo " ...done." 298 | else 299 | echo " ...failed!" 300 | echo " * Error: Remote database must be manually configred." 301 | fi 302 | fi 303 | else 304 | # This should never happen 305 | echo " * Error: chk_remote_mysql subroutine called but no sql credentials were given!" 306 | fi 307 | } 308 | 309 | # Apache service management 310 | start_http () { 311 | 312 | # CentOS/Rocky 8 ships with php-fpm enabled, we need to start it 313 | # Not tested on other distros please provide feedback 314 | if [ -n "$PHPFPM" ]; then 315 | echo -n " * Starting php-fpm web service" 316 | $PHPFPM &> /dev/null 317 | RETVAL=$? 318 | 319 | if [ "$RETVAL" -eq "0" ]; then 320 | echo " ...done." 321 | else 322 | echo " ...failed!" 323 | exit 1 324 | fi 325 | fi 326 | 327 | echo -n " * Starting Apache http web server service" 328 | # Debian requires we load the contents of envvars before we can start apache 329 | if [ -f /etc/apache2/envvars ]; then 330 | source /etc/apache2/envvars 331 | fi 332 | $HTTPBIN -k start > /dev/null 2>&1 333 | RETVAL=$? 334 | if [ "$RETVAL" = "0" ]; then 335 | echo " ...done." 336 | else 337 | echo " ...failed!" 338 | exit 1 339 | fi 340 | } 341 | 342 | # ZoneMinder service management 343 | start_zoneminder () { 344 | echo -n " * Starting ZoneMinder video surveillance recorder" 345 | # Call zmupdate.pl here to upgrade the dB if needed. 346 | # Otherwise zm fails after an upgrade, due to dB mismatch 347 | $ZMUPDATE --nointeractive 348 | $ZMUPDATE --nointeractive -f 349 | 350 | $ZMPKG start > /dev/null 2>&1 351 | RETVAL=$? 352 | if [ "$RETVAL" = "0" ]; then 353 | echo " ...done." 354 | else 355 | echo " ...failed!" 356 | exit 1 357 | fi 358 | } 359 | 360 | cleanup () { 361 | echo " * SIGTERM received. Cleaning up before exiting..." 362 | kill $mysqlpid > /dev/null 2>&1 363 | $HTTPBIN -k stop > /dev/null 2>&1 364 | sleep 5 365 | exit 0 366 | } 367 | 368 | ################ 369 | # MAIN PROGRAM # 370 | ################ 371 | 372 | echo 373 | initialize 374 | 375 | # Set the timezone before we start any services 376 | if [ -z "$TZ" ]; then 377 | TZ="UTC" 378 | fi 379 | echo "date.timezone = $TZ" >> $PHPINI 380 | if [ -L /etc/localtime ]; then 381 | ln -sf "/usr/share/zoneinfo/$TZ" /etc/localtime 382 | fi 383 | if [ -f /etc/timezone ]; then 384 | echo "$TZ" > /etc/timezone 385 | fi 386 | 387 | if [ -d "/var/lib/mysql" ]; then 388 | chown -R mysql:mysql /var/lib/mysql/ 389 | fi 390 | 391 | # Configure then start Mysql 392 | if [ "$remoteDB" -eq "1" ]; then 393 | if [ -n "$ZM_DB_PASS_FILE" ]; then 394 | ZM_DB_PASS=$(cat $ZM_DB_PASS_FILE) 395 | fi 396 | 397 | sed -i -e "s/ZM_DB_NAME=.*$/ZM_DB_NAME=$ZM_DB_NAME/g" $ZMCONF 398 | sed -i -e "s/ZM_DB_USER=.*$/ZM_DB_USER=$ZM_DB_USER/g" $ZMCONF 399 | sed -i -e "s/ZM_DB_PASS=.*$/ZM_DB_PASS=$ZM_DB_PASS/g" $ZMCONF 400 | sed -i -e "s/ZM_DB_HOST=.*$/ZM_DB_HOST=$ZM_DB_HOST/g" $ZMCONF 401 | chk_remote_mysql 402 | else 403 | usermod -d /var/lib/mysql/ mysql > /dev/null 2>&1 404 | start_mysql 405 | 406 | mysql -u root -e "CREATE USER 'zmuser'@'localhost' IDENTIFIED BY 'zmpass';" 407 | mysql -u root -e "GRANT ALL PRIVILEGES ON *.* TO 'zmuser'@'localhost';" 408 | 409 | if [ "$(zm_db_exists)" -eq "0" ]; then 410 | echo " * First run of mysql in the container, creating ZoneMinder dB." 411 | mysql -u root < $ZMCREATE 412 | else 413 | echo " * ZoneMinder dB already exists, skipping table creation." 414 | fi 415 | fi 416 | 417 | # Ensure we shutdown our services cleanly when we are told to stop 418 | trap cleanup SIGTERM 419 | 420 | # Start Apache 421 | start_http 422 | 423 | # Start ZoneMinder 424 | start_zoneminder 425 | 426 | # tail logs while running 427 | tail -F /var/log/zoneminder/zm*.log /var/log/zm/zm*.log 428 | --------------------------------------------------------------------------------