Abstract
The Devilbox is currently being developed in my spare time and mostly reflects the features that I am using for all the web projects I have to handle. In order to better present it to the majority of other software developers I do require support to cope with all the feature requests.
So first of all, If the Devilbox makes your life easier, star it on GitHub!
Table of Contents
There are various areas that need support. If you are willing to help, pick a topic below and start contributing. If you are unclear about anything, let me know and I will clarify.
See the general ROADMAP for what is planned.
Required knowledge: Sphinx
- General improvement of the documentation (typos, grammar, etc)
- Better documentation for setting up Xdebug
- More how to's on how to setup a specific framework or CMS
- General how to's and blog posts
Required knowledge: Docker, Ansible, Apache, Nginx, MySQL, PHP-FPM
- Consolidate MySQL, PerconaDB and MariaDB into one repository for easier change management
- Consolidate Nginx and Apache into one repository for easier change management
- Performance improvements on Apache/Nginx and PHP-FPM
- Add new container to the stack
Required knowledge: Various
Have a look at the GitHub issues and see if you can implement any features requested
Required knowledge: PHP, HTML, CSS and Javascript
- Fix email view: cytopia#337
- Better and more modern layout
- Try to remove as much vendor dependencies as possible
Adminer requires some adjustments to work with the Devilbox intranet. See below for files to adjust:
adminer-x.y.z-en.php
- login($_e,$E){if($E=="")return
+ login($_e,$E){return true;if($E=="")return
phpMyAdmin requires some adjustments to work with the Devilbox intranet. See below for files to adjust:
config.inc.php
+ error_reporting(0);
- $cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
+ $cfg['TempDir'] = '/tmp';
+ $cfg['CheckConfigurationPermissions'] = false;
+ $cfg['blowfish_secret'] = 'a;guurOrep[[hoge7p[jgde7reouHoy5590hjgffuJ676FGd434&%*09UJHogfT%$#F64';
- /* Authentication type */
- $cfg['Servers'][$i]['auth_type'] = 'cookie';
- /* Server parameters */
- $cfg['Servers'][$i]['host'] = 'localhost';
- $cfg['Servers'][$i]['compress'] = false;
- $cfg['Servers'][$i]['AllowNoPassword'] = false;
+ /* Authentication type */
+ if (getenv('DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN') == 1) {
+ $cfg['Servers'][$i]['auth_type'] = 'config';
+ $cfg['Servers'][$i]['user'] = 'root';
+ $cfg['Servers'][$i]['password'] = getenv('MYSQL_ROOT_PASSWORD');
+ } else {
+ $cfg['Servers'][$i]['auth_type'] = 'cookie';
+ }
+ /* Server parameters */
+ $cfg['Servers'][$i]['host'] = 'mysql';
+ $cfg['Servers'][$i]['connect_type'] = 'tcp';
+ $cfg['Servers'][$i]['compress'] = false;
+ $cfg['Servers'][$i]['AllowNoPassword'] = true;
- //$cfg['SendErrorReports'] = 'always';
+ $cfg['SendErrorReports'] = 'never';
phpRedmin requires some adjustments to work with the Devilbox intranet. See below for files to adjust:
config.dist.php
+ // Check if redis is using a password
+ $REDIS_ROOT_PASSWORD = '';
+
+ $_REDIS_ARGS = getenv('REDIS_ARGS');
+ $_REDIS_PASS = preg_split("/--requirepass\s+/", $_REDIS_ARGS);
+ if (is_array($_REDIS_PASS) && count($_REDIS_PASS)) {
+ // In case the option is specified multiple times, use the last effective one.
+ $_REDIS_PASS = $_REDIS_PASS[count($_REDIS_PASS)-1];
+ if (strlen($_REDIS_PASS) > 0) {
+ $REDIS_ROOT_PASSWORD = $_REDIS_PASS;
+ }
+ }
- 'database' => array(
- 'driver' => 'redis',
- 'mysql' => array(
- 'host' => 'localhost',
- 'username' => 'root',
- 'password' => 'root'
- ),
- 'redis' => array(
- array(
- 'host' => 'localhost',
- 'port' => '6379',
- 'password' => null,
- 'database' => 0,
- 'max_databases' => 16, /* Manual configuration of max databases for Redis < 2.6 */
- 'stats' => array(
- 'enable' => 1,
- 'database' => 0,
- ),
- 'dbNames' => array( /* Name databases. key should be database id and value is the name */
- ),
- ),
- ),
- ),
+ 'database' => array(
+ 'driver' => 'redis',
+ 'mysql' => array(
+ 'host' => 'mysql',
+ 'username' => 'root',
+ 'password' => getenv('MYSQL_ROOT_PASSWORD')
+ ),
+ 'redis' => array(
+ array(
+ 'host' => 'redis',
+ 'port' => '6379',
+ 'password' => $REDIS_ROOT_PASSWORD,
+ 'database' => 0,
+ 'max_databases' => 16, /* Manual configuration of max databases for Redis < 2.6 */
+ 'stats' => array(
+ 'enable' => 1,
+ 'database' => 0,
+ ),
+ 'dbNames' => array( /* Name databases. key should be database id and value is the name */
+ ),
+ ),
+ ),
+ ),
libraries/drivers/db/redis.php
- if (isset($config['password'])) {
- $this->auth($config['password']);
- }
+ if (isset($config['password']) && strlen($config['password'])>0) {
+ $this->auth($config['password']);
+ }
phpPgAdmin requires some adjustments to work with the Devilbox intranet. See below for files to adjust:
conf/config.inc.php
- $conf['servers'][0]['host'] = '';
+ $conf['servers'][0]['host'] = 'pgsql';
- $conf['extra_login_security'] = true;
+ $conf['extra_login_security'] = false;
+ // ---- Auto-login
+ if (getenv('DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN') == 1) {
+ $_REQUEST['server']= 'pgsql:5432:allow';
+ if(session_id() == ''){
+ //session has not started
+ session_name('PPA_ID');
+ session_start();
+ }
+ $_SESSION['sharedUsername'] = getenv('PGSQL_ROOT_USER');
+ $_SESSION['sharedPassword'] = getenv('PGSQL_ROOT_PASSWORD');
+ }
+ // ---- end of Auto-login
libraries/lib.inc.php
- error_reporting(E_ALL);
+ error_reporting(E_ERROR | E_WARNING | E_PARSE);
- if (!ini_get('session.auto_start')) {
- session_name('PPA_ID');
- session_start();
- }
+ if (!strlen(session_id()) > 0) {
+ session_name('PPA_ID');
+ session_start();
+ }
libraries/adodb/drivers/adodb-postgres64.inc.php
- function ADODB_postgres64()
+ function __construct()
libraries/adodb/drivers/adodb-postgres7.inc.php
- function ADODB_postgres7()
+ public function __construct()
{
- $this->ADODB_postgres64();
+ parent::__construct();
Required knowledge: Travis-CI
- Shorten CI test time for faster releases
- Rewrite current tests, write new tests
If you want to contribute on a regular base and take care about major feature development you can be invited to the GitHub organization.
This however requires some prerequisites:
- Willing to dedicate a regular amount of time to invest in this project
- Already spent a decent amount of time in improving the Devilbox
- A good understanding about the Devilbox
- A good understanding about the PHP-FPM container (and how it is built with Ansible)