Compare commits
	
		
			18 Commits
		
	
	
		
			c19b73e3f0
			...
			dev
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 564dec0b63 | |||
| 427471d825 | |||
| 165c2aa64c | |||
| 4772826d4a | |||
| 052b28e265 | |||
| 4cc229a66d | |||
| 978a9778a5 | |||
| e5c68aa12e | |||
| b16bf3cf07 | |||
| 50b7629860 | |||
| 91dfbca76e | |||
| c0a220cebe | |||
| 369728b7ef | |||
| 31dda9d64f | |||
| 0e87eb3515 | |||
| bf0497c02a | |||
| 9079afd570 | |||
| 93e0971050 | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -29,7 +29,7 @@ disabled | ||||
| disabled.* | ||||
|  | ||||
| # Ignore any .env files which are not explicitly committed to the project. | ||||
| *.env | ||||
| .env | ||||
|  | ||||
| # 2024-01-23 Ignore true docker-compose files, only show examples from now on. | ||||
| docker-compose.yml | ||||
|   | ||||
| @@ -2,7 +2,16 @@ | ||||
|  | ||||
| FROM archlinux:base | ||||
|  | ||||
| RUN pacman -Syu --noconfirm && pacman -Sy --noconfirm $PACKAGES $EXTRA_ARCH | ||||
| ARG PACKAGES | ||||
| ENV PACKAGES="$PACKAGES" | ||||
| ARG EXTRA_ARCH | ||||
| ENV EXTRA_ARCH="$EXTRA_ARCH" | ||||
|  | ||||
| # Arch is rolling, and therefore recommends updating the container immediately. | ||||
| #  https://hub.docker.com/_/archlinux#updating | ||||
| RUN pacman -Syyu --noconfirm | ||||
|  | ||||
| RUN pacman -Syy  --noconfirm $PACKAGES $EXTRA_ARCH | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|   | ||||
| @@ -1,8 +1,16 @@ | ||||
| # Create a VM for testing Ansible provisioning. | ||||
|  | ||||
| FROM debian:trixie | ||||
| FROM debian:latest | ||||
|  | ||||
| RUN apt update && apt dist-upgrade -y && apt install -y $PACKAGES $EXTRA_DEBIAN | ||||
| ARG PACKAGES | ||||
| ENV PACKAGES="$PACKAGES" | ||||
| ARG EXTRA_DEBIAN | ||||
| ENV EXTRA_DEBIAN="$EXTRA_DEBIAN" | ||||
|  | ||||
| # Use the image as it comes, do not upgrade it, so that it stays reproducible. | ||||
| #RUN apt update && apt dist-upgrade -y | ||||
|  | ||||
| RUN apt update && apt install -y $PACKAGES $EXTRA_DEBIAN | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|   | ||||
| @@ -2,7 +2,15 @@ | ||||
|  | ||||
| FROM fedora:latest | ||||
|  | ||||
| RUN dnf upgrade --refresh -y && dnf install -y $PACKAGES $EXTRA_FEDORA | ||||
| ARG PACKAGES | ||||
| ENV PACKAGES="$PACKAGES" | ||||
| ARG EXTRA_FEDORA | ||||
| ENV EXTRA_FEDORA="$EXTRA_FEDORA" | ||||
|  | ||||
| # Use the image as it comes, do not upgrade it, so that it stays reproducible. | ||||
| #RUN dnf upgrade --refresh -y | ||||
|  | ||||
| RUN dnf install --refresh -y $PACKAGES $EXTRA_FEDORA | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|   | ||||
| @@ -1,10 +1,16 @@ | ||||
| # Create a VM for testing Ansible provisioning. | ||||
|  | ||||
| FROM opensuse/tumbleweed | ||||
| FROM opensuse/tumbleweed:latest | ||||
|  | ||||
| RUN zypper -n refresh \ | ||||
|    && zypper -n dist-upgrade -y \ | ||||
|    && zypper -n install -y $PACKAGES $EXTRA_OPENSUSE | ||||
| ARG PACKAGES | ||||
| ENV PACKAGES="$PACKAGES" | ||||
| ARG EXTRA_OPENSUSE | ||||
| ENV EXTRA_OPENSUSE="$EXTRA_OPENSUSE" | ||||
|  | ||||
| # Use the image as it comes, do not upgrade it, so that it stays reproducible. | ||||
| #RUN zypper -n refresh && zypper -n dist-upgrade -y | ||||
|  | ||||
| RUN zypper -n refresh && zypper -n install -y $PACKAGES $EXTRA_OPENSUSE | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|   | ||||
| @@ -2,7 +2,15 @@ | ||||
|  | ||||
| FROM ubuntu:rolling | ||||
|  | ||||
| RUN apt update && apt dist-upgrade -y && apt install -y $PACKAGES $EXTRA_UBUNTU | ||||
| ARG PACKAGES | ||||
| ENV PACKAGES="$PACKAGES" | ||||
| ARG EXTRA_UBUNTU | ||||
| ENV EXTRA_UBUNTU="$EXTRA_UBUNTU" | ||||
|  | ||||
| # Use the image as it comes, do not upgrade it, so that it stays reproducible. | ||||
| #RUN apt update && apt dist-upgrade -y | ||||
|  | ||||
| RUN apt update && apt install -y $PACKAGES $EXTRA_UBUNTU | ||||
|  | ||||
| COPY bin/main.sh /root/main.sh | ||||
| RUN chmod +x /root/main.sh | ||||
|   | ||||
| @@ -17,6 +17,9 @@ services: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/arch | ||||
|       network: host | ||||
|       args: | ||||
|         PACKAGES: ${PACKAGES} | ||||
|         EXTRA_ARCH: ${EXTRA_ARCH} | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
| @@ -43,6 +46,9 @@ services: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/debian | ||||
|       network: host | ||||
|       args: | ||||
|         PACKAGES: ${PACKAGES} | ||||
|         EXTRA_DEBIAN: ${EXTRA_DEBIAN} | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
| @@ -69,6 +75,9 @@ services: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/fedora | ||||
|       network: host | ||||
|       args: | ||||
|         PACKAGES: ${PACKAGES} | ||||
|         EXTRA_FEDORA: ${EXTRA_FEDORA} | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
| @@ -95,6 +104,9 @@ services: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/opensuse | ||||
|       network: host | ||||
|       args: | ||||
|         PACKAGES: ${PACKAGES} | ||||
|         EXTRA_OPENSUSE: ${EXTRA_OPENSUSE} | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
| @@ -121,6 +133,9 @@ services: | ||||
|       context: ./ | ||||
|       dockerfile: Dockerfiles/ubuntu | ||||
|       network: host | ||||
|       args: | ||||
|         PACKAGES: ${PACKAGES} | ||||
|         EXTRA_UBUNTU: ${EXTRA_UBUNTU} | ||||
|     restart: no | ||||
|     environment: | ||||
|       - PACKAGES=$PACKAGES | ||||
| @@ -7,8 +7,7 @@ CPU=0.2 | ||||
| RAM=0.2G | ||||
| 
 | ||||
