From 831e9b124dab559962bed936d2a958639ddd7bbf Mon Sep 17 00:00:00 2001 From: dede Date: Fri, 3 Feb 2023 18:27:44 +0100 Subject: [PATCH] initial commit. --- README.md | 21 ++++++++++++ docker-compose.yml | 35 ++++++++++++++++++++ env.sample | 19 +++++++++++ setup.sh | 80 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 155 insertions(+) create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 env.sample create mode 100755 setup.sh diff --git a/README.md b/README.md new file mode 100644 index 0000000..313010b --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# speedtest-tracker + +a speedtest-tracker docker-compose setup that i like. + +## usage / configuration +there's not much to configure for speedtest-tracker. to setup a new `.env` file you can either run the `setup.sh` script or just copy the `env.sample` file to `.env` and configure the values the way you like. if you do the configuration manually don't forget to create the data directory. + +**important** +the instructions here will not save you knowing how to handle linux systems, docker and so on. if you don't know what you are doing either ask for help or let people do it for you. + +## links +* speedtest-tracker docs + https://docs.speedtest-tracker.dev/ +* speedtest-tracker github repo + https://github.com/alexjustesen/speedtest-tracker + +## disclaimer +speedtest-tracker is an open source project by alexjustesen and not associated with this repository. this repository aims to provide a preconfigured and git-enabled way of configuration management for it including some features that i found useful. + +2023-02-03 +dede diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c411379 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,35 @@ +version: '3.8' +services: + speedtest-tracker: + container_name: speedtest-tracker + ports: + - '8080:80' + - '8443:443' + environment: + - PUID + - PGID + - DB_CONNECTION + - DB_HOST + - DB_PORT + - DB_DATABASE + - DB_USERNAME + - DB_PASSWORD + volumes: + - '/path/to/directory:/config' + image: 'ghcr.io/alexjustesen/speedtest-tracker:latest' + restart: unless-stopped + depends_on: + - db + db: + container_name: speedtest-tracker-db + image: mariadb:10 + restart: always + environment: + - MARIADB_DATABASE + - MARIADB_USER + - MARIADB_PASSWORD + - MARIADB_RANDOM_ROOT_PASSWORD + volumes: + - speedtest-db:/var/lib/mysql +volumes: + speedtest-db: diff --git a/env.sample b/env.sample new file mode 100644 index 0000000..142bca7 --- /dev/null +++ b/env.sample @@ -0,0 +1,19 @@ +# general +COMPOSE_PROJECT_NAME=speedtest-tracker +DATA_DIR_PATH=./data + +# speedtest tracker +PUID=1000 +PGID=1000 +DB_CONNECTION=mysql +DB_HOST=db +DB_PORT=3306 +DB_DATABASE=speedtest_tracker +DB_USERNAME=speedy +DB_PASSWORD=password + +# mariadb +MARIADB_DATABASE=speedtest_tracker +MARIADB_USER=speedy +MARIADB_PASSWORD=password +MARIADB_RANDOM_ROOT_PASSWORD=true diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..cc55c04 --- /dev/null +++ b/setup.sh @@ -0,0 +1,80 @@ +#!/bin/bash +# env setup script for docker compose .env setup +# 2023-01-06 by dede & dany + +env_sample="env.sample" + +dirname=$(basename "$(dirname "${BASH_SOURCE[0]}")") +echo "$dirname docker compose setup" +echo "> env setup for $dirname with docker compose" + +# check for existing .env file to not break an existing setup +if [[ -f .env ]]; then + if [[ "$1" == "-f" ]]; then + echo ".env file already exists. force param is set. .env will be overwritten." + else + echo ".env file already exists. setup will not run."\ + "either rename/delete it first or run this script with force param like this: " + echo "$ ./${0##*/} -f" + exit 1 + fi +elif [[ ! -f $env_sample ]]; then + echo "> $env_sample file is missing. cannot run." + exit 2 +fi + +# create .env file +echo -e "# file generated by ${0##*/} on $(date +"%F %H:%M") by $USER\n" > .env + +# step through the list of lines and ask for each key to use default value or set value +# for each line in configfile +while read -r -u 3 line; do + + # keep blank and comment lines + if [[ -z $line ]] || [[ $line == \#* ]]; then + echo "$line" >> .env + + # handle variable lines + else + # split line by '=' into key and value + readarray -d "=" -t currvar<<< "$line" + + # preset value with default + value=${currvar[1]::-1} + + # check if there's a password to generate + if [[ ${currvar[0]} =~ (PASS|PASSWORD|PWD|PASSWD)$ ]]; then + value=$(openssl rand -base64 29 | tr -d "=+/" | cut -c1-25) + fi + + # ask for user input + echo -n "please enter value for ${currvar[0]} [$value]: " + read -r userinput + + # set userinput as new value if any + if [ -n "$userinput" ]; then + value=$userinput + fi + + # check if there's a directory to create + if [[ ${currvar[0]} =~ (DIR|DIRECTORY)$ ]]; then + if [[ ! -d $value ]]; then + echo -n "do you want to create the directory? [Y/n]: " + read -r createdir + if [[ $createdir =~ ^([yY]|)$ ]]; then + mkdir -p "$value" + echo "directory created." + fi + else + echo "directory already exists." + if [ -n "$(ls -A "$value")" ]; then + echo "WATCH OUT! the directory is NOT empty. please ensure this is intended." + fi + fi + fi + + # now append the line + echo "${currvar[0]}=$value" >> .env + + fi +done 3< $env_sample