State of this fork #445
Replies: 3 comments 1 reply
-
|
Hi, first things first: of course is this a 💎 ;-) When we started the fork, 1 year ago, we had this description: included all the open PRs and fixed the most annoying issues, that was it all. But over the past year we added much more to it, and we also had to fork the underlying cron lib (robfig/cron to netresearch/go-cron), as it seemed abandoned too, so for security and stability you should definitely use this 💎. |
Beta Was this translation helpful? Give feedback.
-
Complete Changes Since Fork (from
|
| Feature | Description |
|---|---|
| Web UI | Full web interface with job management, real-time status, timezone preferences |
| Authentication | JWT auth system, Docker registry auth via config.json, web auth checks |
| Job Dependencies | Workflow orchestration with @triggered schedules |
| Compose Jobs | New job-compose type for Docker Compose services |
| Webhooks | Generic webhook notifications with ntfy preset support |
| CLI Enhancements | ofelia init wizard, ofelia doctor diagnostics, config introspection |
| Run-on-startup | Jobs can run immediately on scheduler start |
| History Persistence | Job execution history saved and restored across restarts |
| Extended Cron | Integrated netresearch/go-cron with seconds and @triggered support |
✨ Notable Features
- Config validation with unknown key detection
- Container annotations for RunJob/RunServiceJob
- WorkingDir support for ExecJob
- Configurable default user for jobs
- Docker Compose service names for job naming
- Config glob patterns support
- Environment variable overrides
- Progress indicators for long-running operations
- Notification deduplication (Slack/Mail)
- Skipped trigger and custom email subject
- Config file hot-reload (only on change)
🔒 Security Improvements
- SLSA Level 3 provenance for binaries
- SBOM generation (GoReleaser)
- Path sanitization middleware
- Privilege escalation prevention logging
- Cookie security for reverse proxies
- CVE fixes (golang.org/x/crypto)
- Comprehensive security documentation
🐛 Key Fixes
- Race conditions in scheduler (mutex protection)
- Panic recovery in job execution
- Nil pointer dereference fixes
- Docker SDK race condition on API version negotiation
- Docker container name slash stripping
- Mail: skip empty stdout/stderr attachments
- Config: inherit global mail/slack settings in job configs
- Labels: honor explicit container in job-exec labels
- Backward compatibility with ENTRYPOINT/CMD structure
🧪 Testing & Quality
- Migration from gocheck to testify
- Mutation testing with Gremlins
- Test coverage increased to 72.3%
- CronClock for instant test time control
- E2E test suite
- Fuzz testing
- Benchmark tests for Docker SDK adapter
📦 Infrastructure
- Go 1.22 → 1.25.5
- Alpine 3.21 → 3.23
- Tini for zombie process reaping
- OCI image annotations
- Platform-specific image tags
- Codecov integration
- GitHub Actions CI with quality gates
- Lefthook for git hooks
📚 Documentation
- Architecture diagrams
- ADRs (Architecture Decision Records)
- Security policy & boundaries
- Governance docs (OpenSSF compliance)
- Detailed configuration guides
- Roadmap and release process docs
📦 Dependencies (consolidated)
netresearch/go-cronv0.5.0 → v0.7.1 (replacingrobfig/cron)go-dockerclient→ v1.12.2- Docker SDK updates
- Various security patches
Beta Was this translation helpful? Give feedback.
-
|
Caution Warning don't use this fork, it's not 🇩🇪 but vibe coded 🐄💩 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi, I just stumbled across this fork and am wondering if I should use it.
It seems like it includes various improvement over the original mcuadros/ofelia unfortunately there seems no clear overview on how exactly this fork differs from the original project. Maybe it would be worth to add a section to the readme about this? If the differences are as vast as they seem to be, it might even be worth to give the project a new name to avoid confusion?
I am currently using another fork: PremoWeb/chadburn - but unfortunately it seems to be abandoned.
My reason for going with a fork in the first place was because the original ofelia would not react on new or stopped containers without being restarted itself. From reading your readme, that seems to be fixed here? (maybe it has been addressed in upstream ofelia as well in the meantime?)
Sorry, I feel this is a bit of an incoherent post. Basically I am curious to figure out if I stumbled upon a gem here.
Beta Was this translation helpful? Give feedback.
All reactions