| ## Storage | ||||
| #STORAGE_DIR=../../Volumes/ProvisionTests | ||||
| PT_STORAGE_DIR=/tmp/ProvisionTests | ||||
| PT_STORAGE_DIR=../../Volumes/IGNORED/ProvisionTests | ||||
| 
 | ||||
| ## Packages | ||||
| PACKAGES="git bash curl sudo which" | ||||
| @@ -1,7 +1,4 @@ | ||||
| #!/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 ## | ||||
|  | ||||
| @@ -12,7 +9,6 @@ source ../../source.env | ||||
| ## Main ## | ||||
|  | ||||
| # Create folders. | ||||
|  | ||||
| mkdir -pv "$PT_STORAGE_DIR/arch" | ||||
| mkdir -pv "$PT_STORAGE_DIR/debian" | ||||
| mkdir -pv "$PT_STORAGE_DIR/fedora" | ||||
|   | ||||
							
								
								
									
										80
									
								
								Config/WordpressExample/docker-compose.example.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								Config/WordpressExample/docker-compose.example.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,80 @@ | ||||
| # 2025-10-17 Hyperling | ||||
| # Copied and modified from the example here: | ||||
| #   https://hub.docker.com/_/wordpress | ||||
| # This file should be copied to `docker-compose.yml`. | ||||
| # Most configration changes can be done in the env file rather than here. | ||||
|  | ||||
| ## TBDs ## | ||||
| # - Move env variables to env.example | ||||
| # - Look through other environment variables which may be useful. | ||||
| # - Add CPU and MEM section | ||||
| # - Change ports | ||||
|  | ||||
| # TBD locate these at ../../Volumes and create `prep.sh` script. | ||||
| #volumes: | ||||
| #  wordpress: | ||||
| #  db: | ||||
|  | ||||
| services: | ||||
|  | ||||
|   wp-db: | ||||
|     container_name: wp-db | ||||
|     image: mariadb:lts | ||||
|     restart: always | ||||
|     volumes: | ||||
|       - ../../Volumes/WordPress/mariadb:/var/lib/mysql | ||||
|     healthcheck: | ||||
|       test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] | ||||
|       start_period: 5s | ||||
|       interval: 5s | ||||
|       timeout: 5s | ||||
|       retries: 10 | ||||
|     environment: | ||||
|       # https://mariadb.com/docs/server/server-management/automated-mariadb-deployment-and-administration/docker-and-mariadb/mariadb-server-docker-official-image-environment-variables | ||||
|       MARIADB_DATABASE: $MARIADB_DATABASE | ||||
|       MARIADB_USER: $MARIADB_USER | ||||
|       MARIADB_PASSWORD: MARIADB_PASSWORD | ||||
|       MARIADB_ROOT_PASSWORD: $MARIADB_ROOT_PASSWORD | ||||
|       MARIADB_AUTO_UPGRADE: $MARIADB_AUTO_UPGRADE | ||||
|       WP_CPU_DB: $WP_CPU_DB | ||||
|       WP_MEM_DB: $WP_MEM_DB | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $WP_CPU_DB | ||||
|           memory: $WP_MEM_DB | ||||
|  | ||||
|   wp-app: | ||||
|     container_name: wp-app | ||||
|     image: wordpress:latest | ||||
|     restart: always | ||||
|     ports: | ||||
|       - 8080:80 | ||||
|     depends_on: | ||||
|       wp-db: | ||||
|         condition: service_healthy | ||||
|     links: | ||||
|       - wp-db | ||||
|     volumes: | ||||
|       - ../../Volumes/WordPress/wordpress:/var/www/html | ||||
|     environment: | ||||
|       WORDPRESS_ADMIN_USERNAME: $WORDPRESS_ADMIN_USERNAME | ||||
|       WORDPRESS_ADMIN_PASSWORD: $WORDPRESS_ADMIN_PASSWORD | ||||
|       WORDPRESS_DB_HOST: wp-db | ||||
|       WORDPRESS_DB_NAME: $MARIADB_DATABASE | ||||
|       # TBD/TODO: Does not work, but recommended. :( | ||||
|       #WORDPRESS_DB_USER: $MARIADB_USER | ||||
|       #WORDPRESS_DB_PASSWORD: $MARIADB_PASSWORD | ||||
|       # Works, but not recommended. Lol. | ||||
|       WORDPRESS_DB_USER: root | ||||
|       WORDPRESS_DB_PASSWORD: $MARIADB_ROOT_PASSWORD | ||||
|       WORDPRESS_DEBUG: $WORDPRESS_DEBUG | ||||
|       WP_CPU: $WP_CPU | ||||
|       WP_MEM: $WP_MEM | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $WP_CPU | ||||
|           memory: $WP_MEM | ||||
| @@ -1,58 +0,0 @@ | ||||
| # 2025-10-17 Hyperling | ||||
| # Copied and modified from the example here: | ||||
| #   https://hub.docker.com/_/wordpress | ||||
| # This file should be copied to `docker-compose.yml`. | ||||
| # Most configration changes can be done in the env file rather than here. | ||||
|  | ||||
| ## TBDs ## | ||||
| # - Move env variables to env.example | ||||
| # - Look through other environment variables which may be useful. | ||||
| # - Add CPU and MEM section | ||||
| # - Change ports | ||||
|  | ||||
| # TBD locate these at ../../Volumes and create `prep.sh` script. | ||||
| volumes: | ||||
|   wordpress: | ||||
|   db: | ||||
|  | ||||
| services: | ||||
|  | ||||
|   wp-app: | ||||
|     image: wordpress | ||||
|     restart: always | ||||
|     ports: | ||||
|       - 8080:80 | ||||
|     environment: | ||||
|       WORDPRESS_DB_HOST: wp-db | ||||
|       WORDPRESS_DB_USER: $WORDPRESS_DB_USER | ||||
|       WORDPRESS_DB_PASSWORD: $WORDPRESS_DB_PASSWORD | ||||
|       WORDPRESS_DB_NAME: $WORDPRESS_DB_NAME | ||||
|       WP_CPU: $WP_CPU | ||||
|       WP_MEM: $WP_MEM | ||||
|     volumes: | ||||
|       - wordpress:/var/www/html | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $WP_CPU | ||||
|           memory: $WP_MEM | ||||
|  | ||||
|   wp-db: | ||||
|     image: mysql:8.0 | ||||
|     restart: always | ||||
|     environment: | ||||
|       MYSQL_DATABASE: $WORDPRESS_DB_NAME | ||||
|       MYSQL_USER: $WORDPRESS_DB_USER | ||||
|       MYSQL_PASSWORD: WORDPRESS_DB_PASSWORD | ||||
|       MYSQL_RANDOM_ROOT_PASSWORD: '1' | ||||
|       WP_CPU_DB: $WP_CPU_DB | ||||
|       WP_MEM_DB: $WP_MEM_DB | ||||
|     volumes: | ||||
|       - db:/var/lib/mysql | ||||
|     deploy: | ||||
|       mode: global | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: $WP_CPU_DB | ||||
|           memory: $WP_MEM_DB | ||||
| @@ -1,35 +0,0 @@ | ||||
| # This file should be copied to `.env` and have its values changes as needed. | ||||
|  | ||||
| COMPOSE_BAKE=true | ||||
|  | ||||
| ## Database ## | ||||
| WORDPRESS_DB_HOST=db | ||||
| WORDPRESS_DB_USER=exampleuser | ||||
| WORDPRESS_DB_PASSWORD=examplepass | ||||
| WORDPRESS_DB_NAME=exampledb | ||||
| MYSQL_RANDOM_ROOT_PASSWORD=1 | ||||
|  | ||||
| ## Performance ## | ||||
| # Standard Minimum | ||||
| #WP_CPU=1.00 | ||||
| #WP_MEM=2.00G | ||||
| #WP_CPU_DB=1.00 | ||||
| #WP_MEM_DB=1.00G | ||||
|  | ||||
| # Standard Recommended | ||||
| #WP_CPU=1.00 | ||||
| #WP_MEM=4.00G | ||||
| #WP_CPU_DB=1.00 | ||||
| #WP_MEM_DB=0.50G | ||||
|  | ||||
| # Tested Minimum | ||||
| #WP_CPU=0.50 | ||||
| #WP_MEM=0.50G | ||||
| #WP_CPU_DB=0.10 | ||||
| #WP_MEM_DB=0.10G | ||||
|  | ||||
| # Tested Recommended | ||||
| #WP_CPU=1.00 | ||||
| #WP_MEM=1.00G | ||||
| #WP_CPU_DB=0.25 | ||||
| #WP_MEM_DB=0.25G | ||||
							
								
								
									
										63
									
								
								Config/WordpressExample/example.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								Config/WordpressExample/example.env
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| # This file should be copied to `.env` and have its values changes as needed. | ||||
|  | ||||
| ## Docker ## | ||||
|  | ||||
| COMPOSE_BAKE=true | ||||
|  | ||||
| ## End Docker ## | ||||
|  | ||||
|  | ||||
| ## WordPress ## | ||||
|  | ||||
| # TBD/TODO: These do not actually seem to work. | ||||
| WORDPRESS_ADMIN_USERNAME='wp_user' | ||||
| WORDPRESS_ADMIN_PASSWORD='wordpress_password' | ||||
|  | ||||
| # Uncomment this to get debug output in the log. | ||||
| WORDPRESS_DEBUG=1 | ||||
|  | ||||
| ## End WordPress ## | ||||
|  | ||||
|  | ||||
| ## Database ## | ||||
|  | ||||
| MARIADB_DATABASE='wordpress' | ||||
|  | ||||
| MARIADB_USER='db_user' | ||||
| MARIADB_PASSWORD='database_password' | ||||
|  | ||||
| MARIADB_ROOT_PASSWORD='db_root_password' | ||||
|  | ||||
| # Comment this if you do not want MariaDB to run upgrade scripts on new versions. | ||||
| MARIADB_AUTO_UPGRADE=1 | ||||
|  | ||||
| ## End Database ## | ||||
|  | ||||
|  | ||||
| ## Performance ## | ||||
|  | ||||
| # Standard Minimum | ||||
| #WP_CPU=1.00 | ||||
| #WP_MEM=2.00G | ||||
| #WP_CPU_DB=1.00 | ||||
| #WP_MEM_DB=1.00G | ||||
|  | ||||
| # Standard Recommended | ||||
| #WP_CPU=1.00 | ||||
| #WP_MEM=4.00G | ||||
| #WP_CPU_DB=1.00 | ||||
| #WP_MEM_DB=0.50G | ||||
|  | ||||
| # Tested Minimum | ||||
| #WP_CPU=0.35 | ||||
| #WP_MEM=0.35G | ||||
| #WP_CPU_DB=0.15 | ||||
| #WP_MEM_DB=0.15G | ||||
|  | ||||
| # Tested Recommended | ||||
| WP_CPU=0.50 | ||||
| WP_MEM=0.50G | ||||
| WP_CPU_DB=0.25 | ||||
| WP_MEM_DB=0.25G | ||||
|  | ||||
| ## End Performance ## | ||||
							
								
								
									
										16
									
								
								Volumes/IGNORED/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								Volumes/IGNORED/README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| # Volumes/IGNORED/README.md | ||||
