From 71d763b844053266763d54bddf69a405226edbfc Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Wed, 24 Jun 2026 15:56:12 -0700 Subject: [PATCH 01/19] wip: script to backup postgres database --- scripts/Linux/db-backups-cron.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 scripts/Linux/db-backups-cron.sh diff --git a/scripts/Linux/db-backups-cron.sh b/scripts/Linux/db-backups-cron.sh new file mode 100644 index 00000000..e0d34cc0 --- /dev/null +++ b/scripts/Linux/db-backups-cron.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -e + +ENV_FILE=".env.prod" + +if [ -f "$ENV_FILE" ]; then + set -a + source "$ENV_FILE" + set +a +else + echo "Warning: $ENV_FILE file not found" +fi + +CONTAINER_NAME=db +DB_USER=${SQL_USER} +DB_NAME=${SQL_DATABASE} +BACKUP_DIR="/backups/postgres" +DATE=$(date +%Y-%m-%d_%H%M%S) +FINAL_BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql" + +mkdir -p "${BACKUP_DIR}" + +docker exec -i "${CONTAINER_NAME}" pg_dump -U "${DB_USER}" "${DB_NAME}" > "${FINAL_BACKUP_FILE}" From 4ba064eb3006e3985be870d5b92fcff6087b4727 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Wed, 24 Jun 2026 16:48:27 -0700 Subject: [PATCH 02/19] add script to set up cron job for sql dumps --- scripts/Linux/db-backups-cron.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) mode change 100644 => 100755 scripts/Linux/db-backups-cron.sh diff --git a/scripts/Linux/db-backups-cron.sh b/scripts/Linux/db-backups-cron.sh old mode 100644 new mode 100755 index e0d34cc0..31c5fda0 --- a/scripts/Linux/db-backups-cron.sh +++ b/scripts/Linux/db-backups-cron.sh @@ -14,10 +14,11 @@ fi CONTAINER_NAME=db DB_USER=${SQL_USER} DB_NAME=${SQL_DATABASE} -BACKUP_DIR="/backups/postgres" +BACKUP_DIR="../../backups/postgres" + DATE=$(date +%Y-%m-%d_%H%M%S) FINAL_BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql" mkdir -p "${BACKUP_DIR}" -docker exec -i "${CONTAINER_NAME}" pg_dump -U "${DB_USER}" "${DB_NAME}" > "${FINAL_BACKUP_FILE}" +0 9 * * * docker exec -i "${CONTAINER_NAME}" pg_dump -U "${DB_USER}" "${DB_NAME}" > "${FINAL_BACKUP_FILE}" From 3392b0e01404af78a58e2d7072cda6f1085393f2 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Thu, 25 Jun 2026 13:56:14 -0700 Subject: [PATCH 03/19] refactor db backup cron to just dump the db --- scripts/Linux/db-backups-cron.sh | 24 ------------------------ scripts/Linux/db-dump.sh | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 24 deletions(-) delete mode 100755 scripts/Linux/db-backups-cron.sh create mode 100755 scripts/Linux/db-dump.sh diff --git a/scripts/Linux/db-backups-cron.sh b/scripts/Linux/db-backups-cron.sh deleted file mode 100755 index 31c5fda0..00000000 --- a/scripts/Linux/db-backups-cron.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -set -e - -ENV_FILE=".env.prod" - -if [ -f "$ENV_FILE" ]; then - set -a - source "$ENV_FILE" - set +a -else - echo "Warning: $ENV_FILE file not found" -fi - -CONTAINER_NAME=db -DB_USER=${SQL_USER} -DB_NAME=${SQL_DATABASE} -BACKUP_DIR="../../backups/postgres" - -DATE=$(date +%Y-%m-%d_%H%M%S) -FINAL_BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql" - -mkdir -p "${BACKUP_DIR}" - -0 9 * * * docker exec -i "${CONTAINER_NAME}" pg_dump -U "${DB_USER}" "${DB_NAME}" > "${FINAL_BACKUP_FILE}" diff --git a/scripts/Linux/db-dump.sh b/scripts/Linux/db-dump.sh new file mode 100755 index 00000000..b17992cd --- /dev/null +++ b/scripts/Linux/db-dump.sh @@ -0,0 +1,25 @@ +#!/bin/bash +set -euo pipefail + +ENV_FILE="${ENV_FILE:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/docker/.env.prod}" + +if [ -f "$ENV_FILE" ]; then + set -a + source "$ENV_FILE" + set +a +else + echo "Warning: $ENV_FILE file not found" +fi + +CONTAINER_NAME=db +SQL_USER=${SQL_USER:?SQL_USER is not set} +SQL_DATABASE=${SQL_DATABASE:?SQL_DATABASE is not set} +BACKUP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/backups/postgres" + +BACKUP_FILE="${BACKUP_DIR}/${SQL_DATABASE}.sql" + +mkdir -p "${BACKUP_DIR}" + +echo "Dumping database '${SQL_DATABASE}' from container '${CONTAINER_NAME}' to '${BACKUP_FILE}'..." +docker exec -i "${CONTAINER_NAME}" pg_dump -U "${SQL_USER}" "${SQL_DATABASE}" > "${BACKUP_FILE}" +echo "Database dump completed successfully." \ No newline at end of file From 9cb57dfe2965159cb979d46b2b8bd75856954bc0 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Thu, 25 Jun 2026 15:30:09 -0700 Subject: [PATCH 04/19] add flags to pg_dump --- scripts/Linux/db-dump.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Linux/db-dump.sh b/scripts/Linux/db-dump.sh index b17992cd..822e0acb 100755 --- a/scripts/Linux/db-dump.sh +++ b/scripts/Linux/db-dump.sh @@ -21,5 +21,5 @@ BACKUP_FILE="${BACKUP_DIR}/${SQL_DATABASE}.sql" mkdir -p "${BACKUP_DIR}" echo "Dumping database '${SQL_DATABASE}' from container '${CONTAINER_NAME}' to '${BACKUP_FILE}'..." -docker exec -i "${CONTAINER_NAME}" pg_dump -U "${SQL_USER}" "${SQL_DATABASE}" > "${BACKUP_FILE}" +docker exec -i "${CONTAINER_NAME}" pg_dump -b -c -n public -O --quote-all-identifiers --no-acl -w -U "${SQL_USER}" "${SQL_DATABASE}" > "${BACKUP_FILE}" echo "Database dump completed successfully." \ No newline at end of file From fa2ceb5c367ae10f7de289ed68aaf3e4846aff01 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Thu, 25 Jun 2026 17:14:14 -0700 Subject: [PATCH 05/19] add instructions on setting up the backup cron job in install-docker-env.sh --- scripts/Linux/install-docker-env.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 947183e5..7aa6327d 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -86,4 +86,13 @@ else echo "Failed to start TEKDB containers. Please check the Docker logs for more information." exit 1 fi + +echo "Please follow these steps to create a database backup at the cadence of your choosing using crontab:" +echo "1. Determine what timezone your server is in by running the command: timedatectl" +echo "2. Determine the desired backup schedule (e.g., daily at 9 PM) considering your server's timezone." +echo "3. Ensure you have the correct permissions to run the backup script by running: chmod +x $PWD/tekdb/TEKDB/scripts/Linux/backup-database.sh" +echo "4. Add to your crontab by running: crontab -e" +echo "5. Add to your cron tab: $PWD/tekdb/TEKDB/scripts/Linux/backup-database.sh $PWD/tekdb/TEKDB/docker/.env.prod" + +echo "Success! Backup script has been added to your crontab." exit 0 \ No newline at end of file From a06d019e97a803246705c586b6b6036d31dfd517 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Mon, 29 Jun 2026 09:18:17 -0700 Subject: [PATCH 06/19] fix name of db dump script to run --- scripts/Linux/install-docker-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 7aa6327d..8d13246a 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -90,7 +90,7 @@ fi echo "Please follow these steps to create a database backup at the cadence of your choosing using crontab:" echo "1. Determine what timezone your server is in by running the command: timedatectl" echo "2. Determine the desired backup schedule (e.g., daily at 9 PM) considering your server's timezone." -echo "3. Ensure you have the correct permissions to run the backup script by running: chmod +x $PWD/tekdb/TEKDB/scripts/Linux/backup-database.sh" +echo "3. Ensure you have the correct permissions to run the backup script by running: chmod +x $PWD/tekdb/TEKDB/scripts/Linux/db-dump.sh" echo "4. Add to your crontab by running: crontab -e" echo "5. Add to your cron tab: $PWD/tekdb/TEKDB/scripts/Linux/backup-database.sh $PWD/tekdb/TEKDB/docker/.env.prod" From 8c648f20af551a7bcde186e3f0028ebfe94a01d1 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Mon, 29 Jun 2026 09:19:24 -0700 Subject: [PATCH 07/19] copy instead of move .env.prod file --- scripts/Linux/install-docker-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 8d13246a..c3dbc5c8 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -68,7 +68,7 @@ git checkout main git pull origin main echo "Moving the .env.prod file to the Docker directory..." -mv $ENV_FILE docker/.env.prod +cp $ENV_FILE docker/.env.prod echo "Pulling the latest Docker image..." docker pull ghcr.io/ecotrust/tekdb/web:latest From ca33bea1143ca01c27916857322622770bef66f4 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Mon, 29 Jun 2026 13:38:50 -0700 Subject: [PATCH 08/19] use path to docker in db-dump fail fast if no .env.prod file --- scripts/Linux/db-dump.sh | 11 ++++++++--- scripts/Linux/install-docker-env.sh | 6 +++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/scripts/Linux/db-dump.sh b/scripts/Linux/db-dump.sh index 822e0acb..7c48267a 100755 --- a/scripts/Linux/db-dump.sh +++ b/scripts/Linux/db-dump.sh @@ -1,14 +1,16 @@ #!/bin/bash set -euo pipefail -ENV_FILE="${ENV_FILE:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/docker/.env.prod}" +ENV_FILE="${1:-}" if [ -f "$ENV_FILE" ]; then set -a + echo "Loading environment variables from $ENV_FILE..." source "$ENV_FILE" set +a else - echo "Warning: $ENV_FILE file not found" + echo "Error: File "$ENV_FILE" not found. Please provide a valid environment file as an argument." + exit 1 fi CONTAINER_NAME=db @@ -20,6 +22,9 @@ BACKUP_FILE="${BACKUP_DIR}/${SQL_DATABASE}.sql" mkdir -p "${BACKUP_DIR}" +# Use full path to docker for cron compatibility +DOCKER_CMD="/usr/local/bin/docker" + echo "Dumping database '${SQL_DATABASE}' from container '${CONTAINER_NAME}' to '${BACKUP_FILE}'..." -docker exec -i "${CONTAINER_NAME}" pg_dump -b -c -n public -O --quote-all-identifiers --no-acl -w -U "${SQL_USER}" "${SQL_DATABASE}" > "${BACKUP_FILE}" +"${DOCKER_CMD}" exec -t "${CONTAINER_NAME}" pg_dump -b -c -n public -O --quote-all-identifiers --no-acl -w -U "${SQL_USER}" "${SQL_DATABASE}" > "${BACKUP_FILE}" echo "Database dump completed successfully." \ No newline at end of file diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index a681d04e..151196b3 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -89,10 +89,10 @@ fi echo "Please follow these steps to create a database backup at the cadence of your choosing using crontab:" echo "1. Determine what timezone your server is in by running the command: timedatectl" -echo "2. Determine the desired backup schedule (e.g., daily at 9 PM) considering your server's timezone." +echo "2. Determine the desired backup schedule (e.g., daily at 9 PM) considering your server's timezone. https://crontab.guru/ is a helpful resource for determing the correct cron schedule syntax." echo "3. Ensure you have the correct permissions to run the backup script by running: chmod +x $PWD/tekdb/TEKDB/scripts/Linux/db-dump.sh" echo "4. Add to your crontab by running: crontab -e" -echo "5. Add to your cron tab: $PWD/tekdb/TEKDB/scripts/Linux/backup-database.sh $PWD/tekdb/TEKDB/docker/.env.prod" +echo "5. Add to your cron tab: $PWD/tekdb/TEKDB/scripts/Linux/db-dump.sh $PWD/tekdb/TEKDB/docker/.env.prod >> /var/log/tekdb_db_dump.log 2>&1" -echo "Success! Backup script has been added to your crontab." +echo "Success! Backup script has been added to your crontab. You can check the log file at /var/log/tekdb_db_dump.log for any errors or output from the backup script." exit 0 \ No newline at end of file From e97fa9ccc41930b13088fdb691fbd5f1332c92b3 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Mon, 29 Jun 2026 14:40:02 -0700 Subject: [PATCH 09/19] temporarily use backup-cron-jobs branch in install script --- scripts/Linux/install-docker-env.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 151196b3..76a5d7da 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -62,10 +62,11 @@ mkdir -p media echo "Cloning the TEKDB repository..." git clone https://github.com/Ecotrust/TEKDB.git -echo "Checking out the main branch..." +#TODO: change after testing +echo "Checking out the backup-cron-jobs branch..." cd TEKDB -git checkout main -git pull origin main +git checkout backup-cron-jobs +git pull origin backup-cron-jobs echo "Moving the .env.prod file to the Docker directory..." ln -s $ENV_FILE $PWD/docker/.env.prod From 12a10d36002a606564ada73f831e64800d661df1 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Mon, 29 Jun 2026 16:57:29 -0700 Subject: [PATCH 10/19] check docker locations dont use PWD in crontab --- scripts/Linux/db-dump.sh | 9 ++++++++- scripts/Linux/install-docker-env.sh | 17 ++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/scripts/Linux/db-dump.sh b/scripts/Linux/db-dump.sh index 7c48267a..53d8f864 100755 --- a/scripts/Linux/db-dump.sh +++ b/scripts/Linux/db-dump.sh @@ -23,7 +23,14 @@ BACKUP_FILE="${BACKUP_DIR}/${SQL_DATABASE}.sql" mkdir -p "${BACKUP_DIR}" # Use full path to docker for cron compatibility -DOCKER_CMD="/usr/local/bin/docker" +# Find docker location +if [ -x "/usr/bin/docker" ]; then + DOCKER_CMD="/usr/bin/docker" +elif [ -x "/usr/local/bin/docker" ]; then + DOCKER_CMD="/usr/local/bin/docker" +else + DOCKER_CMD="docker" +fi echo "Dumping database '${SQL_DATABASE}' from container '${CONTAINER_NAME}' to '${BACKUP_FILE}'..." "${DOCKER_CMD}" exec -t "${CONTAINER_NAME}" pg_dump -b -c -n public -O --quote-all-identifiers --no-acl -w -U "${SQL_USER}" "${SQL_DATABASE}" > "${BACKUP_FILE}" diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 76a5d7da..9695c90e 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -88,12 +88,19 @@ else exit 1 fi +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +TEKDB_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")" + echo "Please follow these steps to create a database backup at the cadence of your choosing using crontab:" echo "1. Determine what timezone your server is in by running the command: timedatectl" -echo "2. Determine the desired backup schedule (e.g., daily at 9 PM) considering your server's timezone. https://crontab.guru/ is a helpful resource for determing the correct cron schedule syntax." -echo "3. Ensure you have the correct permissions to run the backup script by running: chmod +x $PWD/tekdb/TEKDB/scripts/Linux/db-dump.sh" +echo "2. Determine the desired backup schedule (e.g., daily at 9 PM) considering your server's timezone. https://crontab.guru/ is a helpful resource for determining the correct cron schedule syntax." +echo "3. Ensure you have the correct permissions to run the backup script by running: chmod +x ${TEKDB_ROOT}/scripts/Linux/db-dump.sh" echo "4. Add to your crontab by running: crontab -e" -echo "5. Add to your cron tab: $PWD/tekdb/TEKDB/scripts/Linux/db-dump.sh $PWD/tekdb/TEKDB/docker/.env.prod >> /var/log/tekdb_db_dump.log 2>&1" - -echo "Success! Backup script has been added to your crontab. You can check the log file at /var/log/tekdb_db_dump.log for any errors or output from the backup script." +echo "5. Add to your cron tab (replace with your desired schedule):" +echo " ${TEKDB_ROOT}/scripts/Linux/db-dump.sh ${TEKDB_ROOT}/docker/.env.prod >> $HOME/tekdb_db_dump.log 2>&1" +echo "" +echo " Example for daily backups at 9 PM:" +echo " 0 21 * * * ${TEKDB_ROOT}/scripts/Linux/db-dump.sh ${TEKDB_ROOT}/docker/.env.prod >> $HOME/tekdb_db_dump.log 2>&1" +echo "" +echo "Note: Log file will be created at $HOME/tekdb_db_dump.log. You can monitor it with: tail -f $HOME/tekdb_db_dump.log" exit 0 \ No newline at end of file From 68401982a808bbae4825e37ca333466f2cd28759 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Mon, 29 Jun 2026 17:37:37 -0700 Subject: [PATCH 11/19] update TEKDB_ROOT dir --- scripts/Linux/install-docker-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 9695c90e..f8db28ea 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -89,7 +89,7 @@ else fi SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -TEKDB_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")" +TEKDB_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")/tekdb/TEKDB" echo "Please follow these steps to create a database backup at the cadence of your choosing using crontab:" echo "1. Determine what timezone your server is in by running the command: timedatectl" From f61d8064e3871bf623e691c0d52f5117565527af Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Tue, 30 Jun 2026 09:19:02 -0700 Subject: [PATCH 12/19] store backups one directory out --- scripts/Linux/db-dump.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Linux/db-dump.sh b/scripts/Linux/db-dump.sh index 53d8f864..a2fd97b0 100755 --- a/scripts/Linux/db-dump.sh +++ b/scripts/Linux/db-dump.sh @@ -16,7 +16,7 @@ fi CONTAINER_NAME=db SQL_USER=${SQL_USER:?SQL_USER is not set} SQL_DATABASE=${SQL_DATABASE:?SQL_DATABASE is not set} -BACKUP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)/backups/postgres" +BACKUP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../.." && pwd)/backups/postgres" BACKUP_FILE="${BACKUP_DIR}/${SQL_DATABASE}.sql" From eba4e3e5ea756fafab957487638d05d02f8bbbd2 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Tue, 30 Jun 2026 09:46:33 -0700 Subject: [PATCH 13/19] use docker group in install-docker-env.sh --- scripts/Linux/install-docker-env.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index f8db28ea..196ddd33 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -49,6 +49,9 @@ fi echo "Adding ubuntu user to the docker group..." sudo usermod -aG docker ubuntu +echo "Applying new group membership for the current session..." +newgrp docker + echo "Installing git..." sudo apt install git -y From 8e2853ae1c4b4008b3ad9811cc522660f7b67c42 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Tue, 30 Jun 2026 11:09:29 -0700 Subject: [PATCH 14/19] use sudo for docker commands --- scripts/Linux/install-docker-env.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 196ddd33..3f77def8 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -49,9 +49,6 @@ fi echo "Adding ubuntu user to the docker group..." sudo usermod -aG docker ubuntu -echo "Applying new group membership for the current session..." -newgrp docker - echo "Installing git..." sudo apt install git -y @@ -75,16 +72,16 @@ echo "Moving the .env.prod file to the Docker directory..." ln -s $ENV_FILE $PWD/docker/.env.prod echo "Pulling the latest Docker image..." -docker pull ghcr.io/ecotrust/tekdb/web:latest +sudo docker pull ghcr.io/ecotrust/tekdb/web:latest echo "Building the proxy image..." -docker compose --env-file docker/.env.prod -f docker/docker-compose.prod.local.yaml build proxy +sudo docker compose --env-file docker/.env.prod -f docker/docker-compose.prod.local.yaml build proxy echo "Starting the Docker containers..." -docker compose --env-file docker/.env.prod -f docker/docker-compose.prod.local.yaml up -d +sudo docker compose --env-file docker/.env.prod -f docker/docker-compose.prod.local.yaml up -d echo "Verifying that the containers are running..." -if [ "$(docker container inspect -f '{{.State.Status}}' "tekdb_web" 2>/dev/null)" = "running" ] && [ "$(docker container inspect -f '{{.State.Status}}' "db" 2>/dev/null)" = "running" ] && [ "$(docker container inspect -f '{{.State.Status}}' "tekdb_proxy" 2>/dev/null)" = "running" ]; then +if [ "$(sudo docker container inspect -f '{{.State.Status}}' "tekdb_web" 2>/dev/null)" = "running" ] && [ "$(sudo docker container inspect -f '{{.State.Status}}' "db" 2>/dev/null)" = "running" ] && [ "$(sudo docker container inspect -f '{{.State.Status}}' "tekdb_proxy" 2>/dev/null)" = "running" ]; then echo "TEKDB containers are running successfully." else echo "Failed to start TEKDB containers. Please check the Docker logs for more information." From 4e2c4761c07d70703c0e0fb751b6a9213c79808c Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Tue, 30 Jun 2026 11:28:34 -0700 Subject: [PATCH 15/19] include datetime in db-dump logs --- scripts/Linux/db-dump.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/Linux/db-dump.sh b/scripts/Linux/db-dump.sh index a2fd97b0..257d4523 100755 --- a/scripts/Linux/db-dump.sh +++ b/scripts/Linux/db-dump.sh @@ -32,6 +32,6 @@ else DOCKER_CMD="docker" fi -echo "Dumping database '${SQL_DATABASE}' from container '${CONTAINER_NAME}' to '${BACKUP_FILE}'..." +echo "${date +"%Y-%m-%d %H:%M:%S"} - Dumping database '${SQL_DATABASE}' from container '${CONTAINER_NAME}' to '${BACKUP_FILE}'..." "${DOCKER_CMD}" exec -t "${CONTAINER_NAME}" pg_dump -b -c -n public -O --quote-all-identifiers --no-acl -w -U "${SQL_USER}" "${SQL_DATABASE}" > "${BACKUP_FILE}" -echo "Database dump completed successfully." \ No newline at end of file +echo "${date +"%Y-%m-%d %H:%M:%S"} - Database dump completed successfully." \ No newline at end of file From 34b3e281bece6ee6acdb192667ad0327ad991fc3 Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Tue, 30 Jun 2026 11:31:38 -0700 Subject: [PATCH 16/19] fix syntax for date parsing --- scripts/Linux/db-dump.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/Linux/db-dump.sh b/scripts/Linux/db-dump.sh index 257d4523..f357e686 100755 --- a/scripts/Linux/db-dump.sh +++ b/scripts/Linux/db-dump.sh @@ -32,6 +32,6 @@ else DOCKER_CMD="docker" fi -echo "${date +"%Y-%m-%d %H:%M:%S"} - Dumping database '${SQL_DATABASE}' from container '${CONTAINER_NAME}' to '${BACKUP_FILE}'..." +echo "$(date +"%Y-%m-%d %H:%M:%S") - Dumping database '${SQL_DATABASE}' from container '${CONTAINER_NAME}' to '${BACKUP_FILE}'..." "${DOCKER_CMD}" exec -t "${CONTAINER_NAME}" pg_dump -b -c -n public -O --quote-all-identifiers --no-acl -w -U "${SQL_USER}" "${SQL_DATABASE}" > "${BACKUP_FILE}" -echo "${date +"%Y-%m-%d %H:%M:%S"} - Database dump completed successfully." \ No newline at end of file +echo "$(date +"%Y-%m-%d %H:%M:%S") - Database dump completed successfully." \ No newline at end of file From a5c65f84f463f0b92d4b94f84871e0b0c80ea1af Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Tue, 30 Jun 2026 11:35:40 -0700 Subject: [PATCH 17/19] include datetime in all db-dump logs --- scripts/Linux/db-dump.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/Linux/db-dump.sh b/scripts/Linux/db-dump.sh index f357e686..e933168a 100755 --- a/scripts/Linux/db-dump.sh +++ b/scripts/Linux/db-dump.sh @@ -5,11 +5,11 @@ ENV_FILE="${1:-}" if [ -f "$ENV_FILE" ]; then set -a - echo "Loading environment variables from $ENV_FILE..." + echo "$(date +"%Y-%m-%d %H:%M:%S") - Loading environment variables from $ENV_FILE..." source "$ENV_FILE" set +a else - echo "Error: File "$ENV_FILE" not found. Please provide a valid environment file as an argument." + echo "$(date +"%Y-%m-%d %H:%M:%S") - Error: File "$ENV_FILE" not found. Please provide a valid environment file as an argument." exit 1 fi From 8b3d04ce316eb380488ede673155fce014e70b6c Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Tue, 30 Jun 2026 11:39:24 -0700 Subject: [PATCH 18/19] switch to main branch in install-docker-env.sh --- scripts/Linux/install-docker-env.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 3f77def8..604afd52 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -62,11 +62,10 @@ mkdir -p media echo "Cloning the TEKDB repository..." git clone https://github.com/Ecotrust/TEKDB.git -#TODO: change after testing -echo "Checking out the backup-cron-jobs branch..." +echo "Checking out the main branch..." cd TEKDB -git checkout backup-cron-jobs -git pull origin backup-cron-jobs +git checkout main +git pull origin main echo "Moving the .env.prod file to the Docker directory..." ln -s $ENV_FILE $PWD/docker/.env.prod From cff10e19ab2bff5adf204f897e64c8a305915b7f Mon Sep 17 00:00:00 2001 From: Paige Williams Date: Tue, 30 Jun 2026 12:25:46 -0700 Subject: [PATCH 19/19] use sudo for crontab --- scripts/Linux/install-docker-env.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/Linux/install-docker-env.sh b/scripts/Linux/install-docker-env.sh index 604afd52..df0fcef1 100644 --- a/scripts/Linux/install-docker-env.sh +++ b/scripts/Linux/install-docker-env.sh @@ -94,7 +94,7 @@ echo "Please follow these steps to create a database backup at the cadence of yo echo "1. Determine what timezone your server is in by running the command: timedatectl" echo "2. Determine the desired backup schedule (e.g., daily at 9 PM) considering your server's timezone. https://crontab.guru/ is a helpful resource for determining the correct cron schedule syntax." echo "3. Ensure you have the correct permissions to run the backup script by running: chmod +x ${TEKDB_ROOT}/scripts/Linux/db-dump.sh" -echo "4. Add to your crontab by running: crontab -e" +echo "4. Add to your crontab by running: sudo crontab -e" echo "5. Add to your cron tab (replace with your desired schedule):" echo " ${TEKDB_ROOT}/scripts/Linux/db-dump.sh ${TEKDB_ROOT}/docker/.env.prod >> $HOME/tekdb_db_dump.log 2>&1" echo ""