# Setting up Speedtest-Tracker
Since this video was made, the process has changed just a bit. The docker-compose now includes a Maria DB database, but overall it will works just as well. I did, however have to delete my old config folder, and start fresh.
I've shown you several different open source, and self hosted, speedtest applications over the years. I showed you one called Docker Sppedtest Grafana a couple of years ago, but recently the install doesn't work as expected for me anymore, and I've heard similar reports from others who've tried it as well. So, I started looking for another option, and found Sppedtest Tracker by #### - - - - - ### Installation Docker and Docker-Compose via a Simple Script You can easily install Docker-CE, Docker-Compose, Portainer-CE, and NGinX Proxy manager by using this quick install script I created and maintain on Github. Just use the command: `wget https://gitlab.com/bmcgonag/docker_installs/-/raw/main/install_docker_nproxyman.sh` To download the script to your desired host. Change the permissions to make the script executable: `chmod +x ./install_docker_nproxyman.sh` and then run the script with the command: `./install_docker_nproxyman.sh` When run, the script will prompt you to select your host operating system, then will ask you which bits of software you want to install. Simply enter 'y' for each thing you want to install. At some point, you may be asked for your super user (sudo) password as well. Allow the script to complete installation. At this point, you might want to log out and back in, as this will allow you to use the `docker` and `docker-compose` commands without the need of `sudo` in front of them. #### Installing Speedtest Tracker SSH to your chosen machine, or if you can sit in front of it, and access the terminal / command line, then do that. Once connected, I like to create a folder structure that allows me to backup my docker applications easily. I put everything inside a parent "docker" folder. So, we'll make sure we put our application folder "speedtest-tracker" into our docker folder. If you don't have a "docker" folder already, don't worry, we'll create both with 1 command. `mkdir -p docker/speedtest-tracker` This command will create the folders that don't exist already, but will not duplicate them if they do. Once we've created this structure, we'll move into the 'speedtest-tracker' folder, and create our 'docker-compose.yml' file. `cd docker/speedtest-tracker` `nano docker-compose.yml` Once you've opened the new 'docker-compose.yml' file, you'll want to copy and paste the following yaml code into it. You'll need to make some value updates based on your system needs. I'm going to put two versions of the yaml code below. The first version will be to run the application **without** email. The second will be to run it with email sending functions, and for it you'll need the SMTP server information for your email. No Email Notifications: ```yaml version: '3.3' services: speedtest-tracker: container_name: speedtest-tracker ports: - '8982:80' - '8943:443' environment: - PUID=1000 - PGID=1000 - DB_CONNECTION=mysql - DB_HOST=db - DB_PORT=3306 - DB_DATABASE=speedtest_tracker - DB_USERNAME=speedy - DB_PASSWORD=password volumes: - './config:/config' # left side can be any path you want, but this keeps it in the folder - '/etc/localtime:/etc/localtime:ro' - './web:/etc/ssl/web' image: 'ghcr.io/alexjustesen/speedtest-tracker:latest' restart: unless-stopped depends_on: - db db: image: mariadb:10 restart: always environment: - MARIADB_DATABASE=speedtest_tracker - MARIADB_USER=speedy - MARIADB_PASSWORD=password - MARIADB_RANDOM_ROOT_PASSWORD=true volumes: - ./speedtest-db:/var/lib/mysql ``` With Email Notifications ```yaml version: '3.3' services: speedtest-tracker: container_name: speedtest-tracker ports: - '8982:80' # feel free to change the port on the left side of the colon - '8943:443' # feel free to change the port ont he left side of the colon environment: - PUID=1000 - PGID=1000 - MAIL_HOST=smtp.myemailserver.io - MAIL_PORT=587 - MAIL_USERNAME=no-reply@myemailserver.io - MAIL_PASSWORD=a-long-st0n6-pa55w0rd! - MAIL_ENCRYPTION=tls - MAIL_FROM_ADDRESS="my-email@myemailserver.io" - DB_CONNECTION=mysql - DB_HOST=db - DB_PORT=3306 - DB_DATABASE=speedtest_tracker - DB_USERNAME=speedy - DB_PASSWORD=password volumes: - './config:/config' # left side can be any path you want, but this keeps it in the folder - '/etc/localtime:/etc/localtime:ro' - './web:/etc/ssl/web' image: 'ghcr.io/alexjustesen/speedtest-tracker:latest' restart: unless-stopped depends_on: - db db: image: mariadb:10 restart: always environment: - MARIADB_DATABASE=speedtest_tracker - MARIADB_USER=speedy - MARIADB_PASSWORD=password - MARIADB_RANDOM_ROOT_PASSWORD=true volumes: - ./speedtest-db:/var/lib/mysql ``` Once you've made adjustments to any ports (on the left side of the colon ':' only), and if you elect to use SMTP email, make sure you update all MAIL\_\* values to match your SMTP server settings, you can then save the file with CTRL + O, then Enter to confirm, and CTRL + X to exit.If you're updating from the version that did not include the 'db' section or the MariaDB database, you'll probably need to delete your current config folder. `sudo rm -rf config`
#### Starting Our Speedtest Tracker Server We now start our server with the command: `docker-compose up -d` I like to run a second command, which you can run separately after the container is up, or you can run it with two ampersands '&' between the commands: `docker-compose logs -f` `docker-compose up -d && docker-compose logs -f` Either way, you'll be able to watch the logs as the application starts up. You're looking for anything that stands out as an error. If you happen to hit errors, you can get some information that may help you fix the issues, and at the very least to report issues to the Github project. After about 30 seconds to a minute (depending on the hardware you are running on), the application should be up and running. You can now navigate to the site in a modern web browser by entering the IP Address and the port number of the application. `http://192.168.10.154:8982` is where I would go. You'll want to use your server's IP address, and the port you entered on the left side of the colon ':' in the port mapping in your docker-compose file. Once at the login page, you'll want to login using the default credentials. At the time of writing, the default login will be **username: