Compare commits

...

15 Commits

9 changed files with 215 additions and 9 deletions

10
.gitignore vendored
View File

@@ -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-*

View File

@@ -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

View File

@@ -1,3 +1,7 @@
# Construction Area
This configuration is still a work in progress. :)
# Provision Test Images
Create containers of popular Linux distributions in order to test Ansible.

View File

@@ -20,5 +20,7 @@ EXTRA_UBUNTU=""
## Script
REPO=https://git.hyperling.com/me/env-ansible
BRANCH=dev
#BRANCH=dev
BRANCH=stage
#BRANCH=prod
EXEC="./setup.sh -l"

View File

@@ -0,0 +1,3 @@
# Construction Area
This configuration is still a work in progress. :)

View 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

View 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 ##

View File

@@ -16,6 +16,39 @@ BASENAME="Backup"
file="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip"
time="`which time`"
## Functions ##
function usage {
cat <<- EOF
Backup script for Hyperling's self-managed Docker setup.
Usage: $PROG [-u] [-d] [-h]
-u : Bring all containers up after the backup has finished.
-d : Bring all containers down before taking the backup.
-h : Display this help text.
Example:
$PROG -ud
EOF
exit $1
}
## Parameters ##
up=FALSE
down=FALSE
while getopts ':udh' opt; do
case "$opt" in
u) up=TRUE ;;
d) down=TRUE ;;
h) usage 0 ;;
*) echo "ERROR: Option $OPTARG not recognized." >&2
usage 1 ;;
esac
done
## Main ##
# Ensure backup directory exists with correct permissions.
@@ -30,8 +63,12 @@ cd "$BACKUP_DIR"
mv -v "$BASENAME"*"$TAG"* TRASH/
rm -v TRASH/*
if [[ "$down" == "TRUE" ]]; then
echo -e "\n`date` - Take down services for a cold backup."
manage.sh -d
else
echo -e "\n`date` - Skipping take down."
fi
echo -e "\n`date` - Create the backup for '$DOCKER_HOME'."
$time zip -r $file.tmp \
@@ -46,8 +83,12 @@ ls -sh $file
echo -e "\n`date` - Ensure other users can access the file."
chmod -v 755 $file
if [[ "$up" == "TRUE" ]]; then
echo -e "\n`date` - Bring services back up."
manage.sh -u
else
echo -e "\n`date` - Skipping restoring services."
fi
## Finish ##