https://github.com/rcasto/pi-up
Update a Raspberry Pi using a custom script on a desired schedule and be notified of results
https://github.com/rcasto/pi-up
pi-hole raspberry-pi raspberrypi scheduled-task
Last synced: about 2 months ago
JSON representation
Update a Raspberry Pi using a custom script on a desired schedule and be notified of results
- Host: GitHub
- URL: https://github.com/rcasto/pi-up
- Owner: rcasto
- License: mit
- Created: 2019-09-17T07:03:00.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2023-05-06T19:24:21.000Z (about 3 years ago)
- Last Synced: 2025-10-09T17:04:03.239Z (9 months ago)
- Topics: pi-hole, raspberry-pi, raspberrypi, scheduled-task
- Language: JavaScript
- Homepage:
- Size: 38.1 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pi-up
The goal of this project is to execute a custom update script on a Raspberry Pi according to a desired schedule and be notified of the results.
## Background
Truthfully, this project could be used to execute any custom script on a Raspberry Pi according to a desired schedule.
The primary focus with this project though, is to update a Raspberry Pi. Also, this project currently assumes the Raspberry Pi is running Pi-hole and will attempt to update that as well.
## Usage
### Prerequisites
- Must have SSH access to Raspberry Pi
- Must know the IP address of your Raspberry Pi
- [Git](https://git-scm.com/downloads) must be installed: `apt-get install git`
- [Node.js](https://nodejs.org/en/download/) must be installed on Raspberry Pi
- Must have sendmail package installed: `apt-get install sendmail`
### Configuration
To get started you will want to update the `config.json` file in this repo. Below is a sample configuration:
```json
{
"scheduleCron": "0 0 18 * * *",
"runOnInit": true,
"scriptPath": "/home/pi/pi-up/custom-update.sh",
"email": "your-email@address.com"
}
```
- **scheduleCron** - crontab describing schedule of which to run update script. [6 fields supported, finest granularity being 1 second](https://www.npmjs.com/package/cron#available-cron-patterns).
- **runOnInit** - Whether or not the update script should be ran on initialization of schedule or not. When false, first run will happen on next scheduled occurrence.
- **scriptPath** - Path to custom script containing update routine. It's much safer to use the exact path, instead of a relative path to the script.
- **email** - Optional field for email address, email is sent to this address with results of update routine. Simply leave empty to not send an email.
- **name** - Optional field to identify your Raspberry Pi, this will be included in the subject of the email sent to you.
### Starting scheduled update
1. SSH into Raspberry Pi
```
ssh pi@
```
2. Git clone this repo (on Raspberry Pi):
```
git clone https://github.com/rcasto/pi-up
```
3. Change directory into repository folder:
```
cd pi-up
```
4. Install npm package dependencies:
```
npm install
```
5. Adjust configuration and script to your liking
6. Start update schedule:
```
npm start
```
### Running on Raspberry Pi bootup
Edit `/etc/rc.local`, adding:
```
node /home/pi/pi-up/index.js &
```
**Note:** You will want to have changed your `scriptPath` in the configuration to use an exact path.
### Resources
- [SSH Raspberry Pi](https://www.raspberrypi.org/documentation/remote-access/ssh/)
- [Install Node.js and Npm on Raspberry Pi](https://github.com/nodesource/distributions/blob/master/README.md#debinstall)
- [Helpful crontab scheduling editor](https://crontab.guru/)
- [Run command on Raspberry Pi bootup](https://www.raspberrypi.org/documentation/linux/usage/rc-local.md)
- [Pi-hole](https://pi-hole.net/)
- [Big Blocklist Collection](https://firebog.net/)