|  | ||||
| Docker volumes which do not need included in backups and are safe to delete | ||||
| during downtime without harming the integrity of the application they support | ||||
| can be directed here. | ||||
|  | ||||
| Examples could be: | ||||
|  | ||||
| - LibreTranslate's models | ||||
|     - These can be downloaded at any time and do not need recovered. | ||||
| - Provision Tests | ||||
|     - These are test VMs which ensure privisionin scrips work proeprly. | ||||
|     They are meant to be disposed of frequently and recrated from scratch. | ||||
|  | ||||
| If working on test VMs, such as a dev or stage Nextcloud that shouldn't be | ||||
| taking up backup space, this would also be a good place for them. | ||||
| @@ -5,7 +5,7 @@ | ||||
| DIR="$(dirname -- "${BASH_SOURCE[0]}")" | ||||
| PROG="$(basename -- "${BASH_SOURCE[0]}")" | ||||
| echo "$DIR/$PROG" | ||||
| source $DIR/../source.env | ||||
| source "$DIR/../source.env" | ||||
|  | ||||
| ## Variables ## | ||||
|  | ||||
| @@ -71,17 +71,19 @@ else | ||||
| fi | ||||
|  | ||||
| echo -e "\n`date` - Create the backup for '$DOCKER_HOME'." | ||||
| $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 | ||||
| $time zip -r "$file.tmp" \ | ||||
| 	"$DOCKER_HOME" \ | ||||
| 	/etc/crontab /etc/cron.d \ | ||||
| 	/var/spool/cron /var/{log,mail} \ | ||||
| 	--exclude "$DOCKER_HOME/Volumes/IGNORED/*" \ | ||||
| 	1>/dev/null | ||||
| mv -v "$file.tmp" "$file" | ||||
|  | ||||
| echo -e "\n`date` - Done with zipping, check size." | ||||
| ls -sh $file | ||||
| ls -sh "$file" | ||||
|  | ||||
| echo -e "\n`date` - Ensure other users can access the file." | ||||
| chmod -v 755 $file | ||||
| chmod -v 755 "$file" | ||||
|  | ||||
| if [[ "$up" == "TRUE" ]]; then | ||||
| 	echo -e "\n`date` - Bring services back up." | ||||
|   | ||||
		Reference in New Issue
	
	Block a user