Compare commits
	
		
			38 Commits
		
	
	
		
			fb7e31ed69
			...
			prod
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7b9bbcbc26 | |||
| cbaf052ea2 | |||
| c4c3cb6434 | |||
| e0f846164e | |||
| 9314bb8bb4 | |||
| b9d9771523 | |||
| d2aa3c195b | |||
| dd60d5a721 | |||
| c04eb08f78 | |||
| 418983c490 | |||
| 95060838e2 | |||
| 6973640b4e | |||
| a49d0129e7 | |||
| 394acfa06d | |||
| 04089744e6 | |||
| 75711c6c20 | |||
| c4032b5b94 | |||
| d7820ed373 | |||
| d9f8318e66 | |||
| a5a80276ac | |||
| c070d7cb92 | |||
| c138fe67d6 | |||
| 2697645abe | |||
| ce111d01f3 | |||
| 7abe909cdf | |||
| f57a0d322d | |||
| 9381d61d99 | |||
| bde78a1489 | |||
| 4acbd47388 | |||
| 51d6d32790 | |||
| 1e665a40b7 | |||
| 675ac90c31 | |||
| f0679bd05f | |||
| 897493dd1f | |||
| 5a5035fd33 | |||
| e178141357 | |||
| 6062818475 | |||
| f77557151a | 
							
								
								
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -25,6 +25,8 @@ Config/DNS/config/* | ||||
|  | ||||
| # Ignore anything in disabled folders. | ||||
| disabled | ||||
| *.disabled | ||||
| disabled.* | ||||
|  | ||||
| # Ignore any .env files which are not explicitly committed to the project. | ||||
| *.env | ||||
| @@ -35,10 +37,16 @@ docker-compose.yml | ||||
| # 2024-01-24 Hide static files for Hyperling.com. | ||||
| Config/Hyperling.com/files/* | ||||
|  | ||||
| # Ignore things like "Config/Hyperling.com-Stage/"" | ||||
| # Ignore things like "Config/Hyperling.com-Stage/" | ||||
| *-Stage | ||||
| Stage-* | ||||
|  | ||||
| # Ignore copies of the Hugo configuration, such as "Config/Hugo-MyWebsite". | ||||
| Hugo-* | ||||
| *-Hugo | ||||
|  | ||||
| # Ignore Prod and Dev copies as well. | ||||
| *-Prod | ||||
| Prod-* | ||||
| *-Dev | ||||
| Dev-* | ||||
|   | ||||
| @@ -17,12 +17,17 @@ DEV="$4" | ||||
| typeset -u DEV | ||||
| echo "DEV='$DEV'" | ||||
|  | ||||
| SITE="/var/www/hugo/site" | ||||
|  | ||||
| echo "*** Creating Git Repo ***" | ||||
| sudo -u www-data git clone --recurse-submodules $BRANCH $REPO /var/www/hugo/site | ||||
| if [[ -d $SITE ]]; then | ||||
| 	rm -rfv $SITE | ||||
| fi | ||||
| sudo -u www-data git clone --recurse-submodules $BRANCH $REPO $SITE | ||||
| status="$?" | ||||
|  | ||||
| echo "*** Validating Git Repo ***" | ||||
| if [[ $status != 0 || ! -d /var/www/hugo/site/.git ]]; then | ||||
| if [[ $status != 0 || ! -d $SITE/.git ]]; then | ||||
| 	echo "ERROR: Hugo project may not have cloned correctly. status='$status'" | ||||
| 	echo "Aborting." | ||||
| 	exit 1 | ||||
| @@ -62,7 +67,7 @@ if [[ "$DEV" == "Y"* || "$DEV" == "T"* ]]; then | ||||
| 		http_code="`curl -sS http://localhost:1380 -o /dev/null -w "%{http_code}"`" | ||||
| 		if [[ $http_code != 200 ]]; then | ||||
| 			echo "* Dev server not detected, starting..." | ||||
| 			cd /var/www/hugo/site | ||||
| 			cd $SITE | ||||
| 			killall hugo 2>/dev/null | ||||
| 			sudo -u www-data hugo server -D --noBuildLock --bind 0.0.0.0 -p 1380 & | ||||
| 		fi | ||||
|   | ||||
| @@ -6,20 +6,28 @@ | ||||
| FROM node:lts-slim | ||||
|  | ||||
| # Cache System Dependencies | ||||
| RUN apt-get update && apt-get install -y git php-cli sudo curl | ||||
| RUN apt-get update && apt-get install -y git php-cli sudo curl procps | ||||
|  | ||||
| # Cache Node Dependencies | ||||
| RUN mkdir -p /var/www/api | ||||
| WORKDIR /var/www/api | ||||
| RUN echo '{ "dependencies": { "express": "" } }' > package.json | ||||
| RUN echo '{ "dependencies": { "express": ">=4.18.1 < 5.0.0" } }' > package.json | ||||
| RUN npm install | ||||
|  | ||||
| # Install + Run Website | ||||
| CMD cd /var/www/api && \ | ||||
|     rm -rfv pages main.js run.sh && \ | ||||
|     git clone https://git.hyperling.com/me/nodejs-website website && \ | ||||
|     rm -rfv website/files && \ | ||||
|     mv -v website/* ./ && \ | ||||
|     echo "Dockerfile: Ensure symlink is properly deleted if it exists..." && \ | ||||
|     ls -l website/files; rm -v website/files; sleep 0 && \ | ||||
|     echo "Dockerfile: Clone the website's Git repo..." && \ | ||||
|     rm -rfv website && \ | ||||
|     echo "Starting Website's Run Script" && \ | ||||
|     git clone https://git.hyperling.com/me/nodejs-website $BRANCH website && \ | ||||
|     echo "Dockerfile: Remove dummy files and replace with symlink..." && \ | ||||
|     rm -rfv website/files && \ | ||||
|     cd website && \ | ||||
|     echo -n "Dockerfile: Using branch " && \ | ||||
|     git branch && \ | ||||
|     ln -sv ../files ./files && \ | ||||
|     echo "Dockerfile: Allow files under files/ to be ignored by Git..." && \ | ||||
|     find ./files -exec git update-index --assume-unchanged {} \; && \ | ||||
|     echo "Dockerfile: Start website!" && \ | ||||
|     ./run.sh | ||||
|   | ||||
| @@ -10,11 +10,15 @@ services: | ||||
|     restart: always | ||||
|     ports: | ||||
|       - 8317:8080 | ||||
|     environment: | ||||
|       - BRANCH=$BRANCH | ||||
|       - CPU=$CPU | ||||
|       - MEM=$MEM | ||||
|     volumes: | ||||
|       - ./files:/var/www/api/files | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: '0.25' | ||||
|           memory: 256M | ||||
|           cpus: $CPU | ||||
|           memory: $MEM | ||||
| @@ -1,21 +0,0 @@ | ||||
| # 2022-10-29 | ||||
| # Hyperling.com configuration. | ||||
| # 2023-01-24 container needs 128M to get started fully then settles to 25M. | ||||
|  | ||||
| services: | ||||
|   app: | ||||
|     container_name: www-app | ||||
|     build: | ||||
|       context: ./ | ||||
|       network: host | ||||
|     restart: always | ||||
|     ports: | ||||
|       - 8317:8080 | ||||
|     volumes: | ||||
|       - ./files:/var/www/api/files | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: '0.10' | ||||
|           memory: 128M | ||||
| @@ -7,3 +7,18 @@ | ||||
| # Subsequent builds consistently take less than 2 seconds. | ||||
| # Testing was done on the micro server, not a workstation. | ||||
| COMPOSE_BAKE=true | ||||
|  | ||||
| ## Branch ## | ||||
| # Allow choosing the branch. By leaving it blank, the main branch will be used. | ||||
| # Should be in the full "--branch my-branch" syntax. | ||||
| BRANCH= | ||||
| #BRANCH="--branch dev" | ||||
|  | ||||
| ## Performance ## | ||||
| # Standard Server | ||||
| CPU=0.25 | ||||
| MEM=0.25G | ||||
| # Micro Server | ||||
| # 2023-01-24 container needs 128M to get started fully then settles to 25M. | ||||
| #CPU=0.10 | ||||
| #MEM=128M | ||||
|   | ||||
| @@ -47,3 +47,7 @@ MODELS_DIR=../../Volumes/LibreTranslate/models | ||||
| ## them from backup type locations such as Volumes/LibreTranslate/ and /var/. | ||||
| ## Please see the README for the CRON command related to this setting. | ||||
| # MODELS_DIR=/tmp/LibreTranslate/models | ||||
|  | ||||
| ## Can also place them under /opt/ which may be recommended by FHS standards. | ||||
| ## This keeps them from taking up precious RAM / swap if using tmpfs or similar. | ||||
| # MODELS_DIR=/opt/LibreTranslate/models | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
| FROM nextcloud:stable | ||||
|  | ||||
| # Cache System Dependencies | ||||
| RUN apt-get update && apt-get install -y sudo libmagickcore-6.q16-6-extra htop \ | ||||
| RUN apt-get update && apt-get install -y sudo libmagickcore-7.q16-10-extra htop \ | ||||
|     iputils-ping dnsutils vim bzip2 libbz2-dev | ||||
|  | ||||
| # Configure PHP Dependency | ||||
|   | ||||
| @@ -35,12 +35,27 @@ $DOCKER_HOME/Config/Nextcloud/cron.sh && echo "Success!" | ||||
| # 2022-10-30 More additions after moving to Nextcloud version 25. | ||||
| echo -e "\n*** DATABASE ***" | ||||
|  | ||||
| echo -e "\n`date` - Enable Maintenance Mode" | ||||
| docker exec -itu www-data nc-app ./occ maintenance:mode --on | ||||
|  | ||||
| # 20251004: Disabled since it has not been working. | ||||
| # Clear DB errors by allowing the DB to perform any incremental upgrades. | ||||
| # https://jira.mariadb.org/browse/MDEV-26342 | ||||
| echo -e "\n`date` - mysql_upgrade" | ||||
| docker exec -itu www-data nc-app ./occ maintenance:mode --on | ||||
| time docker exec -it nc-db mysql_upgrade \ | ||||
| 	-user="root" --password="$MYSQL_ROOT_PASSWORD" | ||||
| #echo -e "\n`date` - mysql_upgrade" | ||||
| #time docker exec -it nc-db mysql_upgrade \ | ||||
| #	-user="root" --password="$MYSQL_ROOT_PASSWORD" | ||||
|  | ||||
| echo -e "\n`date` - Enable Dynamic Row Formats" | ||||
| docker exec -it nc-db mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" \ | ||||
|     -e "SELECT CONCAT('ALTER TABLE ', TABLE_NAME,' ROW_FORMAT=DYNAMIC; ') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '$MYSQL_DATABASE' AND ENGINE = 'InnoDB' AND ROW_FORMAT != 'DYNAMIC'; " \ | ||||
|     -B -N | | ||||
| while read -r sql; do | ||||
|     echo "SQL being executed: $sql " | ||||
|     docker exec nc-db mysql -u "$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$sql" "$MYSQL_DATABASE"; | ||||
|     echo " - Done!\ " | ||||
| done | ||||
|  | ||||
| echo -e "\n`date` - Disable Maintenance Mode" | ||||
| docker exec -itu www-data nc-app ./occ maintenance:mode --off | ||||
|  | ||||
| echo -e "\n`date` - Add Missing Columns" | ||||
|   | ||||
							
								
								
									
										12
									
								
								Config/ProvisionTests/Dockerfiles/arch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Config/ProvisionTests/Dockerfiles/arch
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| # Create a VM for testing Ansible provisioning. | ||||
|  | ||||
| FROM archlinux:base | ||||
|  | ||||
| RUN pacman -Syu --noconfirm && pacman -Sy --noconfirm $PACKAGES $EXTRA_ARCH | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|  | ||||
| WORKDIR /root/ | ||||
| USER root | ||||
| CMD ./main.sh | ||||
							
								
								
									
										12
									
								
								Config/ProvisionTests/Dockerfiles/debian
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Config/ProvisionTests/Dockerfiles/debian
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| # Create a VM for testing Ansible provisioning. | ||||
|  | ||||
| FROM debian:trixie | ||||
|  | ||||
| RUN apt update && apt dist-upgrade -y && apt install -y $PACKAGES $EXTRA_DEBIAN | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|  | ||||
| WORKDIR /root/ | ||||
| USER root | ||||
| CMD ./main.sh | ||||
							
								
								
									
										12
									
								
								Config/ProvisionTests/Dockerfiles/fedora
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Config/ProvisionTests/Dockerfiles/fedora
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| # Create a VM for testing Ansible provisioning. | ||||
|  | ||||
| FROM fedora:latest | ||||
|  | ||||
| RUN dnf upgrade --refresh -y && dnf install -y $PACKAGES $EXTRA_FEDORA | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|  | ||||
| WORKDIR /root/ | ||||
| USER root | ||||
| CMD ./main.sh | ||||
							
								
								
									
										14
									
								
								Config/ProvisionTests/Dockerfiles/opensuse
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Config/ProvisionTests/Dockerfiles/opensuse
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| # Create a VM for testing Ansible provisioning. | ||||
|  | ||||
| FROM opensuse/tumbleweed | ||||
|  | ||||
| RUN zypper -n refresh \ | ||||
|    && zypper -n dist-upgrade -y \ | ||||
|    && zypper -n install -y $PACKAGES $EXTRA_OPENSUSE | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|  | ||||
| WORKDIR /root/ | ||||
| USER root | ||||
| CMD ./main.sh | ||||
							
								
								
									
										12
									
								
								Config/ProvisionTests/Dockerfiles/ubuntu
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Config/ProvisionTests/Dockerfiles/ubuntu
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,12 @@ | ||||
| # Create a VM for testing Ansible provisioning. | ||||
|  | ||||
| FROM ubuntu:rolling | ||||
|  | ||||
| RUN apt update && apt dist-upgrade -y && apt install -y $PACKAGES $EXTRA_UBUNTU | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|  | ||||
| WORKDIR /root/ | ||||
| USER root | ||||
| CMD ./main.sh | ||||
							
								
								
									
										3
									
								
								Config/ProvisionTests/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Config/ProvisionTests/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # Provision Test Images | ||||
|  | ||||
| Create containers of popular Linux distributions in order to test Ansible. | ||||
							
								
								
									
										21
									
								
								Config/ProvisionTests/bin/main.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								Config/ProvisionTests/bin/main.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| sh -c "rm -rfv prov-test" | ||||
| git clone $REPO --branch=$BRANCH prov-test | ||||
|  | ||||
| cd prov-test | ||||
|  | ||||
| echo "Starting Executable Script" | ||||
|  | ||||
| tail -F /var/mail/mail & | ||||
| tail -F /var/mail/ansible & | ||||
|  | ||||
| logfile="/root/test.log" | ||||
| $EXEC > $logfile & | ||||
| tail -F $logfile | ||||
|  | ||||
| echo "*** Finished $0 @ `date` ***" | ||||
|  | ||||
| wait -n | ||||
|  | ||||
| exit $? | ||||
							
								
								
									
										142
									
								
								Config/ProvisionTests/docker-compose.standard.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										142
									
								
								Config/ProvisionTests/docker-compose.standard.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,142 @@ | ||||
| # Create containers which each execute a provisioning script and exit. | ||||
|  | ||||
| volumes: | ||||
|  | ||||
|   pt-storage: | ||||
|     driver: local | ||||
|     driver_opts: | ||||
|       type: none | ||||
|       device: $PT_STORAGE_DIR | ||||
|       o: bind | ||||
|  | ||||
| services: | ||||
|  | ||||
|   pt-arch: | ||||
|     container_name: pt-arch | ||||
|     build: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/arch | ||||
|       network: host | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
|       - EXTRA_ARCH=$EXTRA_ARCH | ||||
|       - REPO=$REPO | ||||
|       - BRANCH=$BRANCH | ||||
|       - EXEC=$EXEC | ||||
|     volumes: | ||||
|       - type: volume | ||||
|         source: pt-storage | ||||
|         target: /root | ||||
|         volume: | ||||
|           subpath: arch | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $CPU | ||||
|           memory: $RAM | ||||
|  | ||||
|   pt-debian: | ||||
|     container_name: pt-debian | ||||
|     build: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/debian | ||||
|       network: host | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
|       - EXTRA_DEBIAN=$EXTRA_DEBIAN | ||||
|       - REPO=$REPO | ||||
|       - BRANCH=$BRANCH | ||||
|       - EXEC=$EXEC | ||||
|     volumes: | ||||
|       - type: volume | ||||
|         source: pt-storage | ||||
|         target: /root | ||||
|         volume: | ||||
|           subpath: debian | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $CPU | ||||
|           memory: $RAM | ||||
|  | ||||
|   pt-fedora: | ||||
|     container_name: pt-fedora | ||||
|     build: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/fedora | ||||
|       network: host | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
|       - EXTRA_FEDORA=$EXTRA_FEDORA | ||||
|       - REPO=$REPO | ||||
|       - BRANCH=$BRANCH | ||||
|       - EXEC=$EXEC | ||||
|     volumes: | ||||
|       - type: volume | ||||
|         source: pt-storage | ||||
|         target: /root | ||||
|         volume: | ||||
|           subpath: fedora | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $CPU | ||||
|           memory: $RAM | ||||
|  | ||||
|   pt-opensuse: | ||||
|     container_name: pt-opensuse | ||||
|     build: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/opensuse | ||||
|       network: host | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
|       - EXTRA_OPENSUSE=$EXTRA_OPENSUSE | ||||
|       - REPO=$REPO | ||||
|       - BRANCH=$BRANCH | ||||
|       - EXEC=$EXEC | ||||
|     volumes: | ||||
|       - type: volume | ||||
|         source: pt-storage | ||||
|         target: /root | ||||
|         volume: | ||||
|           subpath: opensuse | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $CPU | ||||
|           memory: $RAM | ||||
|  | ||||
|   pt-ubuntu: | ||||
|     container_name: pt-ubuntu | ||||
|     build: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/ubuntu | ||||
|       network: host | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
|       - EXTRA_UBUNTU=$EXTRA_UBUNTU | ||||
|       - REPO=$REPO | ||||
|       - BRANCH=$BRANCH | ||||
|       - EXEC=$EXEC | ||||
|     volumes: | ||||
|       - type: volume | ||||
|         source: pt-storage | ||||
|         target: /root | ||||
|         volume: | ||||
|           subpath: ubuntu | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $CPU | ||||
|           memory: $RAM | ||||
							
								
								
									
										24
									
								
								Config/ProvisionTests/env.standard
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Config/ProvisionTests/env.standard
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| # This file should be renamed '.env' and have any private values modified. | ||||
|  | ||||
| COMPOSE_BAKE=true | ||||
|  | ||||
| ## Performance | ||||
| CPU=0.2 | ||||
| RAM=0.2G | ||||
|  | ||||
| ## Storage | ||||
| #STORAGE_DIR=../../Volumes/ProvisionTests | ||||
| PT_STORAGE_DIR=/tmp/ProvisionTests | ||||
|  | ||||
| ## Packages | ||||
| PACKAGES="git bash curl sudo which" | ||||
| EXTRA_ARCH="" | ||||
| EXTRA_DEBIAN="" | ||||
| EXTRA_FEDORA="" | ||||
| EXTRA_OPENSUSE="" | ||||
| EXTRA_UBUNTU="" | ||||
|  | ||||
| ## Script | ||||
| REPO=https://git.hyperling.com/me/env-ansible | ||||
| BRANCH=dev | ||||
| EXEC="./setup.sh -l" | ||||
							
								
								
									
										23
									
								
								Config/ProvisionTests/prep.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										23
									
								
								Config/ProvisionTests/prep.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| #!/usr/bin/env bash | ||||
| # 2025-07-22 Hyperling | ||||
| # Create the necessary folders for LibreTranslate's volumes to work. | ||||
| # This must be run before the container will start properly. | ||||
|  | ||||
| ## Setup ## | ||||
|  | ||||
| DIR="$(dirname -- "${BASH_SOURCE[0]}")" | ||||
| source $DIR/.env | ||||
| source ../../source.env | ||||
|  | ||||
| ## Main ## | ||||
|  | ||||
| # Create folders. | ||||
|  | ||||
| mkdir -pv "$PT_STORAGE_DIR/arch" | ||||
| mkdir -pv "$PT_STORAGE_DIR/debian" | ||||
| mkdir -pv "$PT_STORAGE_DIR/fedora" | ||||
| mkdir -pv "$PT_STORAGE_DIR/opensuse" | ||||
| mkdir -pv "$PT_STORAGE_DIR/ubuntu" | ||||
|  | ||||
| # Finish successfully. | ||||
| exit 0 | ||||
| @@ -9,23 +9,35 @@ source $DIR/../source.env | ||||
|  | ||||
| ## Variables ## | ||||
|  | ||||
| file="/tmp/Backup.zip" | ||||
| TAG="Docker" | ||||
| DATE="`date "+%Y%m%d-%H%M%S"`" | ||||
| BACKUP_DIR="/srv/backup" | ||||
| BASENAME="Backup" | ||||
| file="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip" | ||||
| time="`which time`" | ||||
|  | ||||
| ## Main ## | ||||
|  | ||||
| # Ensure backup directory exists with correct permissions. | ||||
| mkdir -pv "$BACKUP_DIR" | ||||
| mkdir -pv "$BACKUP_DIR/TRASH" | ||||
| chmod -Rv 775 "$BACKUP_DIR" | ||||
| chown -Rv root:root "$BACKUP_DIR" | ||||
|  | ||||
| # Remove the last backup. | ||||
| if [[ -e $file ]]; then | ||||
| 	echo "`date` - Removing existing file." | ||||
| 	rm -fv $file | ||||
| fi | ||||
| echo "`date` - Removing existing files." | ||||
| cd "$BACKUP_DIR" | ||||
| mv -v "$BASENAME"*"$TAG"* TRASH/ | ||||
| rm -v TRASH/* | ||||
|  | ||||
| echo -e "\n`date` - Take down services for a cold backup." | ||||
| manage.sh -d | ||||
|  | ||||
| echo -e "\n`date` - Create the backup for '$DOCKER_HOME'." | ||||
| cd $DOCKER_HOME | ||||
| $time zip -r $file.tmp . 1>/dev/null | ||||
| $time zip -r $file.tmp \ | ||||
| 	$DOCKER_HOME \ | ||||
| 	/etc/crontab /etc/cron.d /var/spool/cron \ | ||||
| 	/var/{log,mail} 1>/dev/null | ||||
| mv -v $file.tmp $file | ||||
|  | ||||
| echo -e "\n`date` - Done with zipping, check size." | ||||
|   | ||||
| @@ -130,7 +130,7 @@ fi | ||||
| if [[ -z $up && -z $down && -z $build && -z $pull && -z $clean | ||||
| 	&& -z $interact && -z $logs && -z $stats | ||||
| ]]; then | ||||
| 	docker ps | ||||
| 	docker ps --size | ||||
| 	exit 0 | ||||
| fi | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user