<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bao Nguyen</title>
    <description>The latest articles on DEV Community by Bao Nguyen (@ducbao414).</description>
    <link>https://dev.to/ducbao414</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3051537%2Fea3c24ba-027a-4932-88b2-bf75acfa2150.jpeg</url>
      <title>DEV Community: Bao Nguyen</title>
      <link>https://dev.to/ducbao414</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ducbao414"/>
    <language>en</language>
    <item>
      <title>Use CLI on any OS to read-write your iPhone folders (without cloud or cable)</title>
      <dc:creator>Bao Nguyen</dc:creator>
      <pubDate>Tue, 22 Apr 2025 02:17:13 +0000</pubDate>
      <link>https://dev.to/ducbao414/use-cli-on-any-os-to-read-write-your-iphone-folders-without-cloud-or-cable-32hb</link>
      <guid>https://dev.to/ducbao414/use-cli-on-any-os-to-read-write-your-iphone-folders-without-cloud-or-cable-32hb</guid>
      <description>&lt;p&gt;Apple's iOS is a closed ecosystem, but what if you could access your iPhone folders via the CLI on any device, Linux, Windows, macOS, or Android? This would enable automation and programmability for your iPhone data.&lt;/p&gt;

&lt;p&gt;My goal is simple: read-write access to my iPhone via CLI or API, without cloud/internet or connected cable or jailbreaking, or special permissions, and across any OS.&lt;/p&gt;

&lt;p&gt;The solution? Running a persistent background WebDAV server on iPhone, which allows wireless file management &amp;amp; automation from other devices.&lt;/p&gt;

&lt;p&gt;&lt;a href="" class="article-body-image-wrapper"&gt;&lt;img&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Spinning Up WebDAV Servers
&lt;/h2&gt;

&lt;p&gt;I put together a lightweight (~1MB in download size) iOS app called PocketServer over the weekends for spinning up multiple local HTTP/WebDAV servers that can run persistently in the background, even when you switch apps or lock your iPhone screen.&lt;/p&gt;

&lt;p&gt;Get &lt;a href="https://apps.apple.com/us/app/pocketserver-local-server/id6743850070?platform=iphone" rel="noopener noreferrer"&gt;PocketServer&lt;/a&gt; from the App Store, tap WebDAV → choose folder and that's it, you have a local, persistent background WebDAV Server serving your folder, available to other devices within the same network (e.g. same Wifi)&lt;/p&gt;

&lt;p&gt;The WebDAV server is Class 1 compliant (Basic), compatible with WebDAV clients like &lt;a href="https://cyberduck.io/" rel="noopener noreferrer"&gt;Cyberduck&lt;/a&gt;, &lt;a href="https://rclone.org/" rel="noopener noreferrer"&gt;rclone&lt;/a&gt; (GUI &amp;amp; CLI, available on macOS, Windows, and Linux), etc. This guide will use Cyberduck, but &lt;a href="https://www.youtube.com/watch?v=PRDj-7p4H8Y" rel="noopener noreferrer"&gt;rclone works too&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There are other iOS apps for creating WebDAV Servers, the reason I wrote PocketServer: lightweight, dead simple to setup, and most importantly persistent background running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclosure about the pricing:&lt;/strong&gt; pretty much free to use, without ads. You only need the Pro upgrade ($2.99 one-time purchase, no subscription) for some extra customization.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Read/Write with Cyberduck CLI
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://cyberduck.io/" rel="noopener noreferrer"&gt;Cyberduck&lt;/a&gt; is a libre server and cloud storage browser for Mac and Windows with support for FTP, SFTP, WebDAV, Amazon S3, OpenStack Swift, Backblaze B2, Microsoft Azure &amp;amp; OneDrive, Google Drive and Dropbox.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://duck.sh/" rel="noopener noreferrer"&gt;Cyberduck CLI&lt;/a&gt; (duck) available to Mac, Windows and Linux (as RPM &amp;amp; DEB package).&lt;/p&gt;

&lt;p&gt;After setting up WebDAV server on your iPhone, install Cyberduck (GUI or CLI) on your other devices.&lt;/p&gt;

&lt;p&gt;These other devices need to be on the same network as your iPhone to access the WebDAV server.&lt;/p&gt;

&lt;p&gt;Suppose the WebDAV Server address is: &lt;code&gt;192.168.1.2:63609&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Read
&lt;/h3&gt;

