Files
donetick-notifier/README.md
T
kelly 7bce5cabc9
Security / security (push) Failing after 1m1s
first attempt at a webhook consumer
2026-05-30 19:54:46 -05:00

147 lines
4.5 KiB
Markdown

# donetick-notifier
A small PowerShell notifier for [Donetick](https://github.com/donetick/donetick) chores.
The notifier checks the Donetick external API for chores, groups tasks that are overdue or due today, and sends summary notifications through an Apprise-compatible webhook.
## What it does
- Fetches chores from `https://<DONETICKHOST>:<DONETICKPORT>/eapi/v1/chore`.
- Authenticates to Donetick with the `secretkey` header.
- Sends one Apprise notification for overdue tasks, when any exist.
- Sends one Apprise notification for tasks due today, when any exist.
- Runs continuously and sleeps until the next configured notification hour.
The container is intended to stay running. Configure the notification hours with `NOTIFICATIONTIMES`; the script wakes up at those hours, checks chores, sends any needed notifications, then sleeps until the next configured hour.
## Configuration
All configuration is provided through environment variables.
| Variable | Required | Description |
| --- | --- | --- |
| `DONETICKHOST` | Yes | Donetick host name or IP address. Do not include `https://`. |
| `DONETICKPORT` | Yes | Donetick HTTPS port. |
| `DONETICKAPIKEY` | Yes | Donetick external API key. Sent as the `secretkey` header. |
| `APPRISEWEBHOOKURL` | Yes | Apprise webhook URL that accepts notification posts. |
| `APPRISEWEBHOOKTAG` | Yes | Apprise tag value to include with each notification. |
| `NOTIFICATIONTIMES` | No | Comma-separated list of 24-hour clock hours when notifications should be sent, such as `8,12,17`. Defaults to `8` when unset. |
| `TZ` | No | Container timezone, such as `America/Chicago`. Recommended so notification hours match your local time. |
## Docker
The published image is:
```text
docker.io/blinkfink182/donetick-notifier
```
### Run
```sh
docker run -d \
--name donetick-notifier \
-e DONETICKHOST=host.docker.internal \
-e DONETICKPORT=8787 \
-e DONETICKAPIKEY=your-donetick-api-key \
-e APPRISEWEBHOOKURL=https://apprise.example.com/notify/config \
-e APPRISEWEBHOOKTAG=all \
-e NOTIFICATIONTIMES=8,12,17 \
-e TZ=America/Chicago \
docker.io/blinkfink182/donetick-notifier
```
### Docker Compose
```yaml
services:
donetick-notifier:
container_name: donetick-notifier
image: docker.io/blinkfink182/donetick-notifier
environment:
- DONETICKHOST=host.docker.internal
- DONETICKPORT=8787
- DONETICKAPIKEY=your-donetick-api-key
- APPRISEWEBHOOKURL=https://apprise.example.com/notify/config
- APPRISEWEBHOOKTAG=all
- NOTIFICATIONTIMES=8,12,17
- TZ=America/Chicago
```
Run it with:
```sh
docker compose up -d
```
If Donetick and Apprise are running on the same Docker network, use the service names instead of `host.docker.internal`.
```yaml
services:
donetick-notifier:
image: docker.io/blinkfink182/donetick-notifier
environment:
- DONETICKHOST=donetick
- DONETICKPORT=8787
- DONETICKAPIKEY=your-donetick-api-key
- APPRISEWEBHOOKURL=http://apprise:8000/notify/config
- APPRISEWEBHOOKTAG=all
- NOTIFICATIONTIMES=8,12,17
- TZ=America/Chicago
```
## Build Locally
```sh
docker build -t donetick-notifier .
```
```sh
docker run -d \
--name donetick-notifier \
-e DONETICKHOST=host.docker.internal \
-e DONETICKPORT=8787 \
-e DONETICKAPIKEY=your-donetick-api-key \
-e APPRISEWEBHOOKURL=https://apprise.example.com/notify/config \
-e APPRISEWEBHOOKTAG=all \
-e NOTIFICATIONTIMES=8,12,17 \
-e TZ=America/Chicago \
donetick-notifier
```
## Run Without Docker
PowerShell 7 or newer is recommended.
```powershell
$env:DONETICKHOST = "donetick.example.com"
$env:DONETICKPORT = "8787"
$env:DONETICKAPIKEY = "your-donetick-api-key"
$env:APPRISEWEBHOOKURL = "https://apprise.example.com/notify/config"
$env:APPRISEWEBHOOKTAG = "all"
$env:NOTIFICATIONTIMES = "8,12,17"
pwsh ./Start-DoneTickNotifier.ps1
```
The script runs continuously. Stop it with `Ctrl+C` when running interactively.
## CI/CD
This repository includes Gitea workflows for:
- Building and pushing the Docker image on demand.
- Running security checks with Gitleaks, Semgrep, and Trivy.
- Creating Gitea issues for security findings when configured with a `GITEA_TOKEN`.
- Sending Apprise notifications for Docker build success or failure.
The security workflow runs on pushes, pull requests, and manual dispatch. On pushes, it also pushes the scanned Docker image when all checks pass.
Docker images are tagged as:
| Branch or ref | Image tag |
| --- | --- |
| `main` | `latest` |
| refs beginning with `v` | matching ref name, such as `v1.0.0` |
| all other refs | `test` |