---
title: Apache CloudStack Downloads
---

<%
    #
    #  Version details in data/cloudstack.yml
    #
%>
<div class="row">

<div class="col-lg-12">

<div class="page-header">

<h1 id="indicators">Apache CloudStack: Downloads</h1>

</div>

</div>

</div>

<div class="bs-example">

<div class="row">

<div class="col-lg-6">

<h2>Latest CloudStack Release</h2>

<h4>Source Release</h4>

<p>Apache CloudStack's most current release is <%= data.cloudstack.versions.main %>.
</p>

<p>
    <a href="http://www.apache.org/dyn/closer.lua/cloudstack/releases/<%= data.cloudstack.versions.main %>/apache-cloudstack-<%= data.cloudstack.versions.main %>-src.tar.bz2">
        <button type="button" class="btn btn-primary btn-lg">
            Get the <%= data.cloudstack.versions.main %> Source!
        </button>
    </a>
    <a href="http://www.apache.org/dist/cloudstack/KEYS">
        <button type="button" class="btn btn-info btn-xs">
            KEYS
        </button>
    </a>
    <a href="http://www.apache.org/dist/cloudstack/releases/<%= data.cloudstack.versions.main %>/apache-cloudstack-<%=  data.cloudstack.versions.main %>-src.tar.bz2.asc">
        <button type="button" class="btn btn-info btn-xs">
            PGP
        </button>
    </a>
    <a href="http://www.apache.org/dist/cloudstack/releases/<%= data.cloudstack.versions.main %>/apache-cloudstack-<%=  data.cloudstack.versions.main %>-src.tar.bz2.md5">
        <button type="button" class="btn btn-info btn-xs">
            MD5
        </button>
    </a>
    <a href="http://www.apache.org/dist/cloudstack/releases/<%= data.cloudstack.versions.main %>/apache-cloudstack-<%=     data.cloudstack.versions.main %>-src.tar.bz2.sha512">
        <button type="button" class="btn btn-info btn-xs">
            SHA512
        </button>
    </a>
</p>

<% data.cloudstack.versions.others.each do |other_version| %>
<p>
    <a href="http://www.apache.org/dyn/closer.lua/cloudstack/releases/<%= other_version %>/apache-cloudstack-<%= other_version %>-src.tar.bz2">
        <button type="button" class="btn btn-primary btn-md">
            Get the <%= other_version %> Source!
        </button>
    </a>
    <a href="http://www.apache.org/dist/cloudstack/KEYS">
        <button type="button" class="btn btn-info btn-xs">
            KEYS
        </button>
    </a>
    <a href="http://www.apache.org/dist/cloudstack/releases/<%= other_version %>/apache-cloudstack-<%=  other_version %>-src.tar.bz2.asc">
        <button type="button" class="btn btn-info btn-xs">
            PGP
        </button>
    </a>
    <a href="http://www.apache.org/dist/cloudstack/releases/<%= other_version %>/apache-cloudstack-<%=  other_version %>-src.tar.bz2.md5">
        <button type="button" class="btn btn-info btn-xs">
            MD5
        </button>
    </a>
    <a href="http://www.apache.org/dist/cloudstack/releases/<%= other_version %>/apache-cloudstack-<%=     other_version %>-src.tar.bz2.sha512">
        <button type="button" class="btn btn-info btn-xs">
            SHA512
        </button>
    </a>
</p>

<% end %>


<h4>Community Packages</h4>

<p>For easier installation or upgrades, the official source code release has been supplemented by community members who have chosen to provide package repositories that also include noredis libraries.</p>

<ul>
    <li>DEB repository: <a href="http://download.cloudstack.org/ubuntu">http://download.cloudstack.org/ubuntu</a></li>
    <li>CentOS/RHEL 6 RPM repository: <a href="http://download.cloudstack.org/centos/6/">http://download.cloudstack.org/centos/6/</a></li>
    <li>CentOS/RHEL 7 RPM repository: <a href="http://download.cloudstack.org/centos/7/">http://download.cloudstack.org/centos/7/</a></li>
</ul>

<p>Instructions for using these community provided repositories can be found in the <a href="http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/latest/management-server/index.html#configure-package-repository">Configure Package Repository</a> section of the Installation Guide.</p>


<h4>Third-Party Distributions</h4>

<ul>
    <li>CloudStack Packages by ShapeBlue: <a href="http://shapeblue.com/packages/">http://shapeblue.com/packages</a></li>
</ul>


</div>

<div class="col-lg-6">

<div class="panel panel-default">

<div class="panel-heading">

<h3 class="panel-title">Verifying Downloads</h3>

</div>

<div class="panel-body">

