| [submodule "images/rpi-nginx-php"] | [submodule "images/rpi-nginx-php"] | ||||
| path = images/rpi-nginx-php | path = images/rpi-nginx-php | ||||
| url = git@github.com:bingen/rpi-nginx-php.git | url = git@github.com:bingen/rpi-nginx-php.git | ||||
| [submodule "images/rpi-zoneminder"] | |||||
| path = images/rpi-zoneminder | |||||
| url = git@github.com:bingen/rpi-zoneminder.git |
| docker swarm join-token worker | docker swarm join-token worker | ||||
| I was experience the issue described and fixed [here](Docker swarm nodes down after reboot! | |||||
| https://forums.docker.com/t/docker-worker-nodes-shown-as-down-after-re-start/22329/8?u=bingen): | |||||
| To avoid swarm nodes showing up as Down on reboot, you can do: | |||||
| sudo crontab -e | |||||
| then add a line like this | |||||
| @reboot docker ps | |||||
| Openldap | Openldap | ||||
| -------- | -------- | ||||
| exit 1 | exit 1 | ||||
| fi | fi | ||||
| # Delete previous running stack | |||||
| docker stack rm ${STACK_NAME} | docker stack rm ${STACK_NAME} | ||||
| # Build images | |||||
| docker-compose build | docker-compose build | ||||
| docker push bingen/rpi-openldap | docker push bingen/rpi-openldap | ||||
| docker push bingen/rpi-mariadb | docker push bingen/rpi-mariadb | ||||
| docker push bingen/rpi-mailserver | docker push bingen/rpi-mailserver | ||||
| docker push bingen/rpi-nextcloud | docker push bingen/rpi-nextcloud | ||||
| # Deploy Stack | |||||
| # seen here: https://github.com/docker/docker/issues/29133#issuecomment-278198683 | # seen here: https://github.com/docker/docker/issues/29133#issuecomment-278198683 | ||||
| env $(cat .env | grep "^[A-Z]" | xargs) \ | env $(cat .env | grep "^[A-Z]" | xargs) \ | ||||
| docker stack deploy --compose-file docker-compose.yml ${STACK_NAME} | docker stack deploy --compose-file docker-compose.yml ${STACK_NAME} | ||||
| echo Wait for services to start | echo Wait for services to start | ||||
| sleep 60 | sleep 60 | ||||
| # ##### Add users to LDAP ###### # | |||||
| host=$(docker stack ps ${STACK_NAME} | grep Running | grep openldap | awk '{ print $4 }') | host=$(docker stack ps ${STACK_NAME} | grep Running | grep openldap | awk '{ print $4 }') | ||||
| #echo Host=$host | #echo Host=$host | ||||
| if [ -z $host ]; then | if [ -z $host ]; then |
| args: | args: | ||||
| - NEXTCLOUD_VERSION=${NEXTCLOUD_VERSION} | - NEXTCLOUD_VERSION=${NEXTCLOUD_VERSION} | ||||
| - NEXTCLOUD_DATA_PATH=${NEXTCLOUD_DATA_PATH} | - NEXTCLOUD_DATA_PATH=${NEXTCLOUD_DATA_PATH} | ||||
| - NEXTCLOUD_BACKUP_PATH=${NEXTCLOUD_BACKUP_PATH} | |||||
| image: bingen/rpi-nextcloud:latest | image: bingen/rpi-nextcloud:latest | ||||
| depends_on: | depends_on: | ||||
| - db | - db | ||||
| - "8443:443" | - "8443:443" | ||||
| volumes: | volumes: | ||||
| - ${NEXTCLOUD_DATA_VOLUME_PATH}:${NEXTCLOUD_DATA_PATH} | - ${NEXTCLOUD_DATA_VOLUME_PATH}:${NEXTCLOUD_DATA_PATH} | ||||
| - ${NEXTCLOUD_BACKUP_VOLUME_PATH}:${NEXTCLOUD_BACKUP_PATH} | |||||
| zoneminder: | |||||
| build: | |||||
| context: ./images/rpi-zoneminder/ | |||||
| args: | |||||
| - ZONEMINDER_DATA_PATH=${ZONEMINDER_DATA_PATH} | |||||
| image: bingen/rpi-zoneminder:latest | |||||
| depends_on: | |||||
| - db | |||||
| #- haproxy | |||||
| secrets: | |||||
| - source: zoneminder_admin_pwd | |||||
| target: admin_pwd | |||||
| uid: '999' | |||||
| mode: 0440 | |||||
| - source: db_pwd | |||||
| target: mysql_pwd | |||||
| mode: 0440 | |||||
| env_file: | |||||
| - zoneminder.env | |||||
| networks: | |||||
| - default | |||||
| ports: | |||||
| - "8001:80" | |||||
| - "8444:443" | |||||
| #volumes: | |||||
| #- ${ZONEMINDER_DATA_VOLUME_PATH}:${ZONEMINDER_DATA_PATH} | |||||
| #padlock: | #padlock: | ||||
| external: true | external: true | ||||
| nextcloud_admin_pwd: | nextcloud_admin_pwd: | ||||
| external: true | external: true | ||||
| zoneminder_admin_pwd: | |||||
| external: true | |||||
| networks: | networks: | ||||
| default: | default: | ||||
| driver: overlay | driver: overlay |
| NEXTCLOUD_DATA_PATH=/srv/nextcloud/data | NEXTCLOUD_DATA_PATH=/srv/nextcloud/data | ||||
| # external Volume path | # external Volume path | ||||
| NEXTCLOUD_DATA_VOLUME_PATH=${VOLUMES_PATH}/nextcloud/data | NEXTCLOUD_DATA_VOLUME_PATH=${VOLUMES_PATH}/nextcloud/data | ||||
| # Internal Backup path | |||||
| NEXTCLOUD_BACKUP_PATH=/srv/nextcloud/backup | |||||
| # external Volume path | |||||
| NEXTCLOUD_BACKUP_VOLUME_PATH=${VOLUMES_PATH}/nextcloud/backup | |||||
| # ZONEMINDER | |||||
| # Internal data path | |||||
| #ZONEMINDER_DATA_PATH=/srv/zoneminder/data | |||||
| # external Volume path | |||||
| #ZONEMINDER_DATA_VOLUME_PATH=/media/volumes/zoneminder/ |
| NEXTCLOUD_URL=nextcloud.${DOMAIN} | NEXTCLOUD_URL=nextcloud.${DOMAIN} | ||||
| ZONEMINDER_URL=zoneminder.${DOMAIN} |
| Subproject commit e7982d45db4161a59595071d7b8433e17d3fb17d |
| nextcloud_admin_pwd=`eval "$PWD_GEN"` | nextcloud_admin_pwd=`eval "$PWD_GEN"` | ||||
| fi | fi | ||||
| read -p "Zoneminder Admin User Pwd (a random one will be generated if empty): " zoneminder_admin_pwd | |||||
| if [[ ${#zoneminder_admin_pwd} -eq 0 ]]; then | |||||
| zoneminder_admin_pwd=`eval "$PWD_GEN"` | |||||
| fi | |||||
| echo $'\E[33m' | echo $'\E[33m' | ||||
| echo "//////////////////////////////////////////////////" | echo "//////////////////////////////////////////////////" | ||||
| echo "///////////////// PLEASE CONFIRM /////////////////" | echo "///////////////// PLEASE CONFIRM /////////////////" | ||||
| echo $ldap_mail_pwd | docker secret create ldap_mail_pwd - | echo $ldap_mail_pwd | docker secret create ldap_mail_pwd - | ||||
| echo $ldap_nextcloud_pwd | docker secret create ldap_nextcloud_pwd - | echo $ldap_nextcloud_pwd | docker secret create ldap_nextcloud_pwd - | ||||
| echo $nextcloud_admin_pwd | docker secret create nextcloud_admin_pwd - | echo $nextcloud_admin_pwd | docker secret create nextcloud_admin_pwd - | ||||
| echo $zoneminder_admin_pwd | docker secret create zoneminder_admin_pwd - | |||||
| echo $'\E[33m' | echo $'\E[33m' | ||||
| echo "//////////////////////////////////////////////////" | echo "//////////////////////////////////////////////////" | ||||
| echo "\nNEXTCLOUD_DB_BACKUP=${NEXTCLOUD_DATA_PATH}/nextcloud_db_backup.sql" >> nextcloud.env | echo "\nNEXTCLOUD_DB_BACKUP=${NEXTCLOUD_DATA_PATH}/nextcloud_db_backup.sql" >> nextcloud.env | ||||
| echo "\nMAIL_DATA_PATH=${MAIL_DATA_PATH}" >> mail.env | echo "\nMAIL_DATA_PATH=${MAIL_DATA_PATH}" >> mail.env | ||||
| echo "\nNEXTCLOUD_DATA_PATH=${NEXTCLOUD_DATA_PATH}" >> nextcloud.env | echo "\nNEXTCLOUD_DATA_PATH=${NEXTCLOUD_DATA_PATH}" >> nextcloud.env | ||||
| echo "\nNEXTCLOUD_BACKUP_PATH=${NEXTCLOUD_BACKUP_PATH}" >> nextcloud.env | |||||
| echo $'\E[33m' | echo $'\E[33m' | ||||
| echo "//////////////////////////////////////////////////" | echo "//////////////////////////////////////////////////" | ||||
| sudo mkdir -p ${MAIL_STATE_PATH} | sudo mkdir -p ${MAIL_STATE_PATH} | ||||
| # nextcloud | # nextcloud | ||||
| sudo mkdir -p ${NEXTCLOUD_DATA_PATH} | sudo mkdir -p ${NEXTCLOUD_DATA_PATH} | ||||
| sudo mkdir -p ${NEXTCLOUD_BACKUP_PATH} |
| ZONEMINDER_DOMAIN=${DOMAIN} | |||||
| ZONEMINDER_SERVER_NAME=zoneminder | |||||
| ZONEMINDER_ADMIN_PWD_FILE=/run/secrets/admin_pwd | |||||
| #DATA_CHOWN=1 | |||||
| # DB | |||||
| MYSQL_ROOT_PWD_FILE=/run/secrets/mysql_pwd | |||||
| DB_HOST=db | |||||
| ZONEMINDER_DB_NAME=zm | |||||
| ZONEMINDER_DB_USER=zmuser |