Virtualmin Professional Paid AMI

AMI Summary

Region Location Operating System AMI
US East Virginia CentOS ami-cfb686a6
US West California CentOS ami-bc3a08f9
US West Oregon CentOS ami-6e48295e

The instructions below assume you are using the US East (Virginia) region. To use another region, set the EC2_URL environment variable before running the commands below, and use the appropriate AMI listed above for the region.

Virtualmin Pro Paid AMI on EC2

Introduction to Paid AMIs

Amazon has recently launched a service called DevPay where commerical software like Virtualmin Pro can be purchased to run on their EC2 service. This means that instead of creating an EC2 instance and installing Virtualmin Pro on it manually, you can instead use an image that has it pre-installed, and available for immediate use. We how have an AMI available that contains Virtualmin Pro 3.87 and the full stack of related servers, like Apache, Postfix and MySQL.


The pricing per EC2 instance using the Virtualmin Pro AMI is based on the regular EC2 per-hour price, with an additional fee to cover the Virtualmin license. This works out to about $20-25 per month. The exact fees for the different instance sizes are :

Price Size
$0.14 / hour Small instance
$0.45 / hour Large instance
$0.86 / hour Extra-large instance

For more details on the specs of different instance sizes, see this page from Amazon. For most people, the small instance is the most cost-effective, as you can split your domains across several of them.

Using the paid AMI

To use this new paid AMI, the steps to follow are :

  1. Sign up for an Amazon EC2 account on their registration page.
  2. Follow Amazon's getting started instructions to install the needed tools, in particular the Prerequisites, Setting up an Account and Setting up the Tools pages.
  3. Purchase the Virtualmin Pro AMI subscription, which will be charged to your Amazon account.
  4. Once you have the ec2 commands working, use the following command to list available Virtualmin AMIs :
    ec2-describe-images -o 541491349868

    You should see at least one in the available state.

  5. Setup an SSH key with the commands :
    ec2-add-keypair vgpl-keypair >~/.ssh/id_rsa-vgpl-keypair
    chmod 700 ~/.ssh/id_rsa-vgpl-keypair
  6. Start a new instance with the AMI for Virtualmin Pro with the command :
    ec2-run-instances ami-cd00c6a4 -k vgpl-keypair

    This will output the new instance ID, which is like i-10a64379

  7. Check its status with the command :

    You will need to wait until it is in the running state. You will then be able to see the public hostname, which looks like .

  8. Open the needed firewall ports with the commands :
    ec2-authorize default -p 22
    ec2-authorize default -p 25
    ec2-authorize default -p 10000
    ec2-authorize default -p 10001
    ec2-authorize default -p 10002
    ec2-authorize default -p 10003
    ec2-authorize default -p 10004
    ec2-authorize default -p 10005
    ec2-authorize default -p 10006
    ec2-authorize default -p 10007
    ec2-authorize default -p 10008
    ec2-authorize default -p 10009
    ec2-authorize default -p 20000
    ec2-authorize default -p 80
    ec2-authorize default -p 443
    ec2-authorize default -p 21
    ec2-authorize default -p 20
    ec2-authorize default -p 110
    ec2-authorize default -p 143
    ec2-authorize default -p 53
    ec2-authorize default -p 53 -P udp
  9. Try a test SSH login with the command :
    ssh -i ~/.ssh/id_rsa-vgpl-keypair
  10. Connect to Webmin at the URL : . The initial login is root and password is changeme .
  11. Click on the Webmin link in the top-left, open the Webmin category, click on Change Language and Theme, and enter a new password!
  12. If some packages are not up to date, they will be displayed on the System Information page that appears after you login. Click the Install All Updates Now button to have them automatically fetched and installed.
  13. Click back on the Virtualmin link on the top-left, and click on Create Virtual Server to create your first domain.

Virtualmin on EC2 works exactly the same as it would on a regular system. For full documentation, see :