Daybreak is a self-hosted security news aggregator for fast daily monitoring. It combines curated security headlines, ransomware activity, and CVE updates in one server-rendered dashboard.
| Item | Value |
|---|---|
| Stack | PHP 8.3, MariaDB 10.11+, Apache 2.4 |
| Rendering model | Server-rendered templates (no SPA build pipeline) |
| Public pages | Feed, Sources analytics, legal pages |
| Authenticated pages | Personal feed, source preferences, account settings, source suggestions |
| Admin pages | Source management, moderation queue, feed health, user admin, audit log |
| Adapters | rss_atom, json_api, ransomlook, nvd |
- Specification:
docs/SPEC.md - Implementation plan:
docs/IMPLEMENTATION.md - Apache vhost example:
deploy/apache-vhost.conf - Test runner:
tests/run.php
- Main feed with category and time-window filtering
- Sources analytics page
- Ransomware activity widget
- CVE widget with severity cues
- Legal pages (Imprint, Terms, Privacy)
- Registration and email verification
- Login, password reset, account settings
- Source preference management
- Personalized feed behavior
- Source suggestion submission
- Source CRUD and fetch controls
- Suggestion moderation queue
- Feed health and operations dashboard
- User administration and audit log
- Prepared statements for database access
- CSRF checks on state-changing requests
- SSRF-safe outbound fetching via guarded fetcher
- Sanitized feed summaries and escaped output
- Strict security headers on responses
cp config/.env.example config/.env
# then edit DB and SMTP settings in config/.env
# create DB and least-privileged DB user first, then:
php migrations/run.php
php bin/fetch.php --force
php bin/prune.php
# configure Apache DocumentRoot to public/
# see deploy/apache-vhost.confInitial/Manual fetch:
php bin/fetch.php --forceManual maintenance prune:
php bin/prune.phpCron (every 5 minutes):
*/5 * * * * php /srv/vhosts/daybreak.silverday.de/bin/fetch.phpMaintenance cron (daily at 03:00):
0 3 * * * php /srv/vhosts/daybreak.silverday.de/bin/prune.phpRun tests:
php tests/run.phpGitHub Actions runs:
php tests/run.phpphp -lforbin/,public/,src/, andtests/
Ransomlook data is sourced from ransomlook.io and attributed in the UI under CC BY 4.0.