Cockpit Blog

Sharing news, knowledge and ideas.

Cockpit is looking for sponsors and donations!

13 May, 2016

Open source is awesome, and I’m excited and happy that Cockpit is helping more and more people to manage and publish content. However, as the project grows, pushing new features while maintaining everything becomes a very demanding job. The problem is, that Cockpit doesn't pay any bills. And it is pretty hard to manage the balancing act between work on Cockpit, contract work and family.

I tried to generate some additional income with COCOPi - but until now it wasn't really successfull.

If you run a business and use Cockpit in a money making service or product, it would make business sense for you to sponsor Cockpit development. It ensures the project that your product relies on stays healthy and actively maintained.

If you are using Cockpit for private projects and have enjoyed the productivity of using Cockpit, consider donating as a nice gesture - like buying me a coffee ;)

In either case, you can help with recurring funding through Cockpit’s Patreon campaign or with one-time donations via PayPal.

There are many ideas for Cockpit that I have in mind but haven’t had the time to work on, and I would really love to get more things done - I hope you can help me to make that happen!

In the end the math is pretty simple. The more financial support I receive, the more time I get to spend on making Cockpit better instead of working on contract work.



Cockpit is dead long live Cockpit (Next)

17 Mar, 2016

First of all, I'm sorry for the long silence. The last post is nearly a year ago but many things did happen since then. Cockpit Next is doing pretty well, I'm quite happy with it's current status.

As I mentioned before, Angular is gone and RiotJs filled the gap. It is simple and very easy to implement. I like it so far and can recommend it.

So what's new in Cockpit Next?

The gallery module is gone. Why? Because it is in general just a collection with a repeatable image field.

All schemas for collections, regions etc. are now stored in files. This makes it easy to backup and reuse a project skeleton.

A completely reworked field manager.


A more customizable dashboard


Any many more things. I hope to publish a release candidate soon.

So what about the current Cockpit version?

Well, if you didn't already know, this is (still) almost a one man project. It's sad but I don't have time to maintain two versions. As a result I stopped any development on the current official Cockpit. I'm happy to merge pull requests but I won't invest any development time in it anymore.

That's it for now. Let's hope that the next post won't take that long again.

Cockpit Next


Announcing Cockpit Next!

01 May, 2015

I have to admit that there wasn't any notable updates for Cockpit since the last release. The cause for this is that I'm not happy with the current implementation anymore.

A big issue for me is Angular.

Don't get me wrong, Angular is one of the coolest thing around for front-end development. But I'm not sure about the direction they take with Angular 2.0 and the complexity it brings. To be honest, I don't want to setup pre-compilers, gulp/grunt etc. just to do simple dynamic views.

One of my main goals is to grow the eco-system for modules around Cockpit and everybody should be able to build stuff just by investigating the core modules without learning about services, dependency injection, @-script etc. first.

KISS - Keep It Simple and Stupid, was and is the main principle behind the development idea of Cockpit, so back to the roots.

I'll rewrite Cockpit and will replace Angular with Riot.js, a simple and lightweight UI library building dynamic and reusable web components. I like the progress so far and hope you'll too. So please be patient, something great is in the making.


Inject custom css in the backend

27 Feb, 2015

I was asked several times how to apply custom styling to the backend without creating a custom module. I'll describe the easiest solution:

  1. Create a custom bootstrap file in the custom folder cockpit/custom/bootstrap.php
  2. Create a stylesheet file in the custom folder which we want to inject, e.g. cockpit/custom/admin.css

No let's edit cockpit/custom/bootstrap.php :


    $app->on('app.layout.header', function() {
        echo $this->assets(['custom:admin.css']);

That's it. Have fun with Cockpit.


Data Security

09 Feb, 2015

By default Cockpit uses SQLite as its default storage engine. All *.sqlite db files are stored in storage/data. SQLite stores its data in a binary file format directly on the disk which are accessible / downloadable like any other resource on the internet if you know the direct url. What a horrible idea, right?

Here are some tips how to secure your data:

If you're using Apache as your webserver then you should be pretty save because Cockpit comes already with some precautions to prevent SQLite files to be downloaded by setting some protection rules via .htaccess files. So please make that overrides via .htaccess files are enabled.

If you're using nginx just add the following rule to your server configuration:

location ~ .sqlite$ {
    deny all;

If you feel completely uncomfortable having your database files inside the webroot then just override the default Cockpit configuration by defining a custom storage path:

// custom/config.php

return [
    'paths' => [
        'data' => '/my/custom/storage/path'

Please make sure that your data is save and check your server configuration.

  • 1
  • 2