├── .gitignore ├── .github └── FUNDING.yml ├── README.md ├── updateTeslaMate.sh ├── backupTeslaMate.sh ├── LICENSE └── restoreTeslaMate.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [CarlosCuezva] 2 | custom: 3 | - https://paypal.me/CarlosCuezva 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Teslamate maintenance 2 | 3 | [![](https://img.shields.io/badge/Donate-PayPal-ff69b4.svg)](https://www.paypal.com/donate?hosted_button_id=QF2MBMQZP4V2J) 4 | 5 | Set of scripts to automate the maintenance of TeslaMate 6 | 7 | ### Available scripts 8 | 9 | - Create daily backup 10 | - Restore previous backup 11 | - Update TeslaMate to the latest version available 12 | 13 | ### Video guide 14 | 15 | You can see my video tutorial on [YouTube](https://www.youtube.com/watch?v=taOtmhADvk4) (in Spanish or subtitles in English) 16 | -------------------------------------------------------------------------------- /updateTeslaMate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Description: Script para actualizar TeslaMate 4 | # 5 | # Author: Carlos Cuezva 6 | # Created: 18/04/2021 7 | # Last update: 16/09/2021 8 | 9 | PATH_SCRIPT=`pwd` 10 | PATH_COMPOSE=$HOME 11 | 12 | echo '¿Deseas hacer una copia de seguridad de la base de datos (s/n)? ' 13 | read answer 14 | 15 | if [ "$answer" != "${answer#[Ss]}" ] ;then 16 | $PATH_SCRIPT/backupTeslaMate.sh 17 | fi 18 | 19 | cd $PATH_COMPOSE 20 | echo -e '\n---- Comenzando la actualización ----\n' 21 | docker-compose pull 22 | echo -e '\n---- Finalizada la actualización ----\n' 23 | 24 | echo -e '\n---- Reiniciando docker ----\n' 25 | docker-compose up -d 26 | echo -e '\n---- Reinicio completado ----\n' -------------------------------------------------------------------------------- /backupTeslaMate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Description: Script to backup the TeslaMate database 4 | # 5 | # Author: Carlos Cuezva 6 | # Created: 23/04/2021 7 | # Last update: 07/04/2023 8 | 9 | PATH_COMPOSE=$HOME 10 | PATH_BACKUP=$HOME/backups/teslamate 11 | REMOVE_OLDER=7 12 | 13 | echo -e '\n---- Starting the backup ----\n' 14 | 15 | cd $PATH_COMPOSE 16 | FILENAME=`date +"%Y%m%d_%H%M"`_teslamate.bck 17 | docker exec postgres pg_dump -U teslamate teslamate > $PATH_BACKUP/$FILENAME 18 | 19 | cd $PATH_BACKUP 20 | gzip -9 -f $FILENAME 21 | 22 | FILESIZE=`du -h "$FILENAME.gz" | cut -f1` 23 | echo -e "\nThe size of the backup is $FILESIZE\n" 24 | 25 | echo -e "\nRemoving backups older than $REMOVE_OLDER days\n" 26 | find $PATH_BACKUP -name '*_teslamate.bck.gz' -type f -mtime +$REMOVE_OLDER -delete 27 | 28 | echo -e '\n---- Backup finished ----\n' -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 carloscuezva 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /restoreTeslaMate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # Description: Script para restaurar la base de datos de TeslaMate 4 | # 5 | # Author: Carlos Cuezva 6 | # Created: 21/04/2021 7 | 8 | PATH_COMPOSE=$HOME 9 | PATH_BACKUP=$1 10 | 11 | if [ ! -f "$PATH_BACKUP" ]; then 12 | echo -e '\nEl archivo de backup no existe\n' 13 | exit 1 14 | fi 15 | 16 | if [[ $PATH_BACKUP == ..* ]] ; 17 | then 18 | PATH_BACKUP=`realpath $PATH_BACKUP` 19 | fi 20 | 21 | echo -e '\n---- Detenemos la instancia de TeslaMate ----\n' 22 | cd $PATH_COMPOSE 23 | docker-compose stop teslamate 24 | 25 | echo -e '\n¿Deseas BORRAR la base de datos actual de TeslaMate (s/n)? ' 26 | read answer 27 | if [ "$answer" != "${answer#[Ss]}" ] ;then 28 | docker-compose exec -T database psql -U teslamate << . 29 | drop schema public cascade; 30 | create schema public; 31 | create extension cube; 32 | create extension earthdistance; 33 | CREATE OR REPLACE FUNCTION public.ll_to_earth(float8, float8) 34 | RETURNS public.earth 35 | LANGUAGE SQL 36 | IMMUTABLE STRICT 37 | PARALLEL SAFE 38 | AS 'SELECT public.cube(public.cube(public.cube(public.earth()*cos(radians(\$1))*cos(radians(\$2))),public.earth()*cos(radians(\$1))*sin(radians(\$2))),public.earth()*sin(radians(\$1)))::public.earth'; 39 | . 40 | fi 41 | 42 | echo -e '\n---- Restauramos en backup ----\n' 43 | docker-compose exec -T database psql -U teslamate -d teslamate < $PATH_BACKUP 44 | 45 | echo -e '\n---- Iniciamos la instancia de TeslaMate ----\n' 46 | docker-compose start teslamate --------------------------------------------------------------------------------