<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SSH &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/ssh/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Mon, 18 Aug 2025 20:40:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Xojo Cloud: More Than Web App Hosting</title>
		<link>https://blog.xojo.com/2024/08/15/xojo-cloud-more-than-web-app-hosting/</link>
		
		<dc:creator><![CDATA[Paul Lefebvre]]></dc:creator>
		<pubDate>Thu, 15 Aug 2024 22:59:40 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Xojo Cloud]]></category>
		<category><![CDATA[App Hosting]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Push Notifications]]></category>
		<category><![CDATA[SFTP]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13449</guid>

					<description><![CDATA[What better way to celebrate 10 years of Xojo Cloud than bragging about all the things it can do! When you think of Xojo Cloud,&#8230;]]></description>
										<content:encoded><![CDATA[
<p>What better way to celebrate 10 years of Xojo Cloud than bragging about all the things it can do! When you think of Xojo Cloud, you might think that it is for hosting Xojo web apps. And that&#8217;s true, Xojo Cloud continues to be the best and easiest way to host your Xojo web apps, but Xojo Cloud also offers several useful services for other types of apps.</p>



<h2 class="wp-block-heading">iOS Notifications</h2>



<p>Xojo Cloud can function as an <a href="https://developer.apple.com/documentation/usernotifications/sending-notification-requests-to-apns">Apple Push Notification system</a> (APNs) for handling iOS push notifications. This works with Xojo and non-Xojo iOS apps. All Xojo Cloud servers are pre-configured to <a href="https://documentation.xojo.com/topics/ios/sending_and_receiving_mobile_notifications.html#topics-ios-creating-notifications-on-the-user-s-mobile-device-using-xojo-cloud-to-send-remote-notifications">send remote notifications</a>. Unlike many other cloud hosts, there is no extra charge for this feature nor is there any limit as to how many notifications you can send.</p>



<p>To send remote notifications from your iOS app you&#8217;ll need to go to the Apple Developer website to do these tasks:</p>



<ol class="wp-block-list">
<li>Add the Push Notifications feature to the App ID.</li>



<li>Generate an Apple Push Services certificate.</li>
</ol>



<p>In Xojo you need to enable the Remote Notifications entitlement for your app in the Capabilities section of the iOS Build Settings Advanced tab.</p>



<p>The final step is to upload your Push Services certificate using the Xojo Cloud control panel.</p>



<p>With super-easy access and no limits for notifications, Xojo Cloud can serve as a great APNs for handling your iOS notification needs.</p>



<h2 class="wp-block-heading">Database Servers</h2>



<p>Most desktop apps use a database of some kind and many are client/server database apps that talk directly to the database server. With Xojo Cloud you can host PostgreSQL or MariaDB/MySQL database servers and connect to them using an SSH tunnel for security purposes.</p>



<p>Setting up a database server on your Xojo Cloud is as easy as checking a box in the control panel.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="630" src="https://blog.xojo.com/wp-content/uploads/2024/08/image-1024x630.png" alt="" class="wp-image-13451" srcset="https://blog.xojo.com/wp-content/uploads/2024/08/image-1024x630.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/08/image-300x185.png 300w, https://blog.xojo.com/wp-content/uploads/2024/08/image-768x472.png 768w, https://blog.xojo.com/wp-content/uploads/2024/08/image.png 1398w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>You can turn on PostgreSQL or MySQL/MariaDB. If your Xojo Cloud server is large enough you could even do both.</p>



<p>If you want to access a database on Xojo Cloud from a desktop app, you will have to enable the SSH Tunnel and then connect to the tunnel from the computer. An SSH tunnel is a secure connection between your computer and another (in this case your Xojo Cloud server) which is used for transmitting data on a specific port. In essence, it creates a private connection through the internet which allows you to see into your server on the other end and connect to a particular service there.</p>



<p>To create a tunnel between a computer and your Xojo Cloud server, you first need to turn on the tunnel capability on your Xojo Cloud server. Go to your control panel and click the &#8220;SSH Tunnel&#8221; checkbox. You will be presented with a generated username and a password which you will use later for establishing the connection.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="694" height="302" src="https://blog.xojo.com/wp-content/uploads/2024/08/image-1.png" alt="" class="wp-image-13453" srcset="https://blog.xojo.com/wp-content/uploads/2024/08/image-1.png 694w, https://blog.xojo.com/wp-content/uploads/2024/08/image-1-300x131.png 300w" sizes="(max-width: 694px) 100vw, 694px" /></figure>



<p>On macOS and Linux, you can use a terminal command to access the tunnel (replace username and ipaddress as appropriate; you&#8217;ll be prompted for the password).</p>



<p>Use this command to tunnel to PostgreSQL:</p>



<pre class="wp-block-code"><code>ssh -L 5432:localhost:5432 username@ipaddress -N</code></pre>



<p>Use this command to tunnel to MySQL:</p>



<pre class="wp-block-code"><code>ssh -L 3306:localhost:3306 username@ipaddress -N</code></pre>



<p>If you are using Windows, you will need to use an external app such as PuTTY. There are a number of tutorials available on the internet, just put “putty ssh tunnel” into your favorite search engine.</p>



<p>With the tunnel in place you connect to the database as if it were local to the computer. This works with anything, not just Xojo apps.</p>



<h2 class="wp-block-heading">SFTP</h2>



<p>Xojo Cloud offers SFTP (Secure File Transfer Protocol) for file transfer. SFTP is a secure variant of FTP which transmits files over the internet using strong encryption. That way you don&#8217;t have to worry about anyone intercepting your username and password or your files as they&#8217;re sent to or from your server.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>When choosing a client, keep in mind that SFTP is different than FTPS or FTP w/ SSL. They are not interchangeable with one another.</p>
</blockquote>



<p>Once you enable SFTP in the Control Panel, you&#8217;ll be presented with a dialog showing a generated username and password.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="447" src="https://blog.xojo.com/wp-content/uploads/2024/08/image-2-1024x447.png" alt="" class="wp-image-13454" srcset="https://blog.xojo.com/wp-content/uploads/2024/08/image-2-1024x447.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/08/image-2-300x131.png 300w, https://blog.xojo.com/wp-content/uploads/2024/08/image-2-768x335.png 768w, https://blog.xojo.com/wp-content/uploads/2024/08/image-2.png 1186w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>You can now connect using your favorite SFTP client. If you don&#8217;t have one, there are a number of free and paid options available including:</p>



<ul class="wp-block-list">
<li>ForkLift</li>



<li>Transmit</li>



<li>FileZilla</li>



<li>CyberDuck</li>
</ul>



<p>Having a place to store files online is always handy and can be useful when needing to share files with others without having to rely on services such as DropBox.</p>



<h2 class="wp-block-heading">Web Services</h2>



<p>OK, a web service is technically a Xojo web app but it is really an API that is meant to be used by other apps, often desktop or mobile apps. Since a web service doesn’t have any actual UI, you don’t really need to learn how to use the majority of the Xojo Web framework.</p>



<p>Instead you basically add code to the <a href="https://documentation.xojo.com/api/web/webapplication.html#webapplication-handleurl">App.HandleURL</a> event to route web service API calls to do specific tasks and then return the results, usually as JSON for the client app to handle.</p>



<p>A web service can be a great way to consolidate code that will be used by desktop and mobile apps, for example.</p>



<p>For example, you could create a Web Service that talks to a database server (such as one of the ones available in Xojo Cloud itself). Your Desktop and Mobile apps can use the same web service to work with the database. All your database-specific code lives in the web service and the client apps make requests and display results.</p>



<p>This is a very common design pattern these days and is a necessary one if you want a mobile app to talk to a database server.</p>



<p>If you want to learn more about web services, here&#8217;s a fun webinar to check out:</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Using Xojo and the Star Wars API" width="500" height="281" src="https://www.youtube.com/embed/hwhkZtP6fA8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Learn more about <a href="https://xojo.com/cloud/">Xojo Cloud</a> today. Xojo Cloud servers start at $49/month, custom servers with more RAM, storage, and virtual CPUs are available. The best way to host your Xojo web apps is so much more than just hosting web apps!</p>



<p><em>Paul learned to program in BASIC at age 13 and has programmed in more languages than he remembers, with Xojo being an obvious favorite. When not working on Xojo, you can find him talking about retrocomputing at <a href="https://goto10.substack.com" target="_blank" rel="noreferrer noopener">Goto 10</a> and </em>on Mastodon @lefebvre@hachyderm.io.</p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Simplicity and Security, Xojo Cloud is Ideal Hosting for Xojo Web Apps</title>
		<link>https://blog.xojo.com/2023/10/30/simplicity-and-security-xojo-cloud-is-ideal-hosting-for-xojo-web-apps/</link>
		
		<dc:creator><![CDATA[Xojo]]></dc:creator>
		<pubDate>Mon, 30 Oct 2023 16:00:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Xojo Cloud]]></category>
		<category><![CDATA[App Hosting]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[Rapid Application Development]]></category>
		<category><![CDATA[Security-Enhanced Linux]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=11553</guid>

					<description><![CDATA[Xojo Cloud is the premier hosting solution for developers looking for a reliable, secure and high-performance hosting environment for Xojo web applications. Xojo Cloud is developed specifically for Xojo web applications and offers a range of benefits for you and your applications that make it worth the investment.]]></description>
										<content:encoded><![CDATA[
<p>Xojo Cloud is the premier hosting solution for developers looking for a reliable, secure and high-performance hosting environment for Xojo web applications. Xojo Cloud is developed specifically for Xojo web applications and offers a range of benefits for you and your applications that make it worth the investment.</p>



<p>Xojo Cloud is <strong>optimized for Xojo applications</strong>. It is specifically designed to provide the best possible performance and stability for Xojo web applications. We optimize Xojo Cloud for performance, so your web apps will run smoothly and seamlessly. You can even monitor server stats from within the Xojo IDE.</p>



<p>Xojo Cloud is <strong>focused on simplicity and ease of use</strong> and requires zero configuration. Designed with the Xojo developer in mind, Xojo Cloud&#8217;s Control Panel makes it easy to deploy and manage web applications. Purchase a server, open a web project in Xojo and click Deploy to upload and install to Xojo Cloud. Not just for web apps, Xojo Cloud includes Apple Push Notification server (APNs) support for your iOS apps. Set up SSL, PostrgeSQL, MySQL, SFTP and a SSH Tunnel with a click in the Xojo Cloud Control Panel (the Control Panel itself is a Xojo web app). The administration of a web server is a significant and constant task; Xojo Cloud allows you to leave that behind and focus on your projects.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1024" height="386" data-id="12082" src="https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Apps-Tab-1024x386.png" alt="Xojo Cloud Control Panel Apps Tab" class="wp-image-12082" srcset="https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Apps-Tab-1024x386.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Apps-Tab-300x113.png 300w, https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Apps-Tab-768x289.png 768w, https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Apps-Tab-1536x579.png 1536w, https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Apps-Tab-2048x772.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1024" height="384" data-id="12083" src="https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Options-Tab-1024x384.png" alt="Xojo Cloud Control Panel Options Tab" class="wp-image-12083" srcset="https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Options-Tab-1024x384.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Options-Tab-300x112.png 300w, https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Options-Tab-768x288.png 768w, https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Options-Tab-1536x576.png 1536w, https://blog.xojo.com/wp-content/uploads/2023/09/Xojo-Cloud-Control-Panel-Options-Tab-2048x768.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>We take security very seriously. Xojo Cloud <strong>offers advanced security features</strong> to protect your data from cyberthreats, including a smart firewall, intrusion and hacking detection and Security-Enhanced Linux. Unlike most hosting solutions that provide little to no security, each Xojo Cloud server is built with our state-of-the-art, industrial-strength, multi-tiered security system woven into its very core.&nbsp;</p>



<p>Additional features and benefits include daily automatic backups, load balancing and support from the Xojo team. With nine global hosting locations, you are able to host your Xojo web applications close to your users, for speed and an ideal overall experience. </p>



<div class="wp-block-columns are-vertically-aligned-top is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-top is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%">
<figure class="wp-block-image size-large is-style-default"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.xojo.com/wp-content/uploads/2023/09/Add-a-heading-1024x576.png" alt="Xojo Cloud offers 3 packages offering options on RAM, storage and vCPU starting at $49/month. " class="wp-image-12078" srcset="https://blog.xojo.com/wp-content/uploads/2023/09/Add-a-heading-1024x576.png 1024w, https://blog.xojo.com/wp-content/uploads/2023/09/Add-a-heading-300x169.png 300w, https://blog.xojo.com/wp-content/uploads/2023/09/Add-a-heading-768x432.png 768w, https://blog.xojo.com/wp-content/uploads/2023/09/Add-a-heading-1536x864.png 1536w, https://blog.xojo.com/wp-content/uploads/2023/09/Add-a-heading.png 1600w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>
</div>



<p>In addition to the <a href="http://xojo.com/store/#cloud">standard options</a>, Xojo Cloud servers with more RAM, storage and Virtual CPUs are available. Contact&nbsp;<a href="mailto:hello@xojo.com">customer support</a>&nbsp;for details about personalized plans.&nbsp;</p>



<p>Whether you are a seasoned Xojo developer or just getting started, Xojo Cloud provides an intuitive and user-friendly hosting solution for Xojo web applications. Today is a good day to start using Xojo Cloud, visit our <a href="https://xojo.com/cloud/">website</a> to learn more or see the Xojo <a href="https://xojo.com/store/#cloud">Store</a> to pick your package and location.</p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Tutorial: Deploying Web Apps on Linux</title>
		<link>https://blog.xojo.com/2021/05/28/tutorial-deploying-web-apps-on-linux/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Fri, 28 May 2021 15:00:00 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Xojo Cloud]]></category>
		<category><![CDATA[App Hosting]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Hello World]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[webdev]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=8552</guid>

					<description><![CDATA[This tutorial provides a step-by-step guide to deploying Xojo web apps on a Linux server. You'll find deployment of more complex web apps can follow the same basic principles. If all of this seems too complex, Xojo Cloud is the easy, powerful and secure way to deploy web apps.]]></description>
										<content:encoded><![CDATA[<p>This tutorial provides a step-by-step guide to deploying Xojo web apps on a Linux server. We will use <strong>Ubuntu 20.4</strong> (64-bit) running on a remote server (VPS) in this example, but this tutorial should work on other Linux distros with minimal change, for example CentOS.</p>
<p>First, in order to deploy a web app you&#8217;ll need a way to access the remote server using the Terminal (macOS) or through the Command line, also a way to create and/or modify several files, and to copy files from your local computer to the remote server using (S)FTP.</p>
<blockquote><p><strong>Note:</strong> While we are using the &#8220;root&#8221; user for all the operations to keep the tutorial as short as possible, including files/folders/directories creation/edition and also for launching the web app, you&#8217;ll probably want to create a specific user with the proper privileges/group configuration for this. As we all know, you don&#8217;t usually want to run anything as the root user!</p></blockquote>
<p>Though this tutorial is focused on the <strong>deployment</strong> aspects of a web app, we&#8217;ll first create a very simple web app in Xojo. Feel free to use a web app of your own. At the end of this tutorial, you&#8217;ll find deployment of more complex web apps can follow the same basic principles.</p>
<h2>1. The Web App</h2>
<p>This very simple app will display a message when the button is clicked.  Start the Xojo IDE and choose Web from the Project Selector window:</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-8553 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/1-ProyectoWeb.png" alt="" width="882" height="538" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/1-ProyectoWeb.png 882w, https://blog.xojo.com/wp-content/uploads/2021/05/1-ProyectoWeb-300x183.png 300w, https://blog.xojo.com/wp-content/uploads/2021/05/1-ProyectoWeb-768x468.png 768w" sizes="auto, (max-width: 882px) 100vw, 882px" /></p>
<p>Click on the <code>WebPage1</code> item displayed in the Navigator to access the webpage Layout Editor.</p>
<p>Next, drag a button from the Library panel and drop it anywhere on the Layout Editor.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-8554 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/2-Pagina.png" alt="" width="766" height="583" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/2-Pagina.png 766w, https://blog.xojo.com/wp-content/uploads/2021/05/2-Pagina-300x228.png 300w" sizes="auto, (max-width: 766px) 100vw, 766px" /></p>
<p>With the button still selected, add the <code>Pressed</code> Event Handler and type this line of code in the Code Editor:</p>
<pre>MessageBox "Hola Mundo"</pre>
<p>The classic &#8220;Hello World&#8221; en español, this is everything the web app will do.</p>
<h2>2. Setting the Deployment Options</h2>
<p>Click on the <code>Shared</code> option found under the <code>Build Settings</code> section in the Navigator. Next, enter <code>9000</code> as the port under the <code>Build Settings</code> section in the Inspector Panel.</p>
<blockquote><p><strong>Note:</strong> Adding the port is not required at this time because the port can be assigned when running the app once it is deployed to the server.</p></blockquote>
<p><img loading="lazy" decoding="async" class="size-full wp-image-8567 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/InspectorPanel.png" alt="" width="301" height="710" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/InspectorPanel.png 301w, https://blog.xojo.com/wp-content/uploads/2021/05/InspectorPanel-127x300.png 127w" sizes="auto, (max-width: 301px) 100vw, 301px" /></p>
<h2>3. Compile the Web App</h2>
<p>Make sure to choose the Linux checkbox in <code>Build Settings</code>. Then, select <code>X86 64 bit</code> from the <code>Build</code> popup menu in the Inspector Panel.</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-8556 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/4-AjustesCompilacion.jpg" alt="" width="596" height="355" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/4-AjustesCompilacion.jpg 596w, https://blog.xojo.com/wp-content/uploads/2021/05/4-AjustesCompilacion-300x179.jpg 300w" sizes="auto, (max-width: 596px) 100vw, 596px" /></p>
<p>Next, click on the <code>Build</code> button in Xojo&#8217;s IDE toolbar. Once the app is compiled, you&#8217;ll get a Folder/Directory with the following items inside:</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-8557 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/5-BuiltApp.png" alt="" width="626" height="341" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/5-BuiltApp.png 626w, https://blog.xojo.com/wp-content/uploads/2021/05/5-BuiltApp-300x163.png 300w" sizes="auto, (max-width: 626px) 100vw, 626px" /></p>
<p>This is the folder you will copy to the server. I&#8217;m using the <a href="https://cyberduck.io">Cyberduck</a> app on macOS but you can choose any method you like.</p>
<h2>4. Copying the App Folder to the Server</h2>
<p>Make sure to copy the folder with the compiled app to the <code>/var/XojoApps</code> path on the server (you&#8217;ll need to create that folder/directory first). Once all the files have been copied, make sure to set <code>750</code> as the privileges value for the folder and files (choose the option to apply these recursively to all of them).</p>
<p><img loading="lazy" decoding="async" class="size-large wp-image-8568 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/SFTP-CopyFiles-1024x462.png" alt="" width="1024" height="462" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/SFTP-CopyFiles-1024x462.png 1024w, https://blog.xojo.com/wp-content/uploads/2021/05/SFTP-CopyFiles-300x135.png 300w, https://blog.xojo.com/wp-content/uploads/2021/05/SFTP-CopyFiles-768x346.png 768w, https://blog.xojo.com/wp-content/uploads/2021/05/SFTP-CopyFiles.png 1426w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h2>5. Installing Nginx</h2>
<p>If the server doesn&#8217;t have <a href="http://nginx.com">Nginx</a> already installed, install it now. Nginx is a light web server which provides more performance when compared with Apache (that is, it is able to serve more requests per second, among other improvements).</p>
<p>To install Nginx, access the remote server using SSH:</p>
<pre>&gt; SSH root@xxx.xxx.xxx.xxx</pre>
<p>Once the new session is open, type the following commands to install Nginx:</p>
<pre>$ sudo apt update
$ sudo apt install nginx</pre>
<h2></h2>
<h2>6. (Really) Basic Firewall Configuration</h2>
<p>Let&#8217;s tackle the firewall. It will need to accept incoming connections from Nginx. Nginx registers itself as a <a href="https://en.wikipedia.org/wiki/Uncomplicated_Firewall"><code>ufw</code></a> service during its installation. In order to simplify the deployment example, use the most restrictive option allowing only web traffic from port 80:</p>
<pre>$ sudo ufw allow 'Nginx HTTP'</pre>
<p>Type the following command to verify the changes:</p>
<pre>$ sudo ufw status</pre>
<p>The output should be similar to this (in my case access from SSH and 8080 ports are also enabled).</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-8592" src="https://blog.xojo.com/wp-content/uploads/2021/05/7-ufw-status.png" alt="" width="390" height="143" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/7-ufw-status.png 390w, https://blog.xojo.com/wp-content/uploads/2021/05/7-ufw-status-300x110.png 300w" sizes="auto, (max-width: 390px) 100vw, 390px" /></p>
<blockquote><p><strong>Note:</strong> This tutorial does not discuss web security which in the overwhelming majority of cases should be a paramount issue and not ignored. Securing a server is a very complicated process which is why we take care of the for you with <a href="https://www.xojo.com/cloud">Xojo Cloud</a>.</p></blockquote>
<h2>7. Creating a New Nginx &#8220;block&#8221;</h2>
<p>Once Nginx is installed, Ubuntu automatically starts this process, so the web server should be active already. Test this by typing:</p>
<pre>$ systemctl status nginx</pre>
<p>The output  should be similar to this:</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-8559 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/8-Nginx-Status.png" alt="" width="841" height="192" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/8-Nginx-Status.png 841w, https://blog.xojo.com/wp-content/uploads/2021/05/8-Nginx-Status-300x68.png 300w, https://blog.xojo.com/wp-content/uploads/2021/05/8-Nginx-Status-768x175.png 768w" sizes="auto, (max-width: 841px) 100vw, 841px" /></p>
<p>Once the server is running, create a new server block. Think about this block like the virtual hosts on Apache. They will encapsulate the configuration details and will allow hosting of more than one domain on the same server.</p>
<p>Nginx loads these configuration files from the <code>/etc/nginx/sites-available</code> path. Create a new file using the <code>nano</code> editor:</p>
<pre>$ sudo nano /etc/nginx/sites-available/XojoDemo</pre>
<p>Next type the following block in the resulting new document:</p>
<pre>server	{
listen 80;
listen [::]:80;
root /var/XojoApps/XojoDemo;
index index.html index.htm index.nginx-debian.html;

server_name xxx.xxx.xxx.xxx;

location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:9000;
}
}</pre>
<p>Replace <code>xxx.xxx.xxx.xxx</code> with your server IP address or the server domain (DNS record, if you have one pointing to it). We are instructing Nginx to redirect the traffic from port 80 to 9000 where our web app will be listening.</p>
<p>Save the file and exit <code>nano</code>. Next, enable the file by creating a link from the file to the <code>sites-enabled</code> directory where Nginx reads the configuration files:</p>
<pre>$ sudo ln -s /etc/nginx/sites-available/XojoDemo /etc/nginx/sites-enabled/</pre>
<p>Finally, check for syntax errors in the Nginx configuration files:</p>
<pre>$ sudo nginx -t</pre>
<p><img loading="lazy" decoding="async" class="size-full wp-image-8560 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/9-Nginx-check.png" alt="" width="486" height="44" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/9-Nginx-check.png 486w, https://blog.xojo.com/wp-content/uploads/2021/05/9-Nginx-check-300x27.png 300w" sizes="auto, (max-width: 486px) 100vw, 486px" /></p>
<p>If everything is Ok, then reload <code>Nginx</code> so it reads the configuration files again and applies the changes:</p>
<pre>$ sudo systemctl restart nginx</pre>
<h2></h2>
<h2>8. Executing the Xojo Web App</h2>
<p>It&#8217;s time to start our Xojo web app and test the access from the web browser of your choice. Change the current path to the one where you copied the web app. In this example:</p>
<pre>$ cd /var/XojoApps/XojoDemo</pre>
<p>Next, start the app by issuing the following command:</p>
<pre>$ ./XojoDemo --port=9000</pre>
<p>Open a new window/tab in the web browser and enter the IP address/web domain pointing to the web server. There is the web app up and running:</p>
<p><img loading="lazy" decoding="async" class="size-large wp-image-8561 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/10-HolaMundo-1024x592.png" alt="" width="1024" height="592" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/10-HolaMundo-1024x592.png 1024w, https://blog.xojo.com/wp-content/uploads/2021/05/10-HolaMundo-300x174.png 300w, https://blog.xojo.com/wp-content/uploads/2021/05/10-HolaMundo-768x444.png 768w, https://blog.xojo.com/wp-content/uploads/2021/05/10-HolaMundo.png 1070w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>Congrats! Now for the harsh truth. This way of executing web apps is not ideal. Because it started from the SSH session on the server, if we exit or interrupt the SSH connection, the web app will exit and won&#8217;t be accessible anymore for anyone. This problem also results in a 504 Gateway Time-Out page served by Nginx:</p>
<p><img loading="lazy" decoding="async" class="size-large wp-image-8562 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/11-TimeOut-1024x592.png" alt="" width="1024" height="592" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/11-TimeOut-1024x592.png 1024w, https://blog.xojo.com/wp-content/uploads/2021/05/11-TimeOut-300x174.png 300w, https://blog.xojo.com/wp-content/uploads/2021/05/11-TimeOut-768x444.png 768w, https://blog.xojo.com/wp-content/uploads/2021/05/11-TimeOut.png 1070w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<p>In order to fix this problem, create a <code>Service</code>.  A service will allow the app to run without any intervention, even if there is a server interruption, for example, if the server is restarted or the app crashes.</p>
<h2>9. Creating a Service</h2>
<p>Type the following in the current SSH session:</p>
<pre>$ sudo nano /lib/systemd/XojoDemoApp.service</pre>
<p>Next, type the following snippet of text in the new, opened document (make sure to save the changes once you exit nano).</p>
<pre>[Service]
Type=simple
Restart=always
RestartSec=3
User=root
ExecStart=/var/XojoApps/XojoDemo/XojoDemo --port=9000
[Install]
WantedBy=multi-user.target</pre>
<p>Now that you have exited nano, and with the new service created, activate it with the following commands:</p>
<pre>$ sudo systemctl enable /lib/systemd/XojoDemoApp.service
$ sudo systemctl start XojoDemoApp.service</pre>
<p>Get the service status by typing the following command:</p>
<pre>$ sudo systemctl status XojoDemoApp.service</pre>
<p>You should get an output similar to this:</p>
<p><img loading="lazy" decoding="async" class="size-full wp-image-8570 aligncenter" src="https://blog.xojo.com/wp-content/uploads/2021/05/ServiceStatus.png" alt="" width="664" height="134" srcset="https://blog.xojo.com/wp-content/uploads/2021/05/ServiceStatus.png 664w, https://blog.xojo.com/wp-content/uploads/2021/05/ServiceStatus-300x61.png 300w" sizes="auto, (max-width: 664px) 100vw, 664px" /></p>
<p>Now, you can be confident that the Xojo web app will be running even if you close the current SSH connection with the remote server <em>and</em> that it will restart even if the remote server is restarted or the app crashes.</p>
<p>If all of this seems more complex than you care to manage, <a href="https://www.xojo.com/cloud">Xojo Cloud</a> is the easy, powerful and secure way to deploy web apps. Xojo does not provide support for configuring your web server for use with Xojo web apps. To read more about deploying Xojo web apps, visit the Xojo Docs <a href="https://documentation.xojo.com/topics/application_deployment/web/deployment_overview.html">Web Deployment Overview</a> and the <a href="https://documentation.xojo.com/topics/application_deployment/web/deployment_details.html">Web Deployment Details</a> pages.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Setting up puTTY to create a SSH tunnel from Windows to Xojo Cloud</title>
		<link>https://blog.xojo.com/2020/10/29/setting-up-putty-to-create-a-ssh-tunnel-from-windows-to-xojo-cloud/</link>
		
		<dc:creator><![CDATA[Wayne Golding ]]></dc:creator>
		<pubDate>Thu, 29 Oct 2020 10:00:52 +0000</pubDate>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Guest Post]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Xojo Cloud]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=7644</guid>

					<description><![CDATA[Here’s the configuration document for getting puTTY to connect to the Xojo Cloud database.  You might want to note that while Windows 10 now includes a SSH client it doesn’t support SSH tunnels very well due to always executing a connection command.]]></description>
										<content:encoded><![CDATA[
<p>There are just a few steps to get puTTY to connect to your Xojo Cloud database.&nbsp; You might want to note that while Windows 10 now includes a SSH client, it doesn’t support SSH tunnels very well due to always executing a connection command.</p>



<p>First, expand the SSH tree in the categories list and select tunnels.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="678" height="662" src="https://blog.xojo.com/wp-content/uploads/2020/10/image.png" alt="" class="wp-image-7645" srcset="https://blog.xojo.com/wp-content/uploads/2020/10/image.png 678w, https://blog.xojo.com/wp-content/uploads/2020/10/image-300x293.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></figure>



<p>Add a new forwarded port, here we are using port 5432 for Postgres, but you could also use 3306 for mySQL.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="678" height="664" src="https://blog.xojo.com/wp-content/uploads/2020/10/image-1.png" alt="" class="wp-image-7646" srcset="https://blog.xojo.com/wp-content/uploads/2020/10/image-1.png 678w, https://blog.xojo.com/wp-content/uploads/2020/10/image-1-300x294.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></figure>



<p>Press the &#8220;Add&#8221; button to save the forward and tick the &#8220;Local ports accept connections from other hosts&#8221; checkbox.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="678" height="664" src="https://blog.xojo.com/wp-content/uploads/2020/10/image-2.png" alt="" class="wp-image-7650" srcset="https://blog.xojo.com/wp-content/uploads/2020/10/image-2.png 678w, https://blog.xojo.com/wp-content/uploads/2020/10/image-2-300x294.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></figure>



<p>Select the SSH tree and tick the “Don’t start a shell or command at all&#8221; checkbox. This is the bit missing from the Windows native SSH client.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="678" height="664" src="https://blog.xojo.com/wp-content/uploads/2020/10/image-3.png" alt="" class="wp-image-7651" srcset="https://blog.xojo.com/wp-content/uploads/2020/10/image-3.png 678w, https://blog.xojo.com/wp-content/uploads/2020/10/image-3-300x294.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></figure>



<p>Select &#8220;Session&#8221; at the very top of the categories list and enter your Xojo Cloud IP address along with a session name and Save so you’ll have this configuration available to you next time.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="678" height="664" src="https://blog.xojo.com/wp-content/uploads/2020/10/image-4.png" alt="" class="wp-image-7652" srcset="https://blog.xojo.com/wp-content/uploads/2020/10/image-4.png 678w, https://blog.xojo.com/wp-content/uploads/2020/10/image-4-300x294.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></figure>



<p>Now you can open the connection where you will be prompted for your SSH Username (dbadmin) &amp; password.&nbsp; If this is successful, you will be left with a terminal window that appears to do nothing – leave it open until you want to disconnect.</p>



<p>Once the tunnel is established you can use localhost as the host address of your Postgres or MySQL database. </p>



<p><em>Wayne Golding has been a Xojo developer since 2005 and is a Xojo MVP. He operates the IT Company <a href="http://www.axisdirect.nz">Axis Direct Ltd </a>which primarily develops applications using Xojo that integrate with Xero www.xero.com. Wayne’s hobby is robotics where he uses Xojo to build applications for his Raspberry Pi, often implementing IoT for remote control.</em></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