&lt;p&gt;List files &amp;amp; folders:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;duck &lt;span class="nt"&gt;--list&lt;/span&gt; http://192.168.1.2:63609/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;\&lt;br&gt;
Download file &lt;code&gt;&amp;lt;file&amp;gt;&lt;/code&gt; to local &lt;code&gt;&amp;lt;folder&amp;gt;&lt;/code&gt; :  \&lt;br&gt;
(the file should also include its extension as showed in the list command)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;duck &lt;span class="nt"&gt;--download&lt;/span&gt; http://192.168.1.2:63609/&amp;lt;file&amp;gt; &amp;lt;folder&amp;gt;/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;\&lt;br&gt;
Download a whole WebDAV folder to local &lt;code&gt;&amp;lt;folder&amp;gt;&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;duck &lt;span class="nt"&gt;--download&lt;/span&gt; http://192.168.1.2:63609/ &amp;lt;folder&amp;gt;/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Write
&lt;/h3&gt;

&lt;p&gt;Upload a whole &lt;code&gt;&amp;lt;folder&amp;gt;&lt;/code&gt; on disk to a WebDAV Server &lt;code&gt;&amp;lt;subfolder&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;duck &lt;span class="nt"&gt;--upload&lt;/span&gt; http://192.168.1.2:63609/&amp;lt;subfolder&amp;gt;/ &amp;lt;folder&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;\&lt;br&gt;
Delete a whole WebDAV &lt;code&gt;&amp;lt;subfolder&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;duck &lt;span class="nt"&gt;--delete&lt;/span&gt; http://192.168.1.2:63609/&amp;lt;subfolder&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;\&lt;br&gt;
For the full CLI usage, please refer to Cyberduck documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-Up
&lt;/h2&gt;

&lt;p&gt;With just a few simple steps and no cables or clouds, you can take full control of your iPhone's files.&lt;/p&gt;

&lt;p&gt;You can interact with it through any compatible WebDAV client, integrate it into your workflow or automation.&lt;/p&gt;

&lt;p&gt;It's simple, fast, and can be surprisingly powerful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;I'm the developer of the &lt;a href="https://apps.apple.com/us/app/pocketserver-local-server/id6743850070?platform=iphone" rel="noopener noreferrer"&gt;PocketServer&lt;/a&gt; app mentioned in this article and may benefit financially from its use.&lt;/p&gt;

&lt;p&gt;However, I have no affiliation with &lt;a href="https://cyberduck.io/" rel="noopener noreferrer"&gt;Cyberduck&lt;/a&gt;, &lt;a href="https://rclone.org/" rel="noopener noreferrer"&gt;rclone&lt;/a&gt; or their developers. These are simply tools that I find useful and recommend based on personal experience.&lt;/p&gt;

</description>
      <category>ios</category>
      <category>cli</category>
      <category>linux</category>
    </item>
    <item>
      <title>A tiny 1MB iOS app for spinning up local HTTP/WebDAV Servers that persist in the background</title>
      <dc:creator>Bao Nguyen</dc:creator>
      <pubDate>Tue, 15 Apr 2025 02:49:56 +0000</pubDate>
      <link>https://dev.to/ducbao414/a-tiny-1mb-ios-app-for-spinning-up-local-httpwebdav-servers-that-persist-in-the-background-2ma3</link>
      <guid>https://dev.to/ducbao414/a-tiny-1mb-ios-app-for-spinning-up-local-httpwebdav-servers-that-persist-in-the-background-2ma3</guid>
      <description>&lt;p&gt;I wrote a minimal iOS app called &lt;a href="https://apps.apple.com/us/app/pocketserver-local-server/id6743850070?platform=iphone" rel="noopener noreferrer"&gt;PocketServer&lt;/a&gt; (~1MB in download size) that creates persistent local HTTP/WebDAV servers which can actually run in the background.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh11u2ghx96eix98a93re.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh11u2ghx96eix98a93re.jpeg" alt="Image description" width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Serve a folder via WebDAV — browse/add/delete files from others devices on the same network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Host a static website or directory listing, accessible locally.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Share files cross-platform on the same network, no app needed on the receiving side.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why&lt;/strong&gt;&lt;br&gt;
There are already iOS apps for cross-platform file sharing, local HTTP servers, the reason I wrote PocketServer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A lightweight app you can download even on slow connections (1MB is 2 minutes on 2G). Imagine not wanting to use the cloud, but still being asked to download a 50–100MB app just to share a file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Background HTTP/WebDAV servers that keep running even when you switch apps.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ramen for next month.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>showdev</category>
    </item>
  </channel>
</rss>
