Debian Appliance Builder
Creating high quality appliances is a difficult task and requires deep knowledge of the underlying operating system. So we created the 'Debian Appliance Builder' to simplify that task. 'dab' is a script to automate the creation of OpenVZ appliances. It is basically a rewrite of debootstrap in perl, but uses OpenVZ instead of chroot and generates OpenVZ and now also LXC templates. Another difference is that it supports multi-stage building of templates. That way you can execute arbitrary scripts between package installation steps to accomplish what you want.
Furthermore, some common tasks are fully automated - like setting up a database server (mysql or postgres). To accomplish minimal template creation time, packages are cached to a local directory, so you do not need a local Debian mirror (although this would speed up the first run). All generated templates includes an appliance description file. Those can be used to build appliance repositories.
'dab' is licensed under GPLv2 (Open source).
- Fully automated build process with standard 'make' scripts
- Local package cache
- Multi-stage build process
- Creates and includes appliance description files
- Simplifies various tasks like database installation
- Appliances can be certified and integrated into the Proxmox VE download directory
- Supports Debian 5, 6 and 7 based appliances
- Generates 32 or 64 bit appliances
- Automatic dependency resolution
'dab' is an easy way for software vendors and open source project to package their product into a "ready-to-run" appliance. Appliances can be published into the Proxmox VE appliance download directory to reach the target customer. See Download templates (Video).
In order to work with 'dab', basic Linux knowledge is needed.
DAB for LXC in PVE 4+
DAB can now be used to create LXC templates where the SSH keys are regenerated at creation / cloning time.
Updates to DAB
DAB is developed in the Git Repo at:
The DAB binary is located at:
OpenVZ conf directory in PVE 1.x is at /etc/vz/conf whilst in PVE 3 it is in /etc/pve/openvz/ and is set in DAB.pm as my $cfgdir = "/etc/vz/conf"; or my $cfgdir = "/etc/pve/openvz"; around line 312.
The script needs to be run as root, so it is not recommended to start it on a production machine with running containers.
Prepare your operating system - you can install 'dab' on the following operating systems:
- Proxmox VE (fastest)
- Proxmox VE inside Proxmox VE (KVM) - (most comfortable)
- Proxmox VE inside VMWare/XEN 64bit virtual machine
- Debian 64/Ubuntu 64 with OpenVZ Kernel (not tested)
Log into Proxmox VE, and install 'dab' using apt:
apt-get install dab
Or download and install it manually:
The bleeding edge known to work and is available at:
Both ftp:// and http:// work for the wget URLs above.
'dab' sample templates
Check for current examples: Latest build files: https://git.proxmox.com/?p=dab-pve-appliances.git;a=summary
Older examples are on ftp://download.proxmox.com/sources/
Unpack with tar:
tar -zxvf dab-pve-appliances_2011-09-13.tar.gz
Build Virtual Appliances
We published several examples to show how to work with 'dab'. To start, just build a first OS template based on our examples. If you understand the basics, you can start customizing your own appliance (based on a standard OS template).
- Choose the best suitable base OS (squeeze)
- Choose the right architecture (i383 or amd64)
- Always try to use deb packages for applications (instead of tar.gz files)
- Pre-configure applications as much as possible (PHP, Apache, MySql, Postgresql, etc.) - based on the recommendations of the software
- Use unique keys and passwords (auto generate them during first start-up)
- Define the update procedure for users running the appliance in production: if you use Debian packages, update is easy (apt-get update)
- Contact the Proxmox support team for help Proxmox Support Forum
- And finally: Get certified! See Certification Overview
Debian 6 Standard (Squeeze, i386)
This example shows the basic steps when creating appliances with 'dab'. First step is to create a temporary working directory and cd into that directory (or just cd into the previously un-tared examples):
mkdir debian-6.0-standard cd debian-6.0-standard
Now you need to create/edit the configuration file called 'dab.conf':
Suite: lenny Architecture: i386 Name: debian-6.0-standard Version: 6.0-1 Section: system Maintainer: Proxmox Support Team <email@example.com> Infopage: http://pve.proxmox.com/wiki/Debian_6.0_Standard Description: Debian 6.0 (standard) A small Debian Lenny system including all standard packages.
Next step: Download the available package lists:
Start the creation process with:
Finally build the final appliance package with:
Thats all. Simply upload the final template to your Proxmox VE server (/var/lib/vz/template/cache/) and test what you created. Sure, always check if everything went well before releasing a template. For this purpose all output is logged to a file called 'logfile'.
When finished you may want to cleanup your working directory with:
or use 'dist-clean' if you also want to erase the package cache directory:
You can automate above steps using make. Simply create a file called 'Makefile' (here is an example):
BASEDIR:=$(shell dab basedir) all: info/init_ok dab bootstrap dab finalize info/init_ok: dab.conf dab init touch $@ .PHONY: clean clean: dab clean rm -f *~ .PHONY: dist-clean dist-clean: dab dist-clean rm -f *~
To start template creation you can now simply type:
to cleanup the directory.
The Build your first DAB Appliance Template page shows how to practically setup DAB and get along building templates.
Other OS sample Appliances
These example OS templates are included in the dab-pve-appliances
- Debian 6.0 Standard (i386)
- Debian 6 Standard (amd64)
Sample Application Appliances
These example application templates are included in the dab-pve-appliances
- Drupal (Debian Squeeze, i386)
- MediaWiki (Debian Squeeze, i386)
- Joomla! (Debian Squeeze, i386)
- Wordpress (Debian Squeeze, i386)
- SugarCRM (Debian Squeeze, i386)
- RT Request Tracker (Debian Squeeze, i386)
Howto certify a Virtual Appliance
Get support including commercial support offering concerning 'dab'.