Blog

  • Use a folder on VPS or shared drive with Gumlet

    Can I set up a folder on a vps and ise gumlet for serving images from that folder? An advantage I see is that I will be able to sync images, files etc with that folder in vps. Yes, you can set up a folder on a VPS (Virtual Private Server) and use Gumlet to serve images from that folder. Gumlet is an image optimization and delivery service that can be integrated with your existing infrastructure. (more…)
  • FTP error in ClassicPress

    Fixing “Unable to Create Directory” and FTP Prompt Issues in ClassicPress on Caddy Server

    When I first installed ClassicPress on a freshly configured Caddy web server, everything seemed to go smoothly — until the first time I tried to upload an image.

    The familiar red banner appeared with the error:

    wordpress permissions : 
    Unable to create directory wp-content/uploads/2025/11. 
    Is its parent directory writable by the server?
    

    At first glance, it looked like a minor permissions glitch, but it turned out to be the start of a deeper configuration issue involving how Caddy handles file ownership and how ClassicPress writes to disk. This article walks through exactly what caused the problem, how to fix it safely, and how to prevent the related FTP credential prompt that often follows. We’ll also cover how to remove index.php from your site’s URLs to complete a clean setup.

     

     

    ClassicPress Caddy File Permission Error
    Typical upload error on ClassicPress with incorrect file permissions
     

    Understanding the Root Cause

    When ClassicPress (or WordPress) reports it cannot create a directory under wp-content/uploads, it’s usually because the web server process doesn’t have permission to write there. In this case, the files were owned by the user amar — the one who installed ClassicPress — while Caddy runs as its own system user caddy. Because Linux enforces strict file ownership rules, the Caddy process simply didn’t have permission to create subdirectories like /wp-content/uploads/2025/11.

    If you’re coming from Apache or Nginx, this can be confusing because those servers typically run under www-data or apache, and many hosting setups preconfigure permissions automatically. With Caddy, everything starts cleaner — and stricter — so you’ll need to adjust permissions manually after installation.

     

    Linux permissions diagram
    Ownership mismatch between Caddy and local user
     

    Fixing Directory Permissions and Ownership

    Step 1: Add Caddy to Your User Group

    Adding the caddy user to your local user’s group (in this case, amar) lets the web server and your user account share access to the project folders. Run the following commands:

    sudo usermod -aG amar caddy
    sudo systemctl restart caddy
    

    Restarting Caddy ensures the new group membership takes effect immediately.

     

    Caddy user permissions command
    Granting group access to the Caddy user
     

    Step 2: Adjust Upload Directory Permissions

    Next, give the uploads directory group write access so both amar and caddy can manage files:

    sudo chmod -R 775 /var/www/classicpress/wp-content/uploads
    

    The permission 775 allows the owner and group to read, write, and execute, while keeping everyone else read-only — a good balance of security and flexibility.

    Fixing the FTP Prompt When Installing Themes

    After fixing the upload issue, the next problem appeared when installing a theme — ClassicPress unexpectedly asked for FTP credentials:

    Installing theme from uploaded file: mcluhanNov25.zip
    Connection Information
    To perform the requested action, ClassicPress needs to access your web server.
    Please enter your FTP credentials to proceed.
    

    This prompt appears because ClassicPress doesn’t realise it can write directly to your filesystem. By default, it assumes you’ll upload via FTP unless configured otherwise. Let’s fix that.

    Step 3: Enable Direct File Access

    Edit your wp-config.php (or wp1-config.php) and add this line just before the line that says:
    /* That’s all, stop editing! Happy publishing. */

    define('FS_METHOD', 'direct');
    

    This single directive tells ClassicPress to perform direct writes to disk through PHP, bypassing the need for FTP credentials entirely.

     

    ClassicPress wp-config direct method
    Enable direct filesystem writes by updating wp-config.php
     

    Removing index.php from URLs

    With permissions fixed and FTP bypassed, the next refinement was cleaning up URLs. ClassicPress sites running on Caddy sometimes display index.php in the path — for example, example.com/index.php/about instead of example.com/about.

    Step 4: Update Your Caddyfile

    Open your site’s Caddyfile (commonly at /etc/caddy/Caddyfile) and ensure it includes a rewrite rule that redirects all non-static requests to index.php internally:

    example.com {
        root * /var/www/classicpress
        php_fastcgi unix//run/php/php8.2-fpm.sock
        file_server
    
        @wordpress {
            path_regexp wp ^/(wp-admin|wp-login|wp-cron|wp-content|wp-includes|wp-json)
        }
        @notStatic {
            file {
                try_files {path} /index.php?{query}
            }
        }
    
        rewrite @notStatic /index.php?{query}
    }
    

    Then reload Caddy to apply the changes:

    sudo systemctl reload caddy
    

    Your ClassicPress URLs will now be clean, SEO-friendly, and free of index.php.

     

    Caddy rewrite rules for WordPress
    Proper rewrite rules in Caddyfile to remove index.php
     

    Summary of Steps

    Step Command / Action
    Add Caddy to group sudo usermod -aG amar caddy
    Restart Caddy sudo systemctl restart caddy
    Set upload folder permissions sudo chmod -R 775 wp-content/uploads
    Enable direct file writes define('FS_METHOD', 'direct');
    Remove index.php from URLs Add rewrite @notStatic /index.php?{query} in Caddyfile

    Final Thoughts

    Caddy is a fantastic choice for hosting ClassicPress or WordPress — lightweight, secure, and automatically HTTPS-enabled. But because it runs as its own user, file ownership issues are almost inevitable on first install. By giving Caddy group access to your project, setting sensible permissions, and defining FS_METHOD, you solve both the upload error and the FTP prompt in one go. Adding the rewrite rule completes the setup, removing index.php and ensuring your URLs are clean and professional.


    FAQ

    1. Why does ClassicPress ask for FTP credentials?
    Because it doesn’t detect writable permissions via PHP. Adding define('FS_METHOD', 'direct'); fixes that.

    2. Is it safe to give Caddy write access?
    Yes, as long as only the wp-content folder is writable. Keep wp-admin and wp-includes read-only.

    3. Do I need to reload PHP-FPM after changing permissions?
    Usually not, but it’s a good idea if you’ve adjusted user groups or ownership.

    Have you faced this issue on your first Caddy install? Share your experience in the comments — your fix might save someone else’s weekend!


    This post titled “Fixing ‘Unable to Create Directory’ and FTP Prompt Issues in ClassicPress on Caddy Server” was published under category “Server Administration” and last updated November 12, 2025.

  • Test Blog Post

    What this post is all about – Excerpt


    This is a paragraph

    Introduction

    The Quick Brown Fox Jumped Over The Lazy Dog.

    Subject Matter

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Elementum tempus egestas sed sed risus pretium quam vulputate. Sed sed risus pretium quam vulputate. Pharetra convallis posuere morbi leo urna molestie. Vitae sapien pellentesque habitant morbi tristique senectus et netus. Posuere ac ut consequat semper viverra nam. Purus faucibus ornare suspendisse sed nisi lacus sed viverra. Varius sit amet mattis vulputate enim. Quis varius quam quisque id diam. Orci nulla pellentesque dignissim enim sit amet venenatis urna.

    Discussion

    Sed odio morbi quis commodo odio aenean. Feugiat pretium nibh ipsum consequat nisl vel pretium lectus. Libero volutpat sed cras ornare. Et ultrices neque ornare aenean euismod elementum nisi quis eleifend. Erat velit scelerisque in dictum. Venenatis a condimentum vitae sapien pellentesque habitant morbi tristique. Nibh venenatis cras sed felis eget velit aliquet. Ut venenatis tellus in metus. Nunc scelerisque viverra mauris in aliquam. Dui accumsan sit amet nulla facilisi. Maecenas ultricies mi eget mauris. Sollicitudin ac orci phasellus egestas tellus rutrum tellus pellentesque. Aliquam purus sit amet luctus venenatis lectus magna fringilla.

    Pro’s and Con’s

    Ut tristique et egestas quis ipsum suspendisse ultrices gravida. Arcu non odio euismod lacinia at quis risus. Tortor at risus viverra adipiscing. Elit eget gravida cum sociis natoque penatibus et. Risus at ultrices mi tempus. Cursus euismod quis viverra nibh cras pulvinar mattis. Quis enim lobortis scelerisque fermentum dui. Arcu cursus vitae congue mauris rhoncus aenean vel elit. Vulputate sapien nec sagittis aliquam malesuada bibendum arcu. Dolor morbi non arcu risus quis varius quam quisque. Sit amet justo donec enim diam vulputate ut pharetra sit. Adipiscing vitae proin sagittis nisl rhoncus mattis rhoncus. Ultricies lacus sed turpis tincidunt id. Euismod nisi porta lorem mollis aliquam ut porttitor. Scelerisque viverra mauris in aliquam. Semper viverra nam libero justo laoreet sit amet. Blandit cursus risus at ultrices mi tempus imperdiet. Nam libero justo laoreet sit amet cursus sit amet dictum. In hac habitasse platea dictumst vestibulum rhoncus est pellentesque elit.

    What is the potential?

    Mi in nulla posuere sollicitudin aliquam ultrices sagittis orci a. Laoreet sit amet cursus sit amet dictum sit amet justo. Diam ut venenatis tellus in metus vulputate eu scelerisque felis. Aliquam sem fringilla ut morbi tincidunt augue. Orci sagittis eu volutpat odio facilisis mauris sit amet. Quis auctor elit sed vulputate mi sit. Eleifend quam adipiscing vitae proin. Massa sed elementum tempus egestas sed sed risus pretium quam. Urna neque viverra justo nec ultrices dui sapien eget. Risus ultricies tristique nulla aliquet enim tortor at auctor. Quis auctor elit sed vulputate mi sit. Consequat interdum varius sit amet mattis vulputate enim nulla. Volutpat odio facilisis mauris sit amet massa vitae. Ultricies leo integer malesuada nunc vel risus commodo viverra. In arcu cursus euismod quis viverra nibh cras. Gravida in fermentum et sollicitudin ac orci. Risus viverra adipiscing at in tellus. Sed risus ultricies tristique nulla aliquet. Volutpat ac tincidunt vitae semper quis.

    Conclusion

    Iaculis nunc sed augue lacus viverra vitae congue eu consequat. Ut faucibus pulvinar elementum integer enim neque volutpat ac tincidunt. Quam lacus suspendisse faucibus interdum posuere lorem ipsum dolor. Amet consectetur adipiscing elit ut aliquam purus sit amet. Vivamus at augue eget arcu dictum varius duis. Pulvinar neque laoreet suspendisse interdum consectetur libero id faucibus. Faucibus turpis in eu mi bibendum. Eget dolor morbi non arcu risus quis varius quam. Sollicitudin nibh sit amet commodo nulla facilisi nullam vehicula. Lobortis scelerisque fermentum dui faucibus in ornare quam. Ornare arcu odio ut sem nulla pharetra diam sit amet.


  • What Are Content Delivery Networks?

    Content Delivery Networks (CDNs) are distributed networks of servers that provide fast, reliable, and scalable delivery of Internet content. They are specifically designed to solve the problem of latency, the delay that occurs when you request to load a web page and the server has to deliver that page to your location.

    As an example, when you are streaming live IPL match on Jio, the content is delivered via a CDN. Similarly, when you update your phone to new iOs or android version, or any apps for that matter, or listen to your favourite story on gaathastory podcast on Spotify.. a CDN works behind the scene to deliver the content.

    What are the different types of CDNs

    Introduction to Content Delivery Networks by Amar Vyas

    Image CDNs

    Image CDNs – specialize in delivering images quickly and efficiently. They often incorporate on-the-fly image optimization, resizing, and format conversion. For startups, consumers, or small businesses, here are some examples in each type:

    Cloudinary Imgix ImageEngine Fastly Akamai Image Manager

    Video CDNs

    Video CDNs – These deliver video content with low latency and high quality, even to large audiences. They often include video transcoding and adaptive bitrate streaming capabilities. Examples:

    Brightcove JW Player Akamai Kaltura Fastly Streaming

    Script CDNs

    Script CDNs – These deliver JavaScript, CSS, and other web scripts. These can include libraries and frameworks, which developers can link to directly in their code.

    jsDelivr cdnjs (Cloudflare) Microsoft Ajax Content Delivery Network Google Hosted Libraries unpkg bootstrapcdn

    Mixed Media CDNs

    Mixed Media CDNs – These deliver a mix of content types including images, videos, audio, and scripts. They often include capabilities for on-the-fly optimization and conversion of various types of media.

    Amazon CloudFront KeyCDN Cloudflare Fastly Akamai

    Software/Code CDNs

    Software/Code CDNs – These deliver software applications, packages, or code snippets. They’re particularly useful for serving software downloads or updates to a global audience.

    GitHub (for open-source code) npm (for JavaScript packages) Microsoft Azure CDN JFrog Bintray CloudSmith

    Document CDNs

    Document CDNs – These are specialized for serving documents, such as PDFs, Word documents, and Excel spreadsheets.

    Scribd Google Docs (when published to the web) Slideshare Issuu Yumpu

    Other types of Content Delivery Networks

    CDNs can also be tailored for specific needs, like Gaming CDNs (optimized for delivering game content), Private CDNs (owned and operated by single businesses for their specific needs), and Edge Computing CDNs (extend their function beyond content delivery to include computation near the edge of the network).

    Image CDNsVideo CDNsScript CDNsMixed Media CDNsSoftware/Code CDNsDocument CDNs
    CloudinaryBrightcovejsDelivrAmazon CloudFrontGitHubScribd
    ImgixJW Playercdnjs (Cloudflare)KeyCDNnpmGoogle Docs
    ImageEngineAkamaiMicrosoft Ajax Content Delivery NetworkCloudflareMicrosoft Azure CDNSlideshare
    FastlyKalturaGoogle Hosted LibrariesFastlyJFrog BintrayIssuu
    Akamai Image ManagerFastly StreamingunpkgAkamaiCloudSmithYumpu
    BootstrapCDNBunnyCDN,GumletOffice365

    Can social media sites be considered CDNs?

    This question came to my mind, considering they allow embedding of their content into websites. Image/video creation Tools such as Canva, Crello , Invideo also allow embedding of content. So the answer is probably a partial “yes”. Social media sites and image/video creation SaaS, they can sometimes function similar to CDNs, especially when they provide functionality for embedding media. However, they typically have additional functionalities beyond content delivery, so they’re not solely considered CDNs.

    Embed Documents as CDN

  • Note Taking Apps

    Update 2021

    Since I wrote the post on Medium, world is a different place, with multiple options!

    Install:
    Criteria:
    – The app or service should be available at least on 2 devices (e.g Windows + Mac, or iOS + Android). Apps specific to a platform (e.g. Mac + iOS) are not included. e.g. iaWriter, Apple Notes, Ulysses, Bear, Paper by WeTransfer.
    – Browser based (only) are also included

    – ——

    | | Windows | Mac | Linux | iOs | Android |Web|Notes|
    |:–|:–|:–|:–|:–|:–|:–|:–|
    | Atom | X |X |X | | ||Open Source|
    | Box Notes| | | | | |X|Complicated feature and pricing set: https://cloud.app.box.com/v/BoxBusinessEditions|
    | Dropbox paper | | | | X | X |X|Freemium|
    | Etherpad| X | X | X | | |X|Self hosted option|
    | Evernote | X | X | | X | X |X||
    | Focuswriter | X |X | X | | || Related to Focuswriter.co?|
    | Google Keep | | | | X | X |X|Chrome Ext|
    | Haroopad | X | X | X | | ||
    | Joplin | | X | X | | ||Self hosted option |
    | [Notable](https://notable.app#download) | X | X|X | | ||
    |Notepad by Clickup||||||X|Chrome Extension|
    | Notion | X | X| | X | X |X||
    |OneNote | X | X | | X | X |X|Windows Phone + Apple Watch + Chrome Ext|
    |Remarkable | X | |X | | ||Note: [Windows App under development](https://remarkableapp.github.io/windows.html)|
    |Simplenote |X | X | X | X | X |X|from the folks at Automattic (parent company of WordPress) |
    | [Slite](https://slite.com/pricing) | X | X | | X | X |X|

    |[Stackedit ](https://stackedit.io/) | | | | | |X|Markdown, Chrome App Not updated since Mid 2019|
    |Standard Notes| X | X | X | X | X |Free trial|
    | [Turtl](https://turtlapp.com/download/)| X|X | X | X | Planned |X|Chrome/Firefox Ext|
    |Typora | X | X | X | | ||
    |Zettlr | X | X | X | | |||
    |Zoho Notebook | X|X | | X | X |X|

    —–

    Mac Only
    ~~‌~~
    —-
    Ulysses
    [Byword](https://apps.apple.com/us/app/byword/id420212497?mt=12)

    Box Notes
    Dropbox Paper
    Evernote
    Google Keep (?)
    Standard Notes
    Simplenote

    Phone based / app based.

    Others:
    Typora
    Macdown
    Atom
    Draft
    Ulysses
    Quiver
    Mou

    Online Markdown editors

    #### Dillinger
    #### Stackedit
    #### Etherpad
    #### HackMD

    Linux:
    Remarkable
    Focuswriter
    Haroopad
    UberWriter
    Ghostword (also Windows) https://wereturtle.github.io/
    ghostwriter

    Joplin (Self Hosted) https://joplinapp.org/clipper/

    Roam Research
    Notion
    [Slite](https://slite.com/pricing)

    Note Taking Updated

    https://clickup.com/blog/note-taking-apps/
    Bear
    Workflowy
    Squidnote
    Dimer (Beta, Came, Paid)

    Paper by WeTransfer

    —-

    HTML5 Markdown editor. This well-known online Markdown editor runs directly in your browser and offers much of the functionality that you’d find in any downloadable app. Dillinger allows you to preview and export your text as HTML, Styled HTML, Markdown, and as a PDF.

    – https://www.oberlo.com/blog/markdown-editors
    – https://itsfoss.com/online-markdown-editors/
    – https://github.com/ether/etherpad-lite/wiki/Sites-that-run-Etherpad-Lite and https://static.etherpad.org/index.html
    – https://daringfireball.net/projects/markdown/dingus
    – https://www.techradar.com/best/best-note-taking-app
    – https://www.lifewire.com/best-note-taking-apps-4136590
    – https://collegeinfogeek.com/best-note-taking-apps/
    – https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/
    – https://standardnotes.org/extensions
    – https://itsfoss.com/note-taking-apps-linux/

  • Memories from Mahakumbha 2025

    I am writing our (the Mrs and I) Mahakumbha experience in this post… we completed our snaan on 5th February 2025. There may be far more detailed, and more engaging travelogues, but below is my sincere effort.

    (more…)