PHPackages                             kunstmaan/skylab - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. kunstmaan/skylab

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

kunstmaan/skylab
================

Skylab is a 100% backwards compatible PHP port of the Python based hosting scripts used at Kunstmaan. By using the Cilex, Symfony Components and lot's of good code samples from the Composer project we hope to create an application where everyone in our organisation can work with, and if issues or new needed features should arise, be able to work on.

2.2.3(7y ago)112812[8 issues](https://github.com/Kunstmaan/skylab/issues)MITPHP

Since Dec 19Pushed 7y ago14 watchersCompare

[ Source](https://github.com/Kunstmaan/skylab)[ Packagist](https://packagist.org/packages/kunstmaan/skylab)[ RSS](/packages/kunstmaan-skylab/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (10)Dependencies (18)Versions (59)Used By (0)

Skylab
======

[](#skylab)

Skylab is a 100% backwards compatible PHP port of the Python based hosting scripts used at Kunstmaan. By using the Cilex, Symfony Components and lots of good code samples from the Composer project we hope to create an application that everyone in our organisation can work with, and if issues or new needed features should arise, be able to work on.

Kunstmaan wouldn't be Kunstmaan if we didn't open-source this, so here it is. [MIT licensed](./LICENSE).

Installation
------------

[](#installation)

To install Skylab, run this command:

```
$ curl -sSL https://raw.github.com/Kunstmaan/skylab/master/installer | php

```

This will just check a few PHP settings and then download skylab.phar to your working directory. This file is the Skylab binary. It is a PHAR (PHP archive), which is an archive format for PHP which can be run on the command line, amongst other things.

You can install Skylab to a specific directory by using the --install-dir option and providing a target directory (it can be an absolute or relative path):

```
$ curl -sSL https://raw.github.com/Kunstmaan/skylab/master/installer | php -- --install-dir=/bin

```

You can also install Skylab globally by running:

```
$ curl -sSL https://raw.github.com/Kunstmaan/skylab/master/installer | php
$ mv skylab.phar /usr/local/bin/skylab

```

Configuration
-------------

[](#configuration)

You can override the [default configuration](./config.yml) by creating a file /etc/skylab.yml and give it a secure chmod

```
sudo chmod 700 /etc/skylab.yml

```

For example if you installed skylab on a developer OSX machine:

```
users:
    wwwuser:        apache

webserver:
    engine: apache
    hostmachine: XXXXX.kunstmaan.be

mysql:
    user:     root
    password: XXXXXXXXX

postgresql:
    user:     postgres
    password: XXXXXXXXX

debug: true
develmode: true

```

Or on an ubuntu system:

```
users:
    wwwuser: www-data

webserver:
    engine: apache
    hostmachine: XXXXX.kunstmaan.be

mysql:
    user:     root
    password: XXXXXXXXX

postgresql:
    user:     postgres
    password: XXXXXXXXX

debug: true
develmode: true

```

Special Skeletons
-----------------

[](#special-skeletons)

### SSL skeleton

[](#ssl-skeleton)

The `ssl` skeleton can be used to configure the SSL configurations in apache via the config.xml

You start by adding `` to the skeletons in config.xml. Then you need to add `` to the config.xml to configure the SSL configuration.

You can specify different SSL configuration that has to be used per environment. The syntax for each environment is the same

```

```

Example (we assume three environments (dev,staging,prod)).

```

```

Which ssl configuration will be used depends on the value `env` in you skylab.yml file. Locally you should have `env: dev` in you skylab.yml configuration file. If you do then when running maintenance it will add the dev SSL config in apache.

\###Letsencrypt skeleton The `letsencrypt` skeleton can be used to generate ssl certificates for your site using the Let's Encrypt service.

To enable the use of letsenecrypt you have to add `` to the config.xml.

The skeleton will create a ssl certificate for the urls `project.url` and all the aliases in `project.aliases`.

IMPORTANT NOTES:

1. The letsencrypt skeleton will run the command only on a production server.
2. Make sure the urls resolve to the IP where the command will run, otherwise it will fail.
3. You can use the `ssl` and `letsencrypt` skeletong together, BUT when enabling both the skeletons you must remove the prod ssl config. If the prod ssl config is available it will use that config instead of running letsencrypt.
4. The letsencrypt skeleton also creates a cronjob to renew the certs (e.g. 0 0 \* \* 0 letsencrypt --apache -n certonly -d myproject.com)

Commands
--------

[](#commands)

### NewProjectCommand

[](#newprojectcommand)

Usage: `php skylab.phar new [--hideLogo] [--no-interactive] [--] []`

The `new` command creates a new project. It will setup the directory structure and apply the "base" skeleton which is responsible for setting up users, permissions and ownership.

`php skylab.phar new``php skylab.phar new testproject`

Full details at [doc/NewProjectCommand.md](doc/NewProjectCommand.md)

### FetchCommand

[](#fetchcommand)

Usage: `php skylab.phar fetch [--hideLogo] [--no-interactive] [-l|--location [LOCATION]] [--no-database] [--] [] []`

The `fetch` command fetches a Skylab project from a server and puts it in the right locations on your computer. It will also drop the databases, so be very careful if you want to use this on a production server to do a migration.

`php skylab.phar fetch` # Will ask for a project and server to fetch it from `php skylab.phar fetch testproject server1` # Will fetch the testproject from server1

Full details at [doc/FetchCommand.md](doc/FetchCommand.md)

### ShareCommand

[](#sharecommand)

Usage: `php skylab.phar share [--hideLogo] [--no-interactive]`

The `share` command shows a table of all your locally installed projects together with the xip.io url.

`php skylab.phar share` # Will show the xip.io table

Full details at [doc/ShareCommand.md](doc/ShareCommand.md)

### SetPermissionsCommand

[](#setpermissionscommand)

Usage: `php skylab.phar permissions [--hideLogo] [--no-interactive] [--] `

The `permissions` command will fix the permissions of a project.

`php skylab.phar permissions testproject`

Full details at [doc/SetPermissionsCommand.md](doc/SetPermissionsCommand.md)

### MaintenanceCommand

[](#maintenancecommand)

Usage: `php skylab.phar maintenance [--hideLogo] [--no-interactive] [--quick]`

The `maintenance` command will run the maintenance commands of all skeletons on a project. Most notably, it will create the apache config files and make sure the the databases are available.

`php skylab.phar maintenance`

Full details at [doc/MaintenanceCommand.md](doc/MaintenanceCommand.md)

### BackupCommand

[](#backupcommand)

Usage: `php skylab.phar backup [--hideLogo] [--no-interactive] [--quick] [--] []`

The `backup` command will dump all your databases and create a tarball of one or all projects.

```
php skylab.phar backup  # Will backup all projects

```

```
php skylab.phar backup myproject  # Will backup the myproject project

```

```
php skylab.phar backup myproject --quick # Will backup the myproject project, but not create the tar file.

```

```
php skylab.phar backup myproject --quick --anonymize # Will backup the myproject project, but not create the tar file, and anonymize the database with the edyan/neuralizer package.

```

Full details at [doc/BackupCommand.md](doc/BackupCommand.md)

### RemoveProjectCommand

[](#removeprojectcommand)

Usage: `php skylab.phar remove [--hideLogo] [--no-interactive] [--force] [--no-backup] [--] []`

The `remove` command will remove the project after creating a backup first.

`php skylab.phar remove testproject` # Will remove the testproject project `php skylab.phar remove testproject --force` # Will do the same, but don't ask you if you are sure.

Full details at [doc/RemoveProjectCommand.md](doc/RemoveProjectCommand.md)

### ApplySkeletonCommand

[](#applyskeletoncommand)

Usage: `php skylab.phar apply [--hideLogo] [--no-interactive] [-l|--list] [--] [] []`

The `apply` command applies a skeleton, and all it's dependencies to a project. It will run the "create" method in the skeleton to setup all the requirements for that skeleton.

`php skylab.phar apply -l` # Lists all available skeletons `php skylab.phar apply` # Will ask for a project and skeleton to apply `php skylab.phar apply testproject anacron` # Will apply the anacron skeleton to testproject

Full details at [doc/ApplySkeletonCommand.md](doc/ApplySkeletonCommand.md)

### SelfUpdateCommand

[](#selfupdatecommand)

Usage: `php skylab.phar self-update [--hideLogo] [--no-interactive] [-d|--dev] [-N|--non-dev] [-p|--pre] [-s|--stable] [-r|--rollback] [-c|--check]`

The `self-update` command will check if there is an updated skylab.phar released and updates if it is.

`php skylab.phar self-update`

Full details at [doc/SelfUpdateCommand.md](doc/SelfUpdateCommand.md)

Compiling a new version
-----------------------

[](#compiling-a-new-version)

1. First, make sure everything works and the Travis tests are green [![Build Status](https://camo.githubusercontent.com/2a0cf9bb0f9f9d047fd686d7568564afddbca50244032fa28369634d8127532d/68747470733a2f2f7472617669732d63692e6f72672f4b756e73746d61616e2f736b796c61622e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/Kunstmaan/skylab)
2. Generate an updated changelog using `git changelog` from [git-extras](https://github.com/visionmedia/git-extras)
3. Commit this new changelog
4. Create a new release from the Github interface, add the new changelog part in the description and name the release for [the next brightst star in this list](http://en.wikipedia.org/wiki/List_of_brightest_stars)
5. download [box.par](https://github.com/box-project/box2) to create the new version
6. Build a new version using box.phar box.phar build -v. Note: make sure you have pulled in the latest tag!!
7. Add the new phar file to the release on GitHub
8. Update [packagist](https://packagist.org/packages/kunstmaan/skylab)

Modifying the documentation
---------------------------

[](#modifying-the-documentation)

1. Most text is in `gen-doc`, edit what you want there.
2. Everything in doc/ is generated, same goes for everything in README.md under Commands
3. Run `./gen-doc > README.md` to update the docs
4. Send a pull request

Contributing
------------

[](#contributing)

1. Fork Skylab
2. Do your thing, and send a Pull Request. But please make sure Travis is green and your code has been run through php-cs-fixer!

[![Scrutinizer Quality Score](https://camo.githubusercontent.com/dbef09c0fe34ae839598f43300fcfbe53fb4418a41af020ba89f4b7471631608/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f4b756e73746d61616e2f736b796c61622f6261646765732f7175616c6974792d73636f72652e706e673f733d33643166303062663963326164626261383138663237343038366462336564346232626363346532)](https://scrutinizer-ci.com/g/Kunstmaan/skylab/)

*Documentation generated on 2017-12-19 12:42:37*

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance5

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community25

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~31 days

Recently: every ~40 days

Total

57

Last Release

2842d ago

Major Versions

0.1.5 → 1.0.02015-08-09

1.0.22 → 2.0.0-alpha2016-04-23

### Community

Maintainers

![](https://www.gravatar.com/avatar/62ecb43e61751f5fc28256b948ef82f76704338a102d5122b2a6b355e8e972df?d=identicon)[Kunstmaan](/maintainers/Kunstmaan)

---

Top Contributors

[![krispypen](https://avatars.githubusercontent.com/u/156955?v=4)](https://github.com/krispypen "krispypen (92 commits)")[![benoitgeerinck](https://avatars.githubusercontent.com/u/3886278?v=4)](https://github.com/benoitgeerinck "benoitgeerinck (73 commits)")[![roderik](https://avatars.githubusercontent.com/u/16780?v=4)](https://github.com/roderik "roderik (51 commits)")[![sandergo90](https://avatars.githubusercontent.com/u/1516413?v=4)](https://github.com/sandergo90 "sandergo90 (10 commits)")[![kimausloos](https://avatars.githubusercontent.com/u/493233?v=4)](https://github.com/kimausloos "kimausloos (6 commits)")[![bakie](https://avatars.githubusercontent.com/u/1597449?v=4)](https://github.com/bakie "bakie (6 commits)")[![Devolicious](https://avatars.githubusercontent.com/u/360302?v=4)](https://github.com/Devolicious "Devolicious (6 commits)")[![diskwriter](https://avatars.githubusercontent.com/u/3525365?v=4)](https://github.com/diskwriter "diskwriter (3 commits)")[![wimvds](https://avatars.githubusercontent.com/u/777114?v=4)](https://github.com/wimvds "wimvds (2 commits)")[![jverdeyen](https://avatars.githubusercontent.com/u/117409?v=4)](https://github.com/jverdeyen "jverdeyen (1 commits)")[![janfrederik](https://avatars.githubusercontent.com/u/18148910?v=4)](https://github.com/janfrederik "janfrederik (1 commits)")[![janb87](https://avatars.githubusercontent.com/u/12234016?v=4)](https://github.com/janb87 "janb87 (1 commits)")[![ehershey](https://avatars.githubusercontent.com/u/286008?v=4)](https://github.com/ehershey "ehershey (1 commits)")[![scrutinizer-auto-fixer](https://avatars.githubusercontent.com/u/6253494?v=4)](https://github.com/scrutinizer-auto-fixer "scrutinizer-auto-fixer (1 commits)")[![whitewhidow](https://avatars.githubusercontent.com/u/3006630?v=4)](https://github.com/whitewhidow "whitewhidow (1 commits)")[![delboy1978uk](https://avatars.githubusercontent.com/u/2684575?v=4)](https://github.com/delboy1978uk "delboy1978uk (1 commits)")

### Embed Badge

![Health badge](/badges/kunstmaan-skylab/health.svg)

```
[![Health](https://phpackages.com/badges/kunstmaan-skylab/health.svg)](https://phpackages.com/packages/kunstmaan-skylab)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M723](/packages/sylius-sylius)[oro/platform

Business Application Platform (BAP)

645143.5k114](/packages/oro-platform)[craftcms/cms

Craft CMS

3.6k3.6M3.0k](/packages/craftcms-cms)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k59](/packages/open-dxp-opendxp)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

21866.0M1.7k](/packages/drupal-core)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6942.5M406](/packages/drupal-core-recommended)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
