Control LXD through RPC

v0.0.29 2018-06-16 02:54 UTC


Build Status StyleCI Scrutinizer Code Quality Code Coverage Packagist Version Packagist Downloads

Control LXD through RPC which uses the local instance of LXD and lxc query to manage local or remote LXD servers.


Require this package with composer using the following command:

$ composer require plinker/lxd


The webserver user must be able to execute lxc commands, so add the user to sudoers file under User privilege specification:

# User privilege specification
root     ALL=(ALL:ALL) ALL
www-data ALL=(ALL:ALL) NOPASSWD: /usr/bin/lxc

Also add www-data to lxd group:#

sudo usermod --append --groups lxd www-data


Creating a client instance is done as follows:

require 'vendor/autoload.php';

 * Initialize plinker client.
 * @param string $server - URL to server listener.
 * @param string $config - server secret, and/or a additional component data
$client = new \Plinker\Core\Client(
        'secret' => 'a secret password'

// or using global function
$client = plinker_client('', 'a secret password');

Basic Usage

Essentially you can do any LXD operation with the single $client->lxd->query() method, or you can use the helper methods which cover all the LXD endpoints.

Parameters & Call

Parameter Type Description Default
remote string LXD remote and endpoint local
rest method string e.g GET, POST, DELETE, PUT, PATCH GET
payload object | json string Rest json payload
mutator function Pre-resolve mutation function
$client->lxd->query('remote:/1.0', 'GET', []);

Full Documentation

To view the complete docs for this component including all methods see:


Once setup, you call the class though its namespace to its method, see docs for further details.

List Containers

List containers on remote.

Parameters & Call

Parameter Type Description Default
remote string LXD remote local
mutator function Mutation function
$client->lxd->containers->list('local', function ($result) {
    return str_replace('/1.0/containers/', '', $result);    


    [0] => my-container


There are no tests setup for this component.


Please see CONTRIBUTING for details.


If you discover any security related issues, please contact me via instead of using the issue tracker.


Development Encouragement

If you use this project and make money from it or want to show your appreciation, please feel free to make a donation, thanks.


Get your company or name listed throughout the documentation and on each github repository, contact me at for further details.


The MIT License (MIT). Please see License File for more information.

See the organisations page for additional components.