A bridge across website instances/environments to simplify the exchange of database and files not under SCM.

Installs: 29

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0


0.18.3 2021-09-17 20:02 UTC


Loft Deploy


A bridge across website instances/environments to simplify the exchange of database and files not under SCM. This was first written having Drupal in mind, though it works for other frameworks as well.

Visit https://aklump.github.io/loft_deploy for full documentation.

Quick Start

Before you begin, to save from lot's of password entries, you should ensure key-based authentication is working between server instances.

Add to your codebase:

$ cd /path/to/local/app
$ composer require aklump/loft-deploy

Add the following to .gitignore for your project.


Now deploy across environments as you would any other change.

On your production server do the following to configure it:

$ cd /path/to/production/app
$ ./vendor/bin/loft_deploy.sh init prod
$ ./vendor/bin/loft_deploy.sh config
$ ./vendor/bin/loft_deploy.sh configtest
$ ./vendor/bin/loft_deploy.sh config-export

On your local machine, configure it, adding the snippet generated in the previous step via config-export.

$ cd /path/to/local/app
$ ./vendor/bin/loft_deploy.sh init dev
$ ./vendor/bin/loft_deploy.sh config
$ ./vendor/bin/loft_deploy.sh configtest

Now pull your non SCM assets from production to local:

$ ./vendor/bin/loft_deploy.sh pull


  1. Composer
  2. PHP
  3. Key-based server authentication

Using the ldp command

To make working with Loft Deploy easier you should install the ldp command, which allows you to execute vendor/bin/loft_deploy.sh from any directory within your project.


  1. After Composer installing aklump/loft-deploy, place a symlink to ./vendor/bin/ldp.sh somewhere $PATH can find it, e.g.,

    $ cd ~/bin
    $ ln -s /path/to/app/vendor/bin/ldp.sh ldp
  2. Now use ldp as the command to execute loft_deploy.sh from within any directory in your project, e.g.,

    $ cd /path/to/app/
    $ ldp info
    $ cd /path/to/app/web/modules
    $ ldp info

Multiple Projects Using Loft Deploy?

No problem because ldp.sh works across all versions of Loft Deploy, the symlink to project A will work for project B and C. That is to say, you need only install one symlink for many projects, even if those many projects have different versions of Loft Deploy installed.


The configuration file may be edited in one of two ways:

  1. $ ldp config (using $EDITOR)
  2. Open /path/to/app/.loft_deploy/config.yml in your editor of choice.

Be sure to test your configuration until you see no warnings $ ldp configtest.

See also configuration


See inner documentation for how to use.


If you find this project useful... please consider making a donation.

Contact The Developer

In the Loft Studios
Aaron Klump - Web Developer
PO Box 29294 Bellingham, WA 98228-1294