<p>
It's essential that you verify the integrity of the downloaded files using the PGP or MD5 signatures.
The PGP signatures can be verified using PGP or GPG. First download the
<a href="https://dist.apache.org/repos/dist/release/cloudstack/KEYS">KEYS</a> as well as the asc
signature file for the relevant distribution. Make sure you get these files from the
main distribution directory, rather than from a mirror. Then verify the signatures using:
</p>
<pre>
    % pgpk -a KEYS
    % pgpv apache-cloudstack-X.X.X-src.tar.bz2.asc
</pre>
<p>or</p>
<pre>
    % pgp -ka KEYS
    % pgp apache-cloudstack-X.X.X-src.tar.bz2.asc
</pre>
<p>or</p>
<pre>
    % gpg --import KEYS
    % gpg --verify apache-cloudstack-X.X.X-src.tar.bz2.asc
</pre>
<p>
Additionally, you can verify the MD5 or SHA512 signatures on the files.
</p>

</div>
</div>
</div>
</div>
</div>

<h4>Release Notes for CloudStack <%= data.cloudstack.versions.main %></h4>

<p>Full release notes can be found in the <a href="http://docs.cloudstack.apache.org/projects/cloudstack-release-notes/en/<%= data.cloudstack.versions.branch %>/">Version <%= data.cloudstack.versions.main %> Release Notes</a> document.</p>

<p>Instructions for building from source and installing Apache CloudStack can be found in the <a href="http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/latest/">Installation Guide</a>.</p>

<p>Instructions for building from source and upgrading from a previous version of CloudStack to Apache CloudStack <%= data.cloudstack.versions.main%> can be found in the upgrade section of the <a href="http://docs.cloudstack.apache.org/projects/cloudstack-release-notes/en/<%= data.cloudstack.versions.branch %>/">Release Notes</a>.</p>

<a name="cloudmonkey"></a>

<div class="row">

<div class="col-lg-12">

<div class="page-header">

<h2 id="indicators">Latest CloudMonkey Release</h2>

</div>

</div>

</div>

Apache CloudStack's CloudMonkey tool is a CLI and shell environment designed for interacting with CloudStack-based clouds.

#### Source Release

CloudMonkey's most current release is <%= data.cloudstack.cloudmonkey.version %>.

<p>
<a href="http://www.apache.org/dyn/closer.lua/cloudstack/releases/cloudmonkey-<%= data.cloudstack.cloudmonkey.version %>/apache-cloudstack-cloudmonkey-<%= data.cloudstack.cloudmonkey.version %>-src.tar.bz2"><button type="button" class="btn btn-primary btn-lg">Get the <%= data.cloudstack.cloudmonkey.version %> Source!</button></a>

<a href="http://www.apache.org/dist/cloudstack/KEYS"><button type="button" class="btn btn-info btn-xs">KEYS</button></a>
<a href="http://www.apache.org/dist/cloudstack/releases/cloudmonkey-<%= data.cloudstack.cloudmonkey.version %>/apache-cloudstack-cloudmonkey-<%= data.cloudstack.cloudmonkey.version %>-src.tar.bz2.asc"><button type="button" class="btn btn-info btn-xs">PGP</button></a>
<a href="http://www.apache.org/dist/cloudstack/releases/cloudmonkey-<%= data.cloudstack.cloudmonkey.version %>/apache-cloudstack-cloudmonkey-<%= data.cloudstack.cloudmonkey.version %>-src.tar.bz2.md5"><button type="button" class="btn btn-info btn-xs">MD5</button></a>
<a href="http://www.apache.org/dist/cloudstack/releases/cloudmonkey-<%= data.cloudstack.cloudmonkey.version %>/apache-cloudstack-cloudmonkey-<%= data.cloudstack.cloudmonkey.version %>-src.tar.bz2.sha"><button type="button" class="btn btn-info btn-xs">SHA</button></a>

</p>

Instructions for building and installing from source can be found in the included [README.md](https://gitbox.apache.org/repos/asf?p=cloudstack-cloudmonkey.git;a=blob_plain;f=README.md) file.

#### PyPi Package

For easier installation or upgrades, the official source code release has been supplemented by community members who have pushed the python package to the [Python Package Index](https://pypi.python.org/pypi/cloudmonkey/).

For installing the package from pypi, use:

    $ pip install cloudmonkey

To upgrade:

    $ pip install --upgrade cloudmonkey

Though a clean upgrade is recommended:

    $ pip uninstall cloudmonkey
    $ pip install cloudmonkey


<a name="archives"></a>

<div class="row">

<div class="col-lg-12">

<div class="page-header">

<h2 id="indicators">Archived Releases</h2>

You can find links to older releases of Apache CloudStack on the <a href="archives.html">archives page</a>.
