Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mahemys/pihole-backup

pihole backup database and configuration to archive. run via terminal or cron.
https://github.com/mahemys/pihole-backup

backup pi-hole

Last synced: 22 days ago
JSON representation

pihole backup database and configuration to archive. run via terminal or cron.

Awesome Lists containing this project

README

        

# pihole backup
- pihole_backup.py
- created by mahemys 2023.07.22 18:40 IST
- !perfect, but works!
- GNU-GPL; no license; free to use!
- update 2023-07-24 10:15 IST; initial review; optimise
- update 2023-07-25 21:50 IST; refer api endpoints
- update 2023-07-26 21:05 IST; get api token from file

**purpose**
- pihole perform internal routine and backup of database and configuration to archive
- pihole database will grow over time; move db to archive
- pihole perform internal routine; backup config to archive
- internal log writing; time in ist;

**how to use**
- just copy file to pihole /home/pi/
- run this python script in terminal or via crontab

**terminal**
- run in terminal ```"sudo python3 /home/pi/pihole_backup.py"```

**crontab**
- user pi; root not required
- crontab -e edit; crontab -l check
- set your desired interval via crontab preferred e.o.d 23:59
- add to crontab ```"59 23 * * * sudo python3 /home/pi/pihole_backup.py"```

**requirements**
- pytz for timezone
- sudo apt-get install python3-pip
- sudo pip install pytz

**process**
- get stats -> stop ftl -> backup db -> start ftl -> backup config -> flush -> update

**0.0 pihole version; stats; token**
- 0.1 get pihole version
- 0.2 get pihole stats
- 0.3 get pihole api token

**1.0 pihole move db to archive**
- 1.1 pihole folder
- 1.2 stop FTL service
- 1.3 get file size
- 1.4 folder name
- 1.5 move to folder; rename
- 1.6 start FTL service

**2.0 pihole perform internal routine**
- 2.1 backup configuration
- 2.2 flush pihole.log
- 2.3 flush network table
- 2.4 update gravity aka adlist
- 2.5 update pi-hole aka all

**pihole folders; files**
- pihole folder /etc/pihole/
- pihole ftl db /etc/pihole/pihole-FTL.db
- archive /home/pi/pihole_bkp/
- database /home/pi/pihole_bkp/Y/Ym/pihole-FTL_Ymd_HMS.db
- config /home/pi/pihole_bkp/Y/Ym/pihole-conf_Ymd_HMS.tar.gz
- bkplog /home/pi/pihole_bkp/Y/Ym/pihole_bkp_log_Ymd_HMS.txt

**pihole useful commands**
- pihole -v display version of each service
- pihole -v -a display version of AdminLTE
- pihole -v -f display version of FTL
- pihole -v -p display version of pi-hole
- pihole -a -t backup config teleporter to archive
- pihole -f flush pihole.log
- pihole arpflush flush network table
- pihole -g update gravity aka adlist
- pihole -up update pihole version

**tweak to get stats without login**
- get stats from /pihole instead of /admin
- keep old version of pi-hole 'AdminLTE v5.13' in /home/pi/AdminLTE-5.13
- copy entire 'AdminLTE-5.13' folder to /var/www/html/pihole
- ```sudo cp -a /home/pi/AdminLTE-5.13/. /var/www/html/pihole```
- AdminLTE v5.13 and below -> /var/www/html/pihole -> no login required
- AdminLTE v5.14 and above -> /var/www/html/admin -> login or API Token required

**authentication for more API endpoints required**
- in order to avoid the above; follow the below!
- https://discourse.pi-hole.net/t/upcoming-changes-authentication-for-more-api-endpoints-required/59315
- https://pi-hole.net/blog/2022/11/17/upcoming-changes-authentication-for-more-api-endpoints-required/#page-content
- You can get the token from Settings/API/Show API token or from /etc/pihole/setupVars.conf (WEBPASSWORD).
- /admin/api.php?summaryRaw
- /admin/api.php?summaryRaw&auth=\

**pihole api token**
- get api token from file

**footnote**
- let me know if you find any bugs!
- Thank you mahemys