Sunday, December 19, 2010

FTP-Server on Windows Azure from scratch

Using the new Windows Azure 1.3 SDK and the RDP support, you can create your own FTP server in the cloud within less than 30 minutes! Here is a little guide how to do so:

The three major steps are to open the necessary FTP ports to the virtual server, enable RDP on the virtual server and configure the FTP server role on the virtual server.

  1. Download and install the Windows Azure 1.3 SDK
  2. Create a new Windows Azure Project in Visual Studio 2010 and add a Role to that project. In fact it doesn’t matter what kind of role you add to the project. I started by adding a ASP.NET Web Role.
  3. In the Solution Explorer, right click on the WebRole and choose Properties image
  4. In the Endpoints tab on the Properties page add a second endpoint that uses the public port 21 (which is the default port for FTP)image
  5. Now right click on the Cloud Project in the Solution Explorer and choose Publishimage
  6. In the publishing dialog select the option “Deploy your Windows Azure project to Windows Azure” and select the credentials, the deployment environment and the storage account you want to use for the deployment. Then click on “Configure Remote Desktop connections…”
    image
  7. Check the option “Enable connections for all roles”, select or create a certificate that will be used for the RDP connection and provide a user name and password. This user name and password will grant you administrative rights via remote desktop on the server.
    image
  8. Close the dialog and publish your Windows Azure project to the cloud.
  9. After the publishing visit the Windows Azure Management Portal, select the server instance of your Windows Azure project and click on the Remote Desktop Connect button.
    image
    You can either open the .rdp file directly or save it to your computer for later use without having to go to the Management Portal again.
  10. Login to the server with the user name and password you provided in step #7.
    Hint: use “\<yourUserNameHere>” to remove domain information for the login
    image
  11. On the server you first need to remove the binding to port 21 from the IIS default website. Go to: Start > Administrative Tools > Internet Information Services (IIS) Manager, navigate to the only web site in the tree on the left and click on the “Bindings…” link in the Actions pane on the right.
    image
  12. Remove the binding to port 21.
    image
  13. Close the bindings window and close the IIS Manager
  14. Go to: Start > Administrative Tools > Server Manager
    Navigate to the Web Server (IIS) Role in the tree on the left and click on “Add Role Services” in the right part of the window.
    image
  15. Select the role service “FTP Publishing Service”. This should select the services “FTP Server” and “FTP Management Console” automatically, too. If not, select all three manually.
    If necessary, add required role services pointed out by the wizard.
    image
  16. Click “Next” and then “Install”.
  17. Go to: Start > Administrative Tools > Internet Information Services (IIS) 6.0 Manager
    This tool is used to manage FTP on the server.
  18. Expand the tree on the left to the “Default FTP Site”, right click the Default site and
  19. Start the FTP Default Site
    image
    When the IIS6 Manager asks you if it should start the FTP Publishing Service, click “Yes”.
  20. To check if your FTP server is working, open a Command Shell (either on the server or on your local machine) and connect to your server. Use the same credentials for the FTP connection as for the RDP login.
    You can find the address of your FTP server in the title bar of the RDP window.
    image
    image 

Issues:

  • For using passive FTP functionality you need to open up more FTP related ports.
  • When the cloud fabric decides to shut down your server, reboot it or move it to another physical machine, all changes you made via RDP are lost!
    You might solve this by creating startup scripts or upload a pre-configured server image.
  • When your server is restarted or moved all locally stored files are deleted, too. So you need to store the FTP uploads somewhere persistently.

2 comments:

  1. Thanks Nico Ploner for this wonderful post..
    Inside azure server it is working like a charm. But i try to access my ftp server it donot aloow me and continuously throwing the exception that.

    ---------------------------
    FTP Folder Error
    ---------------------------
    An error occurred opening that folder on the FTP Server. Make sure you have permission to access that folder.

    Details:
    200 Type set to A.

    227 Entering Passive Mode (10,186,122,215,192,63).

    Even disabling firewall does not resolve my problem.. have you faced this problem?? Could you please help me

    ReplyDelete
  2. thanks dude. I had a strange set of circumstances that necessitated me transferring a lot of files over to my azure instance from another server. I wouldn't have figured this out on my own; you just saved my life.

    ReplyDelete