PHPackages                             floriankarsten/simple-staging - 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. floriankarsten/simple-staging

ActiveKirby-plugin

floriankarsten/simple-staging
=============================

0.1.1(3y ago)9231MITPHPPHP &gt;=7.4.0

Since Apr 20Pushed 3y ago3 watchersCompare

[ Source](https://github.com/floriankarsten/simple-staging)[ Packagist](https://packagist.org/packages/floriankarsten/simple-staging)[ RSS](/packages/floriankarsten-simple-staging/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (2)Versions (3)Used By (0)

Simple staging Janitor jobs
===========================

[](#simple-staging-janitor-jobs)

Plugin for very simple staging setup for  (required). Beta quality - use at your own risk. It's working without problems for me but any comments and suggestions for improvements are welcome. There are two variants pure php and rsync.

Requirements
------------

[](#requirements)

Plugin assumes flat structure and while you can define the destination (live site) as you want i would suggest structure like

```
websites/
	staging.mysite.com
	mysite.com

```

PHP job vs Rsync job
--------------------

[](#php-job-vs-rsync-job)

Both jobs are different. The *PHP job* should be more compatible but it naive, takes longer, it alwyas copies everything and it requires you to have space for 3 versions of your site. It works like this

1. Copy staging.mysite.com to \_\_staging\_mysite.com
2. Rename mysite.com to \_\_tobedeleted\_mysite.com
3. Rename \_\_staging\_mysite.com to mysite.com
4. Delete \_\_tobedeleted\_mysite.com

*Rsync job* requires you to have rsync available on your server but it syncs changes from staging to live directly. This makes it much more efficient and you have only 2 versions of site at the time. Rsync also has better include/exclude options. Many shared hostings with ssh have rsync available but check if you allow php to run exec();.

You probably want to use *Rsync job* if you can.

Install
-------

[](#install)

`composer require floriankarsten/simple-staging`

config.php

```
// Required loads the jobs
'bnomei.janitor.jobs-extends' => [
	'floriankarsten.simplestaging.jobs'
],
// this is required name of final destination of website
// for example if i have site folders staging.test.com and test.com i set test.com as destination
'floriankarsten.simplestaging' => [
	'destination' => 'test.com',
	'base' => '/users/floriankarsten/bestwebsite/' // Not required. Absolute path to base of our website. By default its parent of index/public folder which is what you probably want.
]
```

In your blueprint

```
// PHP job
pushlive:
  type: janitor
  label: Deploy to Live site rsync
  progress: Deploying...
  job: deploylive

// Rsync job
pushlive:
  type: janitor
  label: Deploy to Live site rsync
  progress: Deploying...
  job: deployliversync
```

Configuration PHP job
---------------------

[](#configuration-php-job)

```
'floriankarsten.simplestaging' => [
	'basic' => [ // 'basic' is namespace for our 'php job'
		'excludedir' => ['vendor', 'node_modules'] // basic job can only exclude directories. Empty by default.
	],
]
```

Configuration Rsync job
-----------------------

[](#configuration-rsync-job)

```
'floriankarsten.simplestaging' => [
	'rsync' => [
		'executable' => '/usr/lib/rsync' // path to rsync library. Default 'rsync'
		'flags' => ['a', 'r'] // overwrite default rsync flags. Default ['a', 'r']
		// include/exclude work as if they were passed directly to rsync (so things like *.jpg etc.). If you use only include without exclude we assume and exclude '*'
		'exclude' => ['vendor', 'node_modules'], // Empty by default.
		'include' => ['content'], // Empty by default.
	],
]
```

This plugin wouldn't happen without [@garethworld](https://github.com/garethworld) who kindly hired me to make it and then wanted to have it released to Kirby community. Thanks GARETH

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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 ~736 days

Total

2

Last Release

1115d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3bbe66edc19219154fdfb242defbce4c17651775937db57b627c549334945428?d=identicon)[floriankarsten](/maintainers/floriankarsten)

---

Top Contributors

[![iskrisis](https://avatars.githubusercontent.com/u/4954323?v=4)](https://github.com/iskrisis "iskrisis (17 commits)")

---

Tags

kirbykirby-cmskirby-pluginphp

### Embed Badge

![Health badge](/badges/floriankarsten-simple-staging/health.svg)

```
[![Health](https://phpackages.com/badges/floriankarsten-simple-staging/health.svg)](https://phpackages.com/packages/floriankarsten-simple-staging)
```

###  Alternatives

[getkirby/cms

The Kirby core

1.5k535.5k352](/packages/getkirby-cms)[distantnative/retour-for-kirby

Manage redirects and track 404s right from the Kirby CMS Panel

14689.4k1](/packages/distantnative-retour-for-kirby)[arnoson/kirby-vite

Vite helper for Kirby CMS

9759.2k3](/packages/arnoson-kirby-vite)[getkirby/staticache

Static site performance on demand

9615.4k](/packages/getkirby-staticache)[fabianmichael/kirby-meta

Your all-in-one powerhouse for any SEO and metadata needs imaginable.

6910.7k1](/packages/fabianmichael-kirby-meta)[thathoff/kirby-oauth

Kirby OAuth 2 Plugin

3823.9k](/packages/thathoff-kirby-oauth)

PHPackages © 2026

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