Configure FTP And Use Custom Domain On Azure VM

In my previous article,

We learned to setup Linux VM in Windows Azure. We have also learned how to install LAMP, configure and tune Apache and MySQL. Now we are going to see how can we setup FTP to upload and manage the files on our Server and how we can use our custom domain.

Login to the Azure Management Portal.

Let’s setup our system for FTP access.

FTP (File Transfer Protocol) is probably the most popular method of uploading the files to the Server. A wide array of FTP Servers, such as ProFTPD and the clients exist for every platform.

Add endpoints to your VM

Add a new endpoint on the portal, navigate to the Virtual machine, <your_virtual_machine>, Endpoints if you are using plain FTP, i.e. port 21, else SFTP will be on port 22. I am using FTP here.


We also need to add a few arbitrary endpoints that the VM will use for connecting. The more we add, the more concurrent FTP connections you’ll be able to open. For the sake of argument, let’s add these ports; 49153, 49154, 49155, 49156 & 49156 for FTP-Passive2 onwards.


Now, we are done with the Endpoints. Thus, let’s install ProFTPD to our VM.

Open PuTTY and log in to your VM by using your settings, done in the previous post.

Now, move to the elevated command line. Use “ sudo su “ command.

First, I will follow a simple best practice: ensuring the list of the available packages, which is up to date before installing anything new.

Run “apt-get update ” command.

Now, let’s install ProFTPD and any required packages.

Run “ apt-get –y install proftpd ” command.

You will get this screen during the installation process:


Select “ Standalone “ and then hit enter to finish the installation.

Configure ProFTPD

ProFTPD is now installed. Now, it's time to configure. Let’s edit the configuration file for ProFTPD:

Run “ nano /etc/proftpd/proftpd.conf ” command.

We need to enable those Passive ports that we added to the VM instance. Inside Azure control panel (change the range accordingly to your port selection), we also need to add the public DNS of the VM to the Masquerade Address. (Ref. Passive Ports & Masquerade Address):

Add These lines in the file

  1. PassivePorts 49153 49157

    MasqueradeAddress <your_public_dns>

After these changes, make sure to restart ProFTPd

Run “ service proftpd restart ” Command .

Now set the ProFTPD service to start at boot,

Run “ update-rc.d proftpd defaults ”

Let’s try to connect using FileZilla now,

You can download FileZilla client from here.

Now fill your details in Quickconnect, as given in the screenshot, below:


Congratulations! You are connected to your VM. 

Now It’s Time for Domain Setup

Let's say you have a website and you want it to be served from your Server. You need to create something called “Virtual Host” in Apache’s term. It is equivalent to IIS Website.

In this tutorial, we are taking “CONNECTTUSHAR.COM” as our domain.

Now, log In to PuTTY Window, using your credentials.

Now Move to elevated command line. Use “ sudo su “ command, and Start.

First, create the folder where all the files for our website will reside:

mkdir -p /var/www/

If we want our regular user to modify the files in our Web directories, we can change the ownership by executing this command. The $USER variable will take the value of the user; you are currently logged in as, when you press enter.

chown -R $USER:$USER /var/www/

By executing this command, our regular user now owns the public_html subdirectories, where we will be storing our content.

Let’s modify our permissions a little bit to ensure that read access is permitted to the general Web directory in addition to storing all the files and folders in it.

chmod -R 755 /var/www

Now, let's create sample configuration for the Website :

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/

Edit the /etc/apache2/sites-available/ file to configure the virtual host with the correct configuration, using nano:

nano /etc/apache2/sites-available/

Add this snippet with your domain name in it,

DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow, deny
allow from all


We have changed the occurrences of AllowOverride to AllowOverride All. This will come handy, when we will setup a .htaccess file.

Now enable the Website

a2dissite 000-default

Lets enable some modules

a2enmod rewrite
a2enmod headers
a2enmod expires

Now, restart Apache.

service apache2 restart

If “apache2 can not reliably determine the Server's fully qualified domain", the warning comes.


Then open Apache config,

nano /etc/apache2/apache2.conf

Add this line to the file,


Save by pressing Ctrl+X , Y and click enter.

Now restart Apache and again type,

service apache2 restart

Let’s verify the site, which is configured properly.

grep –R AllowOverride /etc/apache2

Your output will resemble, as shown below:


Now, go to your domain control panel.

Mask your VM’s Virtual IP address to the domain.


Now, you can use on the Browser and it should show:

This means, we have the virtual host configured and the domain is working.

Conclusion: In this article, we have taught you to set up FTP for your VM and how to configure the custom domain for your VM.