Author: RunCloud Team

  • Upgrading Your Server’s Operating System on RunCloud

    Upgrading Your Server’s Operating System on RunCloud

    If you’re still using Ubuntu 18.04 LTS (Bionic Beaver), it’s time to start thinking about upgrading.

    As of May 31, 2023, Ubuntu 18.04 will reach its End of Standard Support (EOSS) date, meaning that it will no longer receive security updates, bug fixes, or technical support from Canonical.

    In this article, we’ll discuss the importance of upgrading from Ubuntu 18.04, the risks of staying on an unsupported system, and how to make the transition to a newer, supported version of Ubuntu.

    Effective June 1st, 2023: We will be discontinuing support for connections made using TLS 1.0. This decision aligns with industry standards and best practices to maintain a secure environment for all of our users. Learn more.

    What Is An EOL Version Of Ubuntu?

    EOL stands for end of life and is a tag given to all the releases of Ubuntu that are no longer being supported by Canonical, the company behind Ubuntu. This means that it will no longer receive any security updates, bug fixes, or new features.

    Running an EOL version of Ubuntu exposes your system to potential vulnerabilities, compatibility issues, and performance degradation.

    Using an EOL version poses several risks, such as:

    1. Vulnerabilities: An EOL version may have unpatched security flaws that can be exploited by hackers or malware. This can compromise your data, privacy, and system integrity.
    2. Compatibility: An EOL version may not be compatible with newer hardware, software, or standards. This can cause errors, crashes, or performance issues.
    3. Support: An EOL version will not include any technical support from the developer or vendor. This means that you’re on your own if you encounter any problems, or need help.

    You can see the list of all Ubuntu releases and their respective end-of-life dates on Ubuntu Wiki.

    What is LTS?

    LTS stands for Long-Term Support and is a tag given to Ubuntu releases with an even version number. For example, 18, 20, 22, and so on.

    LTS versions receive security updates and bug fixes for five years from their release date. This is much longer than ordinary releases that are typically supported for less than a year.

    Is Ubuntu 18.04 reaching EOL?

    No, Ubuntu 18.04 is an LTS release and it will reach the end of standard support on May 31, 2023 – it’s different from End of Life.

    Although it’s highly recommended to move to a newer version of Ubuntu, it might not be possible for everyone to do this before June 2023. Ubuntu 18.04 servers that are subscribed to Ubuntu Pro or Canonical Embedding Programme will continue to receive essential updates for another 5 years and will reach its End of Life in April of 2028.

    How To Identify Your Ubuntu Version

    You can check whether you are using the latest version of Ubuntu in the RunCloud dashboard. Open your server page, and at the top, you will see the current version of Ubuntu that’s running.

    You can also check the status of your Ubuntu Pro subscription and the current Ubuntu version from the terminal. Log into your server using SSH, and execute the following commands:

    uname -r # Check Kernel version
    pro status # Check Ubuntu Pro status
    lsb_release -a # Check Ubuntu version

    How To Upgrade Ubuntu To The Latest Version On RunCloud

    RunCloud strongly recommends you avoid upgrading your existing server. Instead, you should create a new server and migrate to it.

    There are several advantages of doing this:

    • Upgrading existing servers may cause compatibility issues with the software or hardware.
    • Upgrading existing servers may overwrite some of the existing configuration, security, or device settings.
    • Creating new servers and migrating to them allows us to take advantage of new technology or better services that may not be available on the old servers.

    We recommend you follow the following steps to move to a newer version of Ubuntu.

    Note: Before you back up and upgrade your server, you need to make sure that your app is compatible with a higher PHP version. Ubuntu 18.04 supports PHP 7.0 and 7.1, but Ubuntu 20.04 only supports PHP 7.2 and above. Therefore, you need to move your app to at least PHP 7.2 before you proceed with the backup and upgrade process. You can use RunCloud’s dashboard to change the PHP version for your web application. This step is not required for containerized servers, as they use their own container images for PHP.

    Backup Your Existing Applications

    We have written an extensive blog article outlining how to perform backups. Here’s a quick summary.

    Start by opening the web application in the RunCloud dashboard, and then go to the “Backups” tab.

    While creating the backup, make sure you select the “Web Application and Database” option. After that, select your desired storage option, and configure other basic settings.

    Once your backup is completed, you will see a “Completed” status next to it.

    Provision A New Server

    While the backup is in process, you can provision a new server. We have an in-depth knowledge base article that explains how to connect a server to RunCloud.

    You can read it and follow along, but just make sure that you select the latest version of Ubuntu, 22.04 LTS, while creating the new server.

    Migrating Applications

    Provisioning a server and creating backups takes just a few minutes. Once both are complete, you can begin migrating your application. We strongly recommend you do this at a time when you don’t get a lot of traffic to your site in order to minimize potential disruptions.

    We have an in-depth knowledgebase article that explains How to clone a web application to another server, but here’s a quick summary.

    Open the “Web Application” dashboard in RunCloud, and click on “Cloning”.

    Select the newly created server, and provide the new names for both the web application and database which will be used on the new server.

    After that, if you’re using RunCloud’s Cloudflare integration, your DNS records will be updated automatically.

    However, if you wish to update your records manually, you might want to read our guide on How To Speed Up DNS Propagation first.

    That’s it!

    Your application should be up and running on the new server. If you have multiple applications, you’ll need to perform the above steps for each application.

    Testing The Migration

    Once you have completed the migration, you can visit the website and check its IP address in the DevTools menu. The remote address field should show you the IP address of the new server. If you’re still seeing the old IP address, clear your browser cache and retry after a few minutes.

    Once your new site is up and running, we recommend keeping the old server alive for a few days while you perform tests on the new server. Ideally, you should test every user sign-up form and checkout process to make sure everything is working properly.

    TLS 1.0 Support Will Be Discontinued

    As of June 1st, 2023, RunCloud will no longer accept connections made using TLS 1.0. This decision aligns with industry standards and best practices to maintain a secure environment for all of our users.

    Why Is TLS 1.0 Being Deprecated?

    TLS 1.0 is an outdated encryption protocol that has been found to have security vulnerabilities and weaknesses. By discontinuing support for TLS 1.0, we are prioritizing your data security and protecting it from potential threats.

    What action do you need to take?
    To ensure uninterrupted access to the RunCloud panel, we kindly ask you to take the following actions before the deprecation date:

    1. Update your browser: Ensure that you are using a modern web browser that supports TLS 1.1 or higher. Popular browsers like Google Chrome, Mozilla Firefox, Microsoft Edge, and Safari have already dropped support for TLS 1.0 and offer more secure versions.
    2. Verify server compatibility: Check if your server environment supports TLS 1.1 or higher. Most modern server configurations already have the necessary protocols enabled. If you are unsure or need assistance, please reach out to our support team, and we will be happy to help.
    3. Upgrade your application: If you are using any third-party applications or integrations that communicate with the RunCloud panel, ensure they support TLS 1.1 or higher. If necessary, update those applications to ensure compatibility.

    We understand that this change may require some adjustments on your end, but it is necessary to maintain a secure environment for all our users. We apologize for any inconvenience caused and appreciate your cooperation in this matter.

    If you have any questions or need further assistance, please don’t hesitate to contact our support team. We are here to guide you through this transition and address any concerns you may have. Thank you for being a valued RunCloud customer. We remain committed to providing you with a secure and reliable hosting experience.

    After Action Report

    It’s clear that upgrading to the latest version has several benefits such as improved security, performance, support, compatibility, and features. In this article, we also highlighted the risks of using unsupported versions of Ubuntu, such as vulnerabilities, compatibility issues, lack of support, and missing out on new features.

    If you follow the steps outlined in this article, you’ll be able to migrate to the latest version of Ubuntu with minimal disruptions.

    After the upgrade is complete, it’s a good idea to install a monitoring agent, such as New Relic, to check for errors on your server. Read our blog post that explains How To Install New Relic Monitoring on RunCloud.

    RunCloud is built for developers that want to focus on shipping great work, not on managing their infrastructure. We provide painless server configuration so you don’t need to spend hours figuring it out – get started with RunCloud today and get up and running in minutes.

  • How to Install Craft CMS

    How to Install Craft CMS

    Craft is a Content Management System (CMS) that is focused on doing one thing, content management. Different from WordPress, it doesn’t provide you with fancy widgets or themes – it is designed to be minimal and fast.

    In this article, we will show you how easy it is to install and configure Craft CMS when you are using RunCloud to manage your servers.

    Create An Empty Web App

    Start by opening your RunCloud dashboard. Then, proceed to create a Web Application using RunCloud Panel, as shown in the picture below.

    Give it a descriptive name and scroll down.

    Deploying new application on RunCloud dashboard

    Configure your domain name, for quick and easy setup, we recommend integrating RunCloud with Cloudflare API, which automatically handles adding and removing DNS records.

    New webapp on RunCloud dashboard

    Craft CMS recommends using PHP 8.1 and later versions for a better experience. Don’t forget to append /web to your public path, as shown below. If you don’t modify your public path, you’ll need to delete the web application and start all over again.

    Basic settings RunCloud dashboard

    Open Project Directory

    Log into your server via SSH and browse to the root directory of your web application. You can find the root path in the RunCloud dashboard.

    Application Overview RunCloud PHP 8.2

    Copy the root path and use the cd command to navigate to the root directory in the terminal. For the above example, the command would look like this

    cd /home/runcloud/webapps/craft4

    Once you have opened your web app, remove the empty index.html file from your project, you can run the following commands to delete the file and remove the empty folder.

    rm ./web/index.html
    rmdir web/

    After running the above commands, go back to the RunCloud dashboard – don’t close the terminal yet!

    Create A Database And User

    Once you have deleted the file, we can proceed with the installation of Craft CMS, for that, we will need access to a database. Luckily, RunCloud makes it super easy to create new users and manage access.

    Simply go to your RunCloud dashboard and pick the server that you are using. Locate the Databases tab on the left and open the “Database Users” submenu.

    Create a new database user and give it a secure password. Once you have created it, it should look something like this.

    Create Database in RunCloud

    After creating the database user, go back to the database tab and create a new database. Make sure to grant access to the user that we just created. After creating the database, it should look similar to the screenshot below.

    Create a new Database on RunCloud

    Installing The Craft CMS

    After creating the database, we can begin the installation.

    Go back to the terminal and make sure that you are in the root directory of your project. You can run the pwd command to check your working directory, the output of this command should match the root path displayed in the RunCloud dashboard.

    Once there, make sure that you are not running as a superuser, you can check the name of your current user by running the whoami command. The output of this command can be anything except “root”. For example, in the below example, we are running the system as “runcloud” user.

    Craft CMS installation terminal

    If you are running the shell as root user, you can imitate other users by running the following command. Just replace “runcloud” with the name of another user.

    sudo su runcloud

    Once you are sure that you are in the correct directory with correct permissions, run the following command to install the Craft CMS using PHP 8.2 and Composer.

    /RunCloud/Packages/php82rc/bin/php /usr/sbin/composer create-project craftcms/craft .

    After running the command, it will ask you if you want to begin the installation, type “yes” to start it. Leave the database driver, IP address, and database port filed empty and press enter to accept default values.

    In the database username, password, and name field, enter the details that we just created in the previous step. After this, enter some random alphabets for database prefix.

    CRAFTCMS on Linux RunCloud

    Once you have entered the database details, you should be greeted with a message saying “Testing database credentials … success!”. After that you can configure the login credentials for the administrator account. Use a secure username and password.

    In the Site name, enter the name of the site that you want to display to users, for the site URL option, enter the complete URL of your web-application. If the URL is long and hard to memorize, you can just copy and paste the URL from the RunCloud dashboard.

    Installing CraftCMS on Ubuntu

    Once you have completed the above steps, installation should automatically continue and deploy your site. Once it is completed, you can open the URL in a browser and should be greeted with a screen that looks like this.

    CraftCMS home screen Welcome

    Troubleshooting

    After installation is complete, log into your dashboard and navigate to Utilities> System report. Once there, scroll down to the bottom, you should see a green check mark next to each of the options.

    In the following example, we have a warning mark next to some of the entries, we can click on “i” next to it to get more information. If that specific functionality is useful for you, then you can change this in the RunCloud dashboard.

    health checks, System Overview CraftCMS

    To change these settings, open the web app in the dashboard and navigate to the Settings tab. Once opened, scroll down to the PHP settings section and modify the settings accordingly.

    If the text in the disabled functions field is too hard to read, you can press Ctrl + f in your browser to use the find function, which highlights the text on the page, as shown below. Once satisfied, don’t forget to click “Update PHP Settings” to save the changes.

    PHP settings RunCloud dashboard

    Now you can go back to the Craft CMS dashboard and refresh the page, all the warnings that you tackled should have disappeared.

    CraftCMS system errors

    After Action Report

    Craft CMS is a popular content management system that focuses on security and performance over all other aspects of the application.

    It supports plugins and themes that can extend its functionality and improve user experience, but they are not available by default.

    If you are looking for an easy and painless way to manage your servers, RunCloud is the perfect solution for you. With its intuitive dashboard and powerful features, RunCloud makes it easy to manage your servers and deploy applications. Start using RunCloud today and see how it can simplify your infrastructure.

  • How to Install and Setup A WordPress Multisite Network

    How to Install and Setup A WordPress Multisite Network

    Are you tired of managing multiple WordPress sites individually? Then say ‘goodbye’ to the hassle and ‘hello’ to efficiency with WordPress Multisite Network!

    Discover how you can manage all your sites from one dashboard with ease using this game-changing feature.

    In this guide, we’ll walk through what a WordPress multisite network is and discuss whether you should use one. We will also cover the benefits of using a multisite network and then explain how to set up a WordPress multisite network correctly.

    Let’s get started!

    What Is WordPress Multisite Network?

    WordPress multisite is a feature in WordPress that allows you to run multiple websites on just one WordPress installation. This is different from running multiple WordPress engines on the same server. In a multisite network, the network admin has access to all of the sites in the network.

    The WordPress multisite feature is often used by large organizations that need multiple websites for different units, departments, or entities within their overall structure.

    For example, if a university wants to give all its professors their own blog column on the university website, they can do so using WordPress’s multisite feature. Similarly, a large newspaper agency might have one common site for all articles, but have different WordPress sites for each of its categories, such as sports, finance, politics, etc – with each of these websites being operated and maintained by the respective departments.

    Benefits Of Using A Multisite Network

    • Instead of managing multiple sites separately, you can access and control everything from one dashboard, which simplifies management.
    • When running multiple WordPress sites, you might need to maintain multiple servers. In addition to the hosting cost, it will also cost you more to maintain and upgrade these servers. Having one bigger server with multiple sites reduces server cost to some extent.
    • Launching a new site is quick and easy. You can simply go to the dashboard and with the click of a few buttons, your site will be up and running in less than ten seconds.
    • Running a multisite network makes it easier to enforce security policies and manage everything. The network admin can manage plugins, themes, and users for all sites from one dashboard.
    • Multisite networks make it easier to maintain a consistent brand identity across multiple sites.
    • If you use different servers for each of your sites, then you’ll need to monitor the traffic on them separately. This means you’ll need to upscale and downscale each server if traffic spikes or dips momentarily. On a multisite network, if you are using a bigger server to handle all your traffic, it will provide you better resilience to unforeseen traffic spikes.

    Domain-based vs. Path-based Multisite Networks

    WordPress provides two types of multisite network installations, so you can pick the one that suits your needs best.

    Domain-Based Multisite Network

    This option provides a separate domain name for each of your websites. This is especially useful for large organizations which might want to move one of the websites to a different server in the future. Having a separate domain gives you the freedom to manage each site independently in the future.

    While this option does provide some flexibility, it comes with a few caveats. Most notably, you will need to manage a lot of domain names if you have a number of sub-sites. Domain names are infamous for being difficult to manage, and having multiple subdomains will only make the job harder. Moreover, unless you are using a wildcard SSL, you will need separate SSL certificates for each of your domains.

    Path-Based Multisite Network

    If you are happy with all of your sites running on the same domain, then this is the right option for you. It is ideal for bloggers and small businesses that need the additional functionality of multisite networks without all the hassle of managing DNS records.

    Installing A WordPress Multisite Network

    RunCloud makes it really easy to set up and install a multisite network. If you aren’t already using RunCloud for managing your servers, sign up to RunCloud today and follow along.

    1. Log in to your RunCloud dashboard and select the server that you want to use. If you already have a server with some spare capacity connected to your RunCloud account, you can use that. If not, you can connect to a new server. Once connected, click “Deploy New Web App”.
    1. On the “One-Click” installation tab, select “WordPress” and give a descriptive name to your application. This name will not be displayed to your visitors.
    1. In the ‘Domain’ section, add the domain that you want to use – this will generate the DNS records for your site. RunCloud’s Cloudflare integration makes it easy to set up DNS records – just select the API key and everything works magically. However, if you are not using RunCloud’s Cloudflare integration you can manually add the DNS records to your nameserver. Usually, the nameserver is managed by your domain registrar.
    1. Next, you will need to configure the SSL/TLS settings for your site. We recommend enabling AutoSSL.
    1. Set the name and other details of your WordPress site. Be sure to use a strong password, and check everything carefully.
    1. From the dropdown menu, select the type of multisite network that best suits your needs.
    1. Once you have configured your WordPress settings, continue setting up your application. Enable backup to automatically backup your website at set intervals, and choose the latest version of PHP to take advantage of up-to-date security upgrades.
    1. Once you have configured all of the settings, click the “Deploy My Site” button at the bottom right of your screen to launch the application.

    Adding Sites to the Network

    1. Once you have deployed your main site from the RunCloud dashboard, you no longer need to open RunCloud to deploy additional sites. Log in to WordPress and open the Network Admin dashboard.
    1. Navigate to the “Sites” tab and click on “Add New” to create a new site.
    1. Add the site address, title, and the admin email in the respective text boxes, and then click “Add Site”. If you are using a subdirectory based network, the URL of the site will be different, but the process is essentially the same.
    1. Once you have added the site it should be visible in the Network Admin dashboard. Repeat the last step to create additional sites.
    1. This step is only applicable to domain-based site networks; if you are using the path-based multisite network, you can skip this step.

    After you have created a site on a new domain, you need to add DNS records so people on the internet will know where the site is hosted.

    You can add “A records” for each individual subdomain if you like. However, a simpler option would be to just use CNAME records that point to your root domain. This way, if you switch servers in the future, you will only need to update one value.

    The exact steps needed to add a DNS record will vary from one provider to another, but the record values remain the same. Simply look for the CNAME record option, and enter the subdomain prefix that you created in the WordPress dashboard (in the “name” field). Next, add “@” in the value/target field to point this record to your root domain and then save it.

    1. In the dashboard, hover on the site name to reveal additional options for the site. You can click on the “Dashboard” link to open the dashboard of the new site. If you are not able to view your site immediately, wait for a few minutes for the DNS setting to propagate through the internet.

    Managing the Network

    Managing Users

    1. In the Network Admin dashboard, open the Users tab to manage users. Click on “Add New” to add a new user, and then add any necessary details to create the new user.
    1. Once the user has been added, you can go to the Users submenu to view all active user accounts, edit account privileges, or delete user accounts.

    Managing Plugins

    You can also add plugins to your WordPress multisite network from the plugins panel in the admin dashboard.

    1. Click on “Add New” to open the WordPress plugins directory. From there, you can search for new plugins, and add them just as you normally would.
    2. Once the plugin is installed, you can enable it across the network, i.e., install it for all the sites on the network. Similarly, you can also either upgrade or delete it for all sites.

    Managing Themes

    1. On your WordPress multisite installation, open the Network Admin dashboard. There you can find the “Installed Themes” submenu.
    1. In the Theme menu, you can add, remove, or upgrade themes for all sites across the network. Many people find this option very useful, as having a consistent theme across all sites provides a better user experience.

    After Action Report

    Managing a multisite network can be challenging, but with the right tools and knowledge, it can be very useful for your organization.

    Maintaining a multisite network has several advantages over running individual sites. The most prominent advantage is the ability to manage all the sites, users, plugins, and themes from a single dashboard, thereby saving both time and server resources.

    For a seamless experience, sign up for RunCloud, the leading server management platform. We’ve made it easy to manage WordPress multisite networks. Learn more about WordPress Multisite in the context of WaaS platforms in our blog post here.

  • How to Send Email from PHP (With Guided Walkthrough)

    How to Send Email from PHP (With Guided Walkthrough)

    In most cases, we normally recommend using transactional email services such as Mailgun, Amazon SES, or Mandrill rather than sending emails from your own service. But if you are feeling enthusiastic you can even set up your own server too.

    That’s what we’re going to cover in this article.

    Take your tech skills to the next level with our easy-to-follow guide on how to send emails from PHP! No need to worry about complicated code – our step-by-step walkthrough makes it a breeze. This guide will guide you through setting up your own mailing service on your Ubuntu server or other similar Debian distros.

    Ways to Send Email From PHP

    There are multiple ways of sending emails from PHP, but the two most basic ones are:

    • Using the mail() function: This is the built-in PHP function for sending email. It is a simple and easy-to-use option for sending basic emails.
    • Using a library or framework: Several libraries and frameworks are available for PHP that make it easier to send emails. Some popular options include PHPMailer and SwiftMailer.

    Using external mail packages such as SwiftMailer or PHPMailer is generally recommended over PHP’s built-in mail function because they offer more advanced features and functionality. While the mail function can be useful for sending basic emails, it has very limited capabilities.

    One major limitation of the mail function is that it doesn’t allow you to add attachments to your emails. This can be a significant issue if you need to send files or documents as part of your communication.

    In addition, using the mail function can make it difficult to meet industry standards, and build trust with Google and other email providers. Establishing trust and following best practices are both crucial for ensuring that your emails are recognized as safe and secure. This can be challenging with the mail function, as it doesn’t provide the necessary tools and capabilities to meet these standards.

    These are two of the most compelling reasons to use external mail packages such as SwiftMailer or PHPMailer instead of PHP’s built-in mail function. However, if you are still interested in learning how to send emails from a PHP web server, you are in the right place! While it may not be the most efficient or effective option, there is still significant value in understanding how to use the mail function and other methods for sending emails from PHP.

    How to Send Email With PHP From Web Server in 5 Steps

    The process of sending an email with PHP from your web server is fairly simple, so we’re going to break it down into five steps.

    1. Install Dependencies

    Installing dependencies is the first step in setting up your PHP application to send email. Dependencies are external libraries or packages that your application requires to function properly.

    First, we will install Sendmail and GNU Mailutils on the server. To install these tools, enter this command:

    sudo apt update && sudo apt install mailutils sendmail-base

    2. Update The sendmail_path Inside php.ini

    You will need to update the php.ini file to let PHP know where sendmail is located. This file can be located at either “/etc/php74rc/php.ini” or “/etc/php/7.4/apache2/php.ini”. If you are using a later version of PHP then run php -v to find out what version you are using, and update the path accordingly.

    The php.ini file is pretty big, and it’s hard to parse all the information in a terminal editor. We will use the following command to find out the exact line number of the setting so we can jump directly there:

    cat -n /etc/php74rc/php.ini | grep "sendmail"

    Note down the line numbers displayed on the left of the text. Next, we will edit the /etc/php74rc/php.ini file. You can use your favorite terminal editor, or simply paste the following command to open the nano editor.

    sudo nano /etc/php74rc/php.ini

    Scroll down to the line number we noted, and search for “sendmail_path =”. It should look something like this:

    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    ;sendmail_path =

    Uncomment the sendmail_path by removing the ; and add the sendmail path. The default value is “/usr/sbin/sendmail -t -i”. You should have something like this:

    ; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
    ; http://php.net/sendmail-path
    sendmail_path = /usr/sbin/sendmail -t -i

    Now press Ctrl + O to save the file. Press Enter to confirm the filename and location, and press Ctrl + X to exit the editor. Now when you run the ‘cat -n /etc/php74rc/php.ini | grep “sendmail”’ command, you should see the updated path.

    Now restart the php service with:

    systemctl restart php74rc-fpm

    3. Change hostname

    Now we will edit the server hostname. You can find the hosts file at /etc/hosts. Update the localhost address as shown below.

    # Old Value

    127.0.0.1      localhost.localdomain localhost 

    # New Value

    127.0.0.1      test.runcloud.me test

    And then we change the hostname on the fly with:

    hostname test.runcloud.me

    4. Configure sendmail

    Now we need to configure the sendmail CLI. We can do this by running the following command, and entering the necessary details:

    sendmailconfig

    5. The Basics of PHP Mail Function

    You can use the following PHP code to use the inbuilt PHP mail function:

    mail($to, $subject, $message, $headers)

    That is the basic way to start sending email from your server. Here’s an example of real-world usage:

    <?php
    $to = 'youremail@gmail.com';
    $subject = 'This is a test email';
    $message = 'Hello john!';
    $from = 'jane@runcloud.me';
    $headers = sprintf("From: %s\r\nReply-To: %s", $from, $from);
    mail($to, $subject, $message, $headers);

    Now add the mail.php inside your web application. Make sure you have replaced the $from variable to your own email address.

    It is important to keep in mind that simply sending an email from your PHP web application doesn’t guarantee that it will be delivered to the recipient’s inbox. There are many factors that can influence whether an email is delivered, and it’s not uncommon for emails to be caught by spam or security filters.

    For example, Google has many filters in place to identify and block potentially malicious or spammy emails. For your emails to pass these filters and reach the recipient’s inbox, they need to meet certain security and quality standards.

    By following the steps to send email from PHP, you will have the basic ability to send emails from your web application. However, to ensure that your emails are delivered effectively and avoid being caught by filters, you will need to focus on security attributes and other factors that can help your emails pass spam and security checks. This may require additional effort and attention to detail, but is essential for ensuring that your emails are delivered safely and successfully.

    How To Make Sure Your Email Sent From PHP Will Be Delivered

    Although you’re now set up to send emails from PHP, the next task is to ensure that your emails include certain standards and attributes to pass spam checks, and actually end up in the inbox of your recipients.

    In this section, we will go through the process of testing your email for deliverability using services such as mail-tester and mailook which help identify the probability of your email getting flagged as possible spam.

    Testing Your Email Deliverability.

    Open up either of the mail testing websites, and you should get an email address to send it to. Add this email to your $to variable, and you should get something like this:

    <?php
    $to = 'web-ovl78@mail-tester.com';
    $subject = 'This is a test email';
    $message = 'Hello john!';
    $from = 'jane@runcloud.me';
    $headers = sprintf("From: %s\r\nReply-To: %s", $from, $from);
    mail($to, $subject, $message, $headers);

    Now visit the mail.php again inside your browser; this should execute the code again and send another email. Check the score of this mail from the Mail Tester. This is our result:

    With this score, your email will never reach any inbox! This is expected and we will configure a few settings, which will increase the score dramatically.

    Setting SPF Records

    Sender Policy Framework (SPF) is the TXT-based DNS record that you can add to your DNS as a policy for sending emails. Your server hostname needs to be verified as an email sender.

    You can use SPF Wizard to generate your SPF record. We are using the following records for our test domain (runcloud.me).

    runcloud.me. IN TXT "v=spf1 a:test.runcloud.me -all"
    test.runcloud.me. IN TXT "v=spf1 ip4:45.118.132.8 -all"

    Don’t forget to change your a:<your own domain> and ip4:<your server IP>

    This is how it looks like when you query the DNS records from Cloudflare.

    Let’s break this down line-by-line to get a better understanding. In the given configuration, the first line tells the internet that test.runcloud.me can send email on behalf of runcloud.me. So your outgoing emails will look like jane@runcloud.me even though our actual domain is test.runcloud.me.

    The second record tells the internet that the mail server for test.runcloud.me is located at the given IP address(es). The ~all bit at the end of each record tells everyone that they should ignore all the emails which do not originate from the given server.

    Having done that, we sent the email to the Mail Tester as before and then checked the score.

    This is a significant improvement. However, some inboxes might still refuse the email.

    Setting MX Records

    Mail servers also check for MX records, and the domain (runcloud.me) doesn’t have any MX records. Because of this, it gets a penalty. We will add an MX record to improve it further, and check the score again after adding this.

    This time we 9/10 which is much better. If you are not getting the same score, wait for a few hours so that modified TXT records are propagated across the servers. Learn more about How to speed up DNS propagation.

    Setting PTR Record

    Your server reverse IP lookup should return your server hostname (test.runcloud.me). You can do this from the Digital Ocean or Linode panel if you are using their service. Alternatively, any IaaS-based company that provides VPS/Server will always give you access to modify your PTR record.

    Setting DKIM Record

    DomainKeys Identified Mail (DKIM) is a digital signature that verifies the authenticity of a given email and checks whether it was authorized by the owner of the domain. Learn more about why your mail server needs a DKIM record.

    All modern email service providers support DKIM, simply create new CNAME records with the given values, and it should work automatically.

    Setting DMARC Record

    Domain-based Message Authentication, Reporting & Conformance (DMARC) is a validation system that makes it harder for malicious actors to spoof your domain and send emails on your behalf. Although it is optional, it is recommended to use it if your email provider supports it.

    You can create a new DNS record with values provided by your email server to use it.

    After creating all the records, our score has significantly improved. It is very close to a perfect score, but it is not there yet. In our testing, we used a shared email server that was flagged as spam in the past 28 days. This is expected, and it should not matter to most of the people.

    However, if this is unacceptable, you can rent a private IP address and use it to send emails. If you don’t send spam messages, it will slowly build the reputation of your IP address, and your emails will get closer to a perfect score.

    Using SSL/TLS To Connect Securely

    You should be connecting SSL/TLS. Failing to do so will result in Gmail blocking your email, as you can see in Google’s help documentation.

    If you encounter any errors, you can check the /var/log/maillog or var/log/mail.log file on your terminal to see the mail server logs. This is particularly handy for fetching information about postfix, smtpd, and other email-related services running on your server.

    You can simply run the following command to view a continuous stream of logs in your terminal.

    tail -f /var/log/mail.log

    After adding all of these certificates and policies, and making your web server fully compliant with industry standards, you should be able to send emails using PHP from your webserver without deliverability issues.

    Conclusion

    In conclusion, sending emails from PHP is viable, but using external email packages such as SwiftMailer or PHPMailer is generally recommended. These packages offer more advanced features, and better reliability, and can save you time, money, and effort. Additionally, using an external email package can increase your chances of successful email delivery.

    If you do choose to send emails from your web server using PHP, it is important to follow this guide carefully and pay attention to factors such as deliverability, security, and industry standards. This may require additional effort, but it is necessary to ensure that your emails are delivered safely and effectively.

    To make the process of sending email from PHP even easier and more reliable, consider using a platform like RunCloud. With RunCloud, you can easily set up and manage your PHP web server, install dependencies, and send email without the hassle. Start using RunCloud today!

  • How To Use Redis Full-Page Caching To Speed Up WordPress

    How To Use Redis Full-Page Caching To Speed Up WordPress

    Is your WordPress website slow? Are you dreading low PageSpeed scores? If yes, then you should use Redis Full-Page Caching to supercharge your WordPress website.

    In this article, we will explain what Redis Full-Page Caching is and how it improves user experience.

    What Is Server-Side Page Caching?

    Before we talk about Redis Full-Page Cache, let’s talk about how your website works.

    1. When a user visits your WordPress page, the web browser sends an HTTP/HTTPS request to Nginx.
    2. Nginx passes the request to PHP-FPM, and Nginx will catch any PHP codes when trying to grab the page.
    3. PHP-FPM processes the page and runs through the MariaDB/MySQL database query to retrieve the page.
    4. PHP-FPM sends the generated “static” HTML page back to Nginx.
    5. Nginx sends the generated HTML page to the web browser for the user.

    What Are Benefits Of Using A Server-Side Cache

    When using server-side page caching, the Nginx module will be in between Nginx and PHP-FPM and it is able to generate a cached HTML page from PHP-FPM.

    When another user visits the same WordPress page, your website will not perform the same PHP and database requests again because the page is already cached and served by Nginx directly.

    As a result, your server response time will be much faster after the initial load. Your PHP-FPM and MariaDB/MySQL will experience a reduced load and your server CPU resource usage will decrease.

    This would mean that your server can handle more traffic with the same server specifications when using server-side page caching, ultimately allowing you to keep a more affordable server without having to scale any further.

    RunCloud provides two different server-side page caching methods for Nginx – namely Redis Full-Page Cache and FastCGI Page Cache. Let’s see how Redis Caching works

    What Is Redis Full-Page Caching?

    Redis, which stands for Remote Dictionary Server, is a fast and open-source, in-memory data structure store used as a database, cache, and message broker.

    In contrast to databases that store data on disk, all Redis data resides in memory, avoids seek time delays, and can access data super fast in microseconds.

    Usually, Redis is used to cache database query results and used to enable object caching, not page caching.

    Using the Nginx SRCache module, we can use Redis to serve a different purpose, to provide subrequest-based page caching as an alternative to Nginx FastCGI Cache.

    Redis Full-Page Cache vs Nginx FastCGI Cache

    Both Redis vs FastCGI Page Cache are a good solution for NGINX server-side page caching. Both of them can be installed easily in RunCloud without having to deal with Linux commands to setup, no complex process required.

    You should try it on your WordPress site to find the one which works best for your current setup. You can even switch between Redis and FastCGI page cache in one-click.

    Server-side Page Caching vs WordPress Caching Plugins

    Both are good choices for your WordPress website and the answer depends on your specific needs.

    If you are using regular shared hosting, Redis Full-Page Cache or Nginx FastCGI Cache might not be available. In this case, the only option available is to use the WordPress cache plugins.

    If you are using a dedicated server, you can optimize your WordPress site using server-side page caching. With proper setup, server-side page caching can perform better than any WordPress cache plugin.

    Who Needs Server-Side Page Caching For WordPress?

    All WordPress pages can gain huge benefits when using RunCache server-side page caching.

    For blogs, magazines, news, company profile websites, and all types of “static” WordPress sites, all WordPress pages can be fully cached and served faster, excluding WordPress admin pages, which are not cached for obvious reasons.

    For e-commerce, membership, forum, and all types of “dynamic” WordPress sites, most WordPress pages can be fully cached and served faster, except for some pages that should stay dynamic.

    For example, in the case of WooCommerce, the homepage, shop page, and single product page can be fully cached, but cart, checkout, and my account pages should be excluded. For these dynamic pages, you can use Redis Object Cache to reduce your MySQL database load and make your dynamic pages load faster, but you do not want to cache these pages fully as the latest changes will not be seen.

    Performance Benchmarks Without Caching

    Let us test the capacity of our server before we enable caching so we can quantify the improvement in performance.

    For this test, we use a e2-medium instance on Google Cloud and default WordPress installation using Twenty Twenty-Three WordPress Theme.

    We use the free Loader.io tool for stress testing.

    First Test – From 0 To 250 Users In 1 Minute

    In the first test, we request the same web page from 250 different devices over the course of one minute. Without any caching, our server can successfully handle all 250 requests and manages an average response time of 140 ms.

    Second Test – From 0 To 750 Users In 1 Minute

    In the second test, we request the same web page from 750 different devices over the course of one minute. Without any caching, our server can successfully handle all 750 requests and manages an average response time of 408 ms. This is slightly worse than the first test but still acceptable.

    Third Test – From 0 To 2000 Users In 1 Minute

    In the third test, we request the same web page from 2000 different devices over the course of one minute. In this case, our server had significantly higher response times and we observed timeout error in over 50% of requests. The successful requests had an average response time of 8028 ms which is unacceptable.

    Let us see how we can improve this by enabling caching.

    How To Install Redis Full-Page Cache Using RunCloud Hub

    RunCloud Hub is a hub for all RunCloud plugins for WordPress. It is not only for server-side page caching but also Redis Object Cache and Server Health & Transfer Stats monitoring directly from your WordPress dashboard.

    If you want to use server-side page caching, either Redis Full-Page Cache or Nginx FastCGI Cache to speed up your WordPress website, then RunCloud Hub is the perfect choice for you.

    You can simply go to the RunCloud Hub menu under your web application in the RunCloud panel, choose the Nginx page caching method, and click the Install RunCloud Hub button.

    Once you have installed the RunCloud Hub plugin, Redis Full-Page Cache (RunCache) is automatically installed and enabled in your WordPress website, no complex process is required.

    How To Check If Redis Full-Page Cache Works

    When using any cache WordPress plugin, usually the plugin adds a footprint at the of your web page source code to make it easy for you to check if your WordPress page has been cached or not.

    Redis Full-Page Cache (RunCache) works on the server-side, which means there is no footprint on your web page, you need to check the headers of your website to see these possible values of X-RunCloud-SRCache-Fetch and X-RunCloud-SRCache-Store.

    The X-RunCloud-SRCache-Fetch header returns the status of the “fetch” phase for Redis Full-Page Cache. Three values are possible.

    • HIT : Page is cached and served from the cache.
    • MISS : Page is served dynamically from the server, not from the cache. The response might then have been cached. Refreshing this page again should change the header from MISS to HIT or BYPASS.
    • BYPASS : Page is served dynamically from the server, not from the cache. It is excluded from the cache, for example, WordPress dashboard admin pages or WooCommerce cart/checkout pages.

    The X-RunCloud-SRCache-Store header returns the status of the “store” phase for Redis Full-Page Cache. Two values are possible.

    • STORE : An Nginx subrequest is issued to save the HTML output of the page into Redis.
    • BYPASS : An Nginx subrequest is not issued because either it has been saved to Redis or it is excluded.

    To make it easier for you to understand, usually, we can see 3 common pairs of these headers, for example:

    “MISS” Fetch Status and “STORE” Store Status

    This is when you visit a page for the first time where this page is served dynamically from the server and the output of this page will be saved to Redis.

    “HIT” Fetch Status and “BYPASS” Store Status

    This is when you visit a page where the cache version is available in the Redis and served directly from the Redis cache.

    “BYPASS” Fetch Status and “BYPASS” Store Status

    This is when you visit a page that is excluded from the Redis cache.

    To check these headers, you can use some tools, for example:

    Check HTTP Headers With GTMetrix

    Gtmetrix is not only for testing your performance score, you can also use it to check the response header using the Waterfall feature. You can check the response header of your tested page under the Waterfall tab to see if this page is served by Redis Full-Page Cache (RunCache).

    Check HTTP Headers With Google Chrome

    You can also view the response HTTP headers in your web browser without using any additional tools by following these steps:

    1. Visit the web page that you want to test and open Web Developer Tools by pressing F12 or right-click and selecting Inspect.
    2. When opened, click and select the “Network” tab.
    3. Refresh the page to get fresh page data.
    4. Select the top HTTP request on the left panel and observe HTTP headers on the right panel.

    Performance Benchmark: Handling More Traffics

    By eliminating PHP-FPM and MariaDB/MySQL when serving your WordPress page from Redis Full-Page Cache, the huge benefit is your server can handle more traffic with the same server specifications.

    First Test – From 0 To 250 Users In 1 Minute

    For this test, we use Loader.io to send from 0 concurrent users and increase to 250 concurrent users within 1 minute.

    Without Redis Full-Page Cache (RunCache), the average response time was 140 ms. After enabling the cache, the average response time reduces to 46 ms. This is great as our server is responding to requests nearly 3 times faster.

    Second Test – From 0 To 750 Users In 1 Minute

    In our second test, the average response time without Redis Full-Page Cache was 408 ms. Enabling cache lowers the response time to 43 ms. Therefore, our server can handle sudden surges in requests without degrading performance.

    Third Test – From 0 To 2000 Users In 1 Minute

    Without Redis Full-Page Cache, the average response time was 8028 ms and we also saw timeout error in over 50% of requests when the number of concurrent users surged to 360.

    After enabling the cache, all our requests finished without error and we observed a steady response time of 41 ms. It is a clear improvement as we can handle many more concurrent requests without crashing the server.

    Exploring RunCache Features

    Using the RunCloud Hub WordPress plugin, you will have more controls on how RunCache works on your WordPress website.

    RunCache Purger

    Purger settings allow you to have more control when the cache is cleared, for example:

    • Automatically clean cache of homepage when post is edited or has a new post.
    • Automatically clean cache of homepage when post removed.
    • Automatically clean cache of post/page/CPT when published.
    • Automatically clean cache of post/page/CPT when comment approved and published.
    • Automatically clean cache of post/page/CPT when comment removed.

    RunCache Rules / Exclusion

    Rules settings allow you to control Cache Exclusion.

    • Exclude URL Path option allows you to exclude cache based on matching URL Path. This is very useful when you have dynamic pages that should not be cached in your website.

    For example, in WooCommerce, you have the Cart, Checkout, and My Account page that must never be cached. For WooCommerce users, no action needed, these pages have been added by default.

    • Exclude Cookie option allows you to exclude cache based on matching Cookie name.
    • The Exclude Browser option allows you to exclude cache based on matching Browser User-Agent.
    • Exclude Visitor IP option allows you to exclude cache based on matching Visitor IP Address.
    • RunCache also has dedicated settings for query strings, because query strings will not cache by default.
    • Allow Cache Query String option makes it possible for you to allow cache based on matching query string, for example, UTM parameters (utm_source, utm_medium, utm_campaign), fbclid, gclid, etc.
    • Exclude Cache Query String option allows you to exclude cache based on matching Query string.

    RunCache Preload

    Preload settings allow you to generate caches of your pages without having to wait for a user to visit your pages. Normally, the cache is generated after a user visits a page.

    You have the options to:

    • Preload caches automatically when any purge action is triggered.
    • Preload caches automatically based on schedule time (day/week/month).
    • Preload caches manually by clicking the “Run Cache Preload” link.

    If you have a big number of posts/pages/products in your WordPress sites, the cache preload process sometimes can consume your server CPU resources. It is better to run a cache preload manually for this case.

    Is It Compatible With Popular WordPress Cache / Optimization Plugins?

    YES! The important thing to understand, Redis Full-Page Cache (RunCache) works on the server level and popular WordPress cache/optimization plugins work on the WordPress/application level.

    They work in different spaces and it should be compatible. If needed, you can combine it with your favorite optimization plugin, for example:

    Redis Full-Page Cache and Autoptimize Plugin

    In fact, Autoptimize and RunCache are a perfect combination to optimize your WordPress site.

    Autoptimize works on WordPress-side to optimize your Javascript / CSS / HTML files on your web page, and RunCache works on the server-side to cache the optimized version web page.

    Please read the detailed guide here, How To Use Autoptimize WordPress Plugin To Optimize Your Sites.

    Redis Full-Page Cache and WP Rocket Plugin

    When using WP Rocket plugin, combined with Redis Full-Page Cache (RunCache), WP Rocket page caching feature is automatically disabled by RunCloud Hub.

    It means Redis Full-Page Cache will handle the page caching, and you still can use other WP Rocket optimization features.

    Summary

    Redis full-page caching is a game-changer for WordPress websites looking to boost their performance. With its advanced caching capabilities, Redis offers a simple and effective solution for reducing server load times and delivering a smooth user experience.

    If you want to apply server-side caching to one of your web applications within your server, then RunCache (RunCloud Hub) is your answer. RunCache allows you to utilize either Nginx FastCGI Cache or Redis Full-Page Cache to speed up your WordPress performance without having to deal with Linux commands to set up Nginx cache. Sign up today and see the difference for yourself.

  • The Best Web Development Tools To Level Up Your Stack

    The Best Web Development Tools To Level Up Your Stack

    1.6 billion. That’s a big number.

    It’s also how many helpful results Google offers in response to a search for “web development tool”.

    The sheer number and range of tools available for web development is staggering.

    What most of us are looking for are developer tools that you can use to optimize your workflow and improve performance, and they may be any piece of software or programming language that helps you perform better.

    Web development tools can be invaluable during discovery, planning, and even the execution stage. There are various front-end and back-end technologies that developers can use to simplify their work.

    Others, such as frameworks, libraries, and certain code editors, can also improve performance.

    In this post, we’re going to discuss some of the most popular web development tools that you can use to level up your stack.

    But before we start, let’s talk about what a web development stack is.

    What Is a Web Development Stack?

    A web development stack is a collection of software tools used to create a web application. The stack typically includes a programming language, a database, a web server, and a web framework.

    Of course, this is generally a flexible description, and you can create different stacks based on your requirements. For instance, one of the popular web development stacks is the LAMP stack. It is short for Linux, Apache, MySQL, and PHP. Here’s how it works:

    • Linux is the operating system that powers the server on which a website or web application is hosted.
    • Apache is the web server software that serves files to visitors’ browsers.
    • MySQL is the database management system that stores data used by a website or web application.
    • PHP is the programming language used to build a website or web application.

    How Web Development Tools Can Streamline Your Workflow

    The right web development tools can significantly impact on your workflow, especially if you use agile project frameworks like Scrum.

    The tools you use can do the heavy lifting for you, automating repetitive tasks and freeing you up to focus on more high-impact work. Tools such as JSFiddle, for example, can help you share code snippets with your team as one sprint comes to a close, helping you prepare for the next one.

    Here are just some of the benefits that web development tools offer:

    Improved Productivity

    Web development tools can help you be more productive by automating repetitive tasks. For example, if you’re constantly formatting code or updating CSS stylesheets, you can use specific tools. This will free up your time to focus on more important tasks.

    Better Collaboration

    Another benefit of web development tools is improved collaboration. If you’re working in a team, web development tools can help everyone stay on the same page by sharing task lists, code snippets, and more.

    Increased Efficiency

    In addition to improved productivity and collaboration, web development tools can help you work more efficiently. For example, many IDEs (integrated development environments) now offer features such as code completion and real-time error checking. This means you can spend less time debugging your code and more time coding.

    How to Choose the Right Development Stack For Your Project

    This is a relatively subjective question since every developer has their own preferences. Here are a few key factors that can help you choose the right development stack for your project.

    1. Define Your Project’s Requirements

    The first step in choosing a development stack is to define your project’s requirements. What does your project need to do? What features does it need to have? Answering these questions will help you narrow down the technology options available.

    2. Consider Your Team’s Skill Set

    Once you’ve defined your project’s requirements, you must consider your team’s skill set. What technologies are they comfortable working with? It doesn’t make sense to choose a stack that includes technologies your team is unfamiliar with; they’ll just spend more time trying to learn the new technology than actually developing the application.

    3. Determine Which Technologies Work Well Together

    Not all technologies play well together. For example, if you’re using a relational database (such as MySQL), you’ll want to use a web development framework that supports model-view-controller (MVC) architecture (such as Laravel). If you’re using a non-relational database (like MongoDB), you can use any number of MVC frameworks (including Laravel).

    4. Consider Your Hosting Environment

    Your hosting environment – i.e., where your application will be hosted – can also influence your choice of development stack. For example, if you’re planning on hosting your application on a Linux server, you’ll want to use technologies that can run on Linux (such as Apache, PHP, and MySQL).

    If you’re planning on hosting your application on a Windows server instead, you’ll want to use technologies that can run on Windows (such as IIS, ASP.NET, and SQL Server).

    Alternatively, you can also consider serverless hosting. Serverless hosting can reduce costs and increase scalability by only charging for actual usage and automatically scaling resources. It can also simplify development and reduce maintenance by abstracting away server management. This lets developers focus on writing code and deploying features rather than managing servers.

    Web Development Tools to Use in 2023

    Here are the most popular web development tools to use in 2023.

    Text Editors

    VS Code

    VS Code is a popular, open-source code editor that is particularly well-suited for web development. It features an intuitive, easy-to-use interface, and comes with a wide array of built-in tools and extensions for debugging, linting, and optimizing code.

    One of the biggest benefits of using VS Code for web development is its wide range of extensions, which can help streamline your workflow and improve productivity. It is also available on all major platforms like Windows, Mac, and Linux, and it’s lightweight and fast.

    VSCode

    JetBrains IDE

    JetBrains IDEs (Integrated Development Environments) is a suite of developer tools widely used for web development. They include IDEs for several programming languages, such as IntelliJ IDEA for Java, PhpStorm for PHP, and WebStorm for JavaScript. JetBrains IDEs are known for their powerful code editing and debugging capabilities, as well as their ease of use and customization.

    One of the advantages of using a JetBrains IDE is its advanced code navigation, refactoring, and code suggestion capabilities. They also provide smart Code completion and error prevention. They are widely used by many professional software developers and are continuously updated to support the latest development trends and technologies.

    Jetbrains

    Sublime Text

    Sublime Text is one of the most loved text editors of its time. It has many features that make it easier for developers to write code, including syntax highlighting and autocomplete. Additionally, Sublime Text can be customized to the developer’s preferences, making it an extremely versatile tool.

    Sublime Text

    Lapce

    Lapce is a relatively new, open-source code editor written in Rust that aims to provide fast performance by utilizing native GUI and GPU rendering. It has a unique feature called Code Lens, which combines folding, minimap, and code outline functionality to make navigating and understanding your code easier.

    Additionally, it has a remote development feature that allows you to connect to a remote machine via SSH, which enables you to work on a remote workspace with the same experience as a local one. However, since it’s a relatively new and custom code editor, its popularity and user base may not be as large as more established editors like VS Code or JetBrains IDEs.

    Lapce

    Neovim

    Neovim is a free, open-source text editor designed to be a drop-in replacement for Vim. It is a fork of Vim, which aims to address some of the original editor’s shortcomings and provide a better user experience. It has a modular architecture and a new, more powerful plugin system.

    It features a built-in terminal emulator, support for multiple cursors, and a built-in LSP(Language Server Protocol) client. It also has support for asynchronous job control, which allows for faster background tasks such as code completion and syntax checking. Neovim is popular among Vim users looking for more advanced functionalities and better performance.

    We would recommend you to use Neovim only if you are working on a machine that does not have a desktop environment as it requires you to have a good understanding of command line interfaces.

    Neovim

    Front-End Development Frameworks

    React

    React is many things – a library, a framework, and more. But at its heart, React is all about making web development faster and easier. It’s a JavaScript-based UI development library commonly used for web development. There are numerous extensions available that can be used for architecture support too, such as Flux. You can use it with libraries like Tamagui to ship cross-platform React apps faster.

    React

    Svelte

    Svelte is a popular, open-source JavaScript framework for building web applications. It uses a unique approach to building user interfaces by compiling your code at build time rather than using runtime libraries. This allows for faster performance and smaller bundle sizes.

    One of the biggest benefits of using Svelte is that it provides a simple and easy-to-learn syntax, making it a great choice for developers new to building web applications. Additionally, it does not require any additional tools like a virtual DOM, making it lightweight and fast; it also uses a reactive programming paradigm. Svelte also provides a powerful set of developer tools, such as a rich set of directives and a built-in animation library, that makes creating complex, interactive user interfaces easy.

    Svelte

    Vue.js

    Vue.js is another fantastic JavaScript framework popular amongst UI/UX designers. It’s incredibly easy to use, and closely resembles several CSS frameworks. It offers support for JSX declarations, though many prefer using Vue.js outside of JavaScript, thanks to its support for conventional web technologies. 

    Note: We’re big supporters of Vue.js and use it at RunCloud.

    Vue.js makes it easy to collaborate on large projects. It is fast, lightweight, and can be easily integrated with existing tools and libraries making it a popular choice for developers with all skill levels. Vue.js is a great addition to any web developer’s toolkit and it should not be a surprise that we at RunCloud use Vue.js ourselves to build our platform.

    Vue.js

    Tailwind CSS

    Tailwind CSS is a front-end CSS framework designed to help developers create applications. It offers utility classes, allowing developers to control the layout, spacing, typography, shadows, and spacing, all without ever leaving their HTML environment.

    Tailwind CSS offers various benefits. For instance, you generally won’t have to write as much CSS since you can style classes using HTML only. This ensures that your CSS files remain small, and you won’t have to worry about things breaking if you make widespread changes to your site.

    Tailwind CSS

    Bulma

    Just like Tailwind CSS, Bulma lets you focus on the HTML, giving you utility classes to work with. Bulma is built using Flexbox, and is highly customizable.

    Since it’s CSS only, you won’t need to worry about JavaScript. It’s an open-source, simplistic framework that lets you trim your code and introduce more productivity in your workflow.

    Bulma

    Programming Languages

    PHP

    PHP is a popular scripting language widely used for developing web applications. PHP code can be embedded into HTML code, or it can be used in conjunction with various web template systems, web content management systems, and web frameworks.

    PHP code is usually processed by a PHP interpreter implemented as a module in the web server or as a Common Gateway Interface (CGI) executable.

    The web server combines the results of the interpreted and executed PHP code, which may be any type of data (e.g., Images, XML), with the generated web page.

    PHP has been widely ported, and can be deployed on most web servers on almost every operating system and platform, free of charge.

    Python

    Python is an incredibly popular programming language that uses dynamic semantics. Python has been around for 30 years and continues to be one of the most popular programming languages in the world because it is powerful yet easy to learn and use.

    It is also versatile enough to be used in various applications such as web development, scientific computing, data analysis, artificial intelligence, and more.

    Elixir

    Elixir is a modern functional language that provides an excellent toolkit for building scalable, reliable applications. Elixir runs on the BEAM virtual machine, the same virtual machine that Erlang uses.

    Elixir is also a very productive language. That’s because it was designed with developer productivity in mind. For example, Elixir has excellent support for metaprogramming. Metaprogramming is a way of writing code that generates code.

    TypeScript

    TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. It introduces support for common programming constructs such as classes and modules, and an optional type system that can help catch errors at compile time.

    Since TypeScript is not a stand alone programming language, it can not be used directly in the browsers – we need to transpile TypeScript code to JavaScript before it can be executed in a browser. One great thing about this is that it will not impact the bundle size of the final Javascript code as all the extra TypeScript code is removed during the compilation.

    Ruby

    Ruby is a programming language created in the mid-1990s by Japanese programmer Yukihiro Matsumoto. It is based on Perl, Smalltalk, Eiffel, and Ada. It is an interpreted, high-level, general-purpose programming language.

    Since its release more than 27 years ago, Ruby has undergone many iterations, and is widely renowned for being highly productive and simple to use. It treats even conventional data types as objects, making it highly versatile and portable.

    Rust

    Rust is a modern, open-source programming language, and it was crowned as the most-loved programming language in 2022. It is designed to be safe, concurrent, and fast. One of the biggest benefits of using Rust is its emphasis on safety, which helps to prevent common programming errors such as null or dangling pointer references. It offers a strong concurrency model based on message passing, which makes it easy to write concurrent and parallel code that is both efficient and performant for web services.

    Rust is also designed to be highly expressive and readable, with a low learning curve. It is suitable for various applications, including systems programming, web assembly, game development, blockchain, and embedded systems. If this sounds interesting, the Android team at Google has created a Rust course that provides you with the material to quickly learn Rust.

    Back-end Development Tools

    Django

    Django is a Python-based web framework that enables you to quickly create efficient web applications. Django was created to meet the fast-moving requirements of newsroom websites. It has since evolved into a powerful tool capable of powering some of the largest websites in the world.

    The format is fairly straightforward, and if you’re used to creating server-side web apps using Python, Django will be a great choice. It works quite well with other languages, such as JavaScript.

    Django

    NodeJS

    NodeJS is a JavaScript runtime environment that allows software developers to create server-side applications. In layman’s terms, this means that NodeJS can be used to create applications that can be accessed via a web browser.

    NodeJS is popular because it is relatively easy to learn and can be used to create fast and scalable applications.

    Node.js

    Ruby on Rails

    Ruby on Rails is a web application framework in the Ruby programming language. It is designed to make developing web applications easier by abstracting away much of the boilerplate code that is often required.

    Ruby on Rails is commonly used as a server-side scripting language on many websites. It’s a popular choice for websites that rely on third-party services and integrations, such as cloud file storage.

    Ruby on Rails

    Deno

    Deno is a JavaScript runtime built with Rust programming language, and is an alternative to Node.js. It has built-in support for TypeScript, a powerful type system for JavaScript, and built-in libraries for HTTP and WebSocket. Deno is also more secure by default because it doesn’t require a package manager, which can introduce vulnerabilities.

    Additionally, Deno’s standard library is considered more extensive and better designed than Node.js, making it easier to build complex web applications. It also is designed to run with a minimalistic setup, with no need for config files; it also has built-in test runners, formatting, and linting. All of these features make Deno a useful tool for web development.

    Deno

    Bun

    Bun is a modern JavaScript runtime, like Node or Deno, that aims to bring performance and complexity enhancements to web development, with an emphasis on starting fast, high performance, and being a great tool. It is built on the JavaScriptCore engine and written in Rust, which gives it a performance boost and low-level control over memory.

    Bun has built-in support for TypeScript, JSX, and npm package manager, and it was designed as a drop-in replacement for existing JavaScript/TypeScript projects, with the aim of running most JavaScript code outside of browsers; it natively implements hundreds of Node.js and web APIs, including fs, path, Buffer and more.

    Bun-sh

    Databases

    MySQL

    MySQL is a database management system (DBMS) that runs as a server providing multi-user access to various databases. It is an open-source project that is available under the GPL license and is developed, distributed, and supported by Oracle Corporation.

    MySQL has become a leading database choice for web applications used by high-traffic websites. Wikipedia, Facebook, Twitter, and YouTube all use MySQL.

    MySQL

    MongoDB

    MongoDB is a document database. It stores data in JSON-like format making it easy for JavaScript developers to use. Moreover, it has an index on every field in a collection which makes data retrieval quick and easy. The use of dynamic schemas makes data integration in MongoDB quite simple.

    MongoDB

    PostgreSQL

    PostgreSQL is a powerful, free, and open-source relational database management system. It has more than 15 years of active development and a proven architecture that has earned it a strong reputation for reliability, data integrity, and correctness.

    PostgreSQL

    Redis

    Redis is an open-source, in-memory data structure store that can be used as a database, cache, and message broker. It supports various data structures and has built-in support for replication and partitioning, making it a powerful tool for building highly available and scalable systems.

    Redis is known for its speed, as it stores all data in memory, and it has the option for persistence on disk to avoid data loss. It supports Lua scripting for atomic operations on the data, making it popularly used in caching, real-time analytics, and leaderboards, session storage, full-text search, and autocomplete.

    Redis

    Libraries

    Partytown

    Partytown is a library that aims to speed up websites by relocating resource-intensive scripts, such as analytics and ads, into a web worker. By moving these third-party scripts off of the main thread, Partytown frees up resources for the primary web app execution and improves overall performance.

    Partytown allows developers to sandbox third-party scripts, isolate long-running tasks, reduce layout thrashing, and throttle scripts’ access to the main thread. This means that web developers can continue to use third-party scripts without experiencing a significant performance hit. Partytown is currently in beta and is maintained by Builder.io.

    Partytown Workers

    D3.js

    D3.js is a JavaScript library for creating data-driven documents, which means it’s used for manipulating and displaying data on a web page using HTML, CSS, and SVG. It’s designed to work seamlessly with web standards and doesn’t rely on any specific framework or library. Therefore, it doesn’t need specific libraries to be relocated in a web worker to improve performance.

    D3.js is a very powerful and flexible library that can be used to create a wide range of visualizations, and provides a powerful API that makes it possible to create complex visualizations with just a few lines of code.

    D3-js

    Day.js

    Day.js is a lightweight JavaScript date library that provides a simple and modern API for manipulating dates. It’s designed to be fast and easy to use, and it offers a similar API to Moment.js, a more popular but heavier library. It does not require specific libraries to be relocated in web workers for performance improvements. By default, it uses the native Date object, and it’s very lightweight.

    Lodash

    Lodash is a JavaScript utility library that provides a wide range of functions for manipulating and manipulating objects, arrays, and strings. It’s designed to be lightweight, fast, and easy to use, and it provides a lot of functionality that’s not available in the JavaScript standard library. This allows developers to streamline their workflows and simplify math operations and other programming tasks.

    Bootstrap

    Bootstrap

    Bootstrap is a free and open-source front-end web framework for designing websites and web applications. It contains HTML and CSS-based design templates for typography, forms, buttons, navigation, and other interface components, as well as optional JavaScript extensions.

    Bootstrap is the most popular HTML, CSS, and JavaScript framework for developing responsive, mobile-first websites.

    Material-UI

    For those who don’t know, Material-UI is designed in line with Google’s design language – Material Design. It’s a popular component library that you can import in React, and use the HTML tags to customize your site.

    Material-UI also includes a selection of themes, both paid and free, so there are plenty of design choices available too. If your primary development is for websites or apps that follow the Material Design philosophy, this might be a great component library for you to check out.

    Material UI

    CSS Processor

    SASS

    SASS (Syntactically Awesome Style Sheets) is a powerful style sheet language that enables you to write cleaner, more maintainable CSS code. It’s incredibly popular amongst front-end developers.

    SASS is written in Ruby, and was first launched in 2006. Since then, it has amassed a vibrant, active community of developers, with detailed guides and resources available for those who’re interested in learning it.

    LESS

    LESS (Leaner Style Sheets) is a CSS preprocessor that allows you to write cleaner and more manageable code. It can run on both the client or server side.

    In general, LESS is just a language extension for CSS, including a few more features, such as mixins, variable substitutions, operations, and combining functions.

    Stylus

    Stylus is a dynamic stylesheet preprocessor language that’s compiled in Cascading Style Sheets (CSS). The design of Stylus was heavily influenced by LESS and SASS.

    Stylus launched in 2010, and was created for the Node.js ecosystem. While it’s a popular choice for Node.js developers, it doesn’t command the same share as LESS or SASS.

    Package Managers and Task Runners

    Grunt

    Grunt is a task runner that helps you automate your workflow. It’s versatile and easy to use, making it a popular choice for web developers. Grunt can help you with several things, such as minifying code, compiling CoffeeScript files, and linting code.

    Grunt JavaScript Task Runner

    npm

    npm is a popular package manager that’s used with JavaScript. It’s the default package manager for Node.js, and includes a CLI, an online registry of packages.

    It is free to use and widely considered as the largest software registry in the world, with open-source developers using it to share software.

    NPM Package Manager

    Bower

    Bower is a package manager for the web. It lets you install and manage front-end dependencies for your projects.

    In order for Bower to work, you will need to first install Node.js, npm, and Git. It’s a command-line utility that’s fully optimized for the front-end.

    Bower helps simplify workflows by finding and installing packages from the web, downloading and saving them in a manifest file.

    Bower Package Manager

    Site Speed Tester

    Chrome Developer Tools

    Google Chrome Developer Tools are a set of web development tools built into the Google Chrome browser. They allow you to examine, edit, and debug web pages on the fly.

    You can use Chrome DevTools for basic web development tasks such as debugging errors and inspecting page elements. You can open the developer tools menu by pressing F12 key on your keyboard, right clicking a page and selecting “inspect” or using the keyboard shortcut Ctrl+Shift+i.

    Chrome DevTools

    Google PageSpeed Insights

    Google PageSpeed Insights is a tool that helps you measure the performance of your website and identify opportunities to improve it. It measures page load time, compression, images, and other factors that affect page speed.

    Google Pagespeed Insights

    Pingdom

    Pingdom is a website monitoring service that watches your website’s uptime and performance. They’ll send you an email or SMS notification if something goes wrong, so you can fix it before your customers start to complain.

    Pingdom offers automated website status checking using a global network of data centers. It checks if your website is down and instantly sends a notification. Thanks to its massive network, it can check the status of a website from more than 100 locations every minute!

    Pingdom

    Git Services and Clients

    GitHub

    GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub also provides access to a social networking site for developers.

    GitHub Client is a desktop application for Windows, Mac, and Linux desktops that allows you to manage your repositories, collaborate on code with others and install things like Git from the command line.

    GitHub

    GitLab

    GitLab is a web-based Git repository manager with issue tracking and code review features. It is similar to GitHub, Bitbucket, and VSTS, but GitLab offers a few features that are unique to it, such as allowing for greater collaboration between team members. 

    Note: We’re big supporters of GitLab and use it at RunCloud.

    GitLab is open-source, offering a collaborative environment for DevOps teams to work on different projects. It was first launched in 2014 and has since become an incredibly popular alternative to GitHub.

    While it’s available for free, you will have to consider upgrading to a subscription service to access all of GitLab’s features.

    GitLab

    JetBrains Space

    JetBrains Space is a comprehensive software development platform that integrates with JetBrains IDEs, making it easy for software teams to build, deliver, and manage their projects. It features tools for Git hosting, code review, CI/CD pipelines, package management, and cloud development environments, among others.

    It also includes a range of team collaboration tools, such as document storage, issue tracking, and chat functionality. It is designed to minimize distractions and allow developers to work remotely, making it a great solution for software development teams. It can store artifacts in package repositories, extend and customize via APIs, connect to external services, automate workflows using webhooks, integrate with JetBrains IDEs, and more.

    Sourcetree

    Sourcetree is a popular Git management tool that makes working with source code files much easier. It helps developers get a visual representation of their repositories, making it easier for them to sift through data.

    Sourcetree is popular since it offers a GUI, allowing developers to manage their repositories more effectively. You can see information on branches or commits with just a click, and you can even review specific changesets, stashes, and even clone remote repositories.

    Sourcetree

    Collaboration Tools

    Slack

    Slack is a communication tool used by software developers and other professionals that allows for real-time messaging, file sharing, and more. Its popularity comes from its ease of use and the numerous integrations it has with other apps.

    Slack makes it easy for remote teams to collaborate through a centralized platform, allowing them to connect their work apps, create dedicated channels for each project or topic, and communicate through an accessible, streamlined messaging platform that’s also incredibly secure.

    Slack

    Trello

    Trello is a project management system that helps you organize your to-dos, projects, and ideas. It’s simple to use, yet very powerful. Trello can be used for both personal and team projects.

    You can create boards, lists, and cards, and add members to your boards. Boards can be shared with others or kept private. Cards can be assigned to specific members and dated. You can also add files, links, notes, and due dates to cards.

    Trello

    Web Servers

    Apache

    Apache is a web server software that enables websites to be hosted on a single computer. It’s the most popular web server in the world and is used by millions of websites. In addition to its popularity as a web server, Apache also has a wide range of other features that make it an attractive choice for developers.

    NGINX

    NGINX is a web server used by many high-traffic websites such as WordPress, Dropbox, and GitHub. It is known for its stability, flexibility, and performance. NGINX excels at serving static files and can handle large loads of traffic very easily.

    Caddy

    Caddy is a web server that you can use to host your websites. It’s different from other web servers because it is designed to be easy to use and configure. What makes Caddy really stand out is its built-in support for automation and security features such as HTTPS and SSL certification.

    Serverless Platforms

    AWS Amplify

    AWS Amplify is a set of tools and services for building scalable mobile and web applications. It includes libraries for building user interfaces, back-end services, and authentication. It can be used along with App Composer, a visual application builder that allows developers to build web applications with little or no coding.

    Together, these two can create and manage the back-end services needed by the application, such as authentication, storage, and APIs. By using Amplify and App Composer together, developers can quickly and easily build and deploy web applications that are scalable and secure.

    Firebase

    Firebase is a mobile and web development platform developed by Google. It provides a set of tools and services for building, deploying, and scaling applications. It offers features like real-time databases, authentication, hosting, cloud functions, and more.

    It can be used along with Rowy to have more control over the back-end services and also be able to add more features that Firebase doesn’t provide. Rowy enables developers to create, manage and scale their back-end services with no-code or low-code. It uses a visual interface that can be used to interact with databases, authentication services, and more.

    Firebase

    Pocketbase

    PocketBase is a platform that allows developers to create and manage a back-end for their mobile and web applications with no-code or low-code. It offers features such as database management, user authentication, and data storage.

    By using PocketBase, developers can easily create and manage their back-end services, and focus on building the front-end of their applications. It is a platform that provides an easy and simple way to handle the back-end infrastructure without having to write any back-end code, and that can speed up the development process and make it easy for even non-technical people to build and manage their app’s back-end.

    Pocketbase

    Supabase

    Supabase is an open-source Firebase alternative, providing real-time databases, authentication, and hosting through a simple API. It allows developers to build web and mobile apps using the technology they are already familiar with, such as PostgreSQL and GraphQL.

    With Supabase, you can create, manage and scale your back-end services with ease. It provides a simple and seamless integration with the web/mobile application allowing for easy access to the back-end services, with a user-friendly console for management and maintenance.

    Supabase

    Cloudflare Workers

    Cloudflare Workers is a platform that allows developers to write and run JavaScript code on Cloudflare’s edge network, allowing for the creation of serverless functions and edge logic. These scripts can be used to manipulate incoming and outgoing HTTP requests, perform caching, and more.

    It can build, deploy and run code without provisioning or managing servers; it also allows for low-latency and high-performance computing at the edge of Cloudflare’s global network. It also provides a platform for creating and deploying custom logic on a global scale, which can be used to handle everything from serverless functions to route-based logic.

    Cloudflare Workers

    Captcha

    Cloudflare Turnstile

    Cloudflare Turnstile is an alternative to traditional CAPTCHA that provides a more user-friendly and privacy-respectful way to verify users.

    You can simply call an API and replace CAPTCHA on your sites. The aim of Turnstile is to choose non-intrusive browser challenges based on client behavior and telemetry, replacing the traditional frustrating CAPTCHA system, which was created with a poor UX. And also to minimize data collection and ask other third parties like device manufacturers, who already have the data that would help validate a device.

    Cloudflare Turnstile

    API testing

    Httpie

    HTTPie is a command line HTTP client for interacting with web services. It is designed to be easy to use and intuitive, allowing developers to easily make HTTP requests and see the responses.

    It supports various features like JSON, forms, and authentication, making it a versatile tool for testing and interacting with APIs.

    It also provides an AI-assisted feature that can process requests in natural languages, similar to typing a search query in a browser’s address bar. One could tell HTTPie to “fetch repo details of httpie/desktop”, and even use a different language like Spanish.

    HTTPie

    Postman

    Postman is a popular tool for API development, which allows developers to test and interact with web services using various request methods like GET, POST, PUT, DELETE, and more. It provides a user-friendly interface for creating and sending requests, with support for various authentication methods and the ability to save and organize collections of requests.

    It also supports a wide range of data formats such as JSON, XML, and more, and can also automatically generate code snippets in multiple programming languages that can be used to replicate the requests in an application. It speeds up the testing and debugging process.

    Postman

    Insomnia

    Insomnia is a cross-platform REST client available for Windows, Mac, and Linux. It allows developers to make and test HTTP requests, as well as save and organize them for later use. One of its main features is the ability to create requests using a user-friendly interface rather than manually typing in the request details.

    It allows you to test and debug APIs. It also supports request templating, environment variables, and importing and exporting the requests.

    Insomnia

    Hoppscotch

    Hoppscotch is a web-based API testing and development tool that allows developers to easily make and test HTTP requests and view the responses they receive. It has a user-friendly interface that helps developers quickly create and test requests without having to manually type in the details.

    It also allows users to save, organize and share requests. Hoppscotch support multiple authentication methods and also allows to define variables and environment. You can also use Hoppscotch to test RESTful and GraphQL APIs, and it also provides request history; you can check your previous requests too.

    Hoppscotch

    Traffic capture and analysis

    Burp Suite

    Burp Suite is a powerful web application security testing tool that allows developers to perform various tasks related to web security, such as penetration testing, vulnerability scanning, and web application testing.

    It can be used to intercept, inspect and modify HTTP/HTTPS requests and responses between a web application and a browser. This allows developers to identify and fix security issues, such as SQL injection, cross-site scripting, and other vulnerabilities. It also automates the testing process and integrates with other security tools. Additionally, it can be used to perform manual testing and assess the security of web applications.

    Wireshark

    Wireshark is a network protocol analyzer that can be used to inspect network traffic and troubleshoot issues in web development. It allows developers to view the low-level details of network communication, such as the headers and payloads of packets, and can help them understand how their web applications are interacting with the network.

    Wireshark can also be used to identify issues such as bottlenecks, security vulnerabilities, and compatibility problems. Hence, it is a powerful tool that can be used to optimize the performance and security of web applications.

    JSON Viewer

    After you get the results from the API, you need to visualize them.

    JSON Hero

    JSON Hero is a tool that helps developers work with JSON data. It allows developers to view and edit JSON data in a more user-friendly format, making it easier to understand and work with. JSON Hero also provides features such as JSON validation, syntax highlighting, and conversion to/from other data formats such as XML and CSV.

    It can also allow developers to merge, diff, and format JSON data, which allows them to manage and manipulate JSON files quickly and effectively. JSON Hero can be very helpful when working on web development projects that involve a lot of JSON data.

    JSONhero

    JSON CRACK

    JSON Crack is a tool for analyzing and visualizing JSON data. It allows users to easily load and explore their JSON data, and provides features such as search, download, live editing, and validation to make working with JSON data more efficient.

    The tool also allows users to embed the JSON Crack app into their website using an iframe, and use it to view and analyze JSON data directly on the website. JSON Crack is an open-source project and actively encourages contributions from the community.

    JSON Crack

    Image optimization

    Squoosh

    Squoosh is a web-based image compression tool that allows developers to optimize images for web use by compressing them to reduce their file size without degrading the quality of the image.

    This can improve the performance of a website by reducing the time it takes for images to load. It supports a wide range of image formats and includes various compression options, making it a versatile tool for web developers to use in their workflow.

    Squoosh

    ShortPixel

    ShortPixel is an image optimization plugin and API service that can be integrated into a web development workflow to automatically optimize images as they are uploaded to a website. This helps reduce the file size of images without significantly degrading their quality, improving the website’s performance by decreasing load times.

    ShortPixel supports a wide range of image formats and can optimize images in bulk, making it a convenient tool for developers to improve website performance.

    Documentation and references

    MDN Web Docs

    MDN Web Docs is a comprehensive resource for web developers, providing documentation and guides on web technologies such as HTML, CSS, JavaScript, and web APIs. It serves as a reference for developers to look up information on specific web technologies, as well as a learning resource for those new to web development.

    It provides in-depth explanations of how different technologies work, along with interactive examples and code snippets to help developers understand and implement them in their projects. It is the go-to place for the developer community for web standards and best practices.

    MDNdocs

    caniuse

    caniuse is a web-based tool that provides information on browser support for different web technologies such as HTML, CSS, and JavaScript. It allows developers to check which features are supported in which browsers, including specific versions.

    This helps developers to make sure that their website or web application works correctly across different web browsers and devices. It is widely used by web developers to check what features they can use safely, and what to do for users who have to use older browsers or different devices.

    caniuse

    Coding assistant

    GitHub Copilot

    GitHub Copilot is an AI-powered code completion tool that is integrated into GitHub, which can help developers write code faster and with fewer errors. It provides context-aware suggestions for code completion, and can also recommend changes to code in real-time as it is being written.

    It helps developers to focus on the problem they are trying to solve rather than getting bogged down in the details of code syntax, making it an efficient tool for writing, editing, and understanding code. Additionally, it also can provide explanations of code and suggestions for refactoring and performance improvements, making it a valuable tool for web developers.

    AWS Code Whisperer

    AWS Code Whisperer is an AI-powered tool developed by Amazon, which can be used to automatically improve the security, performance, and maintainability of code. It does this by using machine learning models to analyze code and provide developers with suggestions for how to improve it.

    For example, it can scan for vulnerabilities and recommend fixes, find performance bottlenecks and recommend improvements, and suggest code refactorings to make it more maintainable.

    It integrates with developers’ IDEs, code repos, and build systems; it can also analyze the code as it is written and provide real-time feedback to developers. It can be used with multiple programming languages and it’s integrated with other AWS services like AWS CodeCommit, AWS CodeBuild, AWS CodeDeploy, and more.

    Tabnine

    Tabnine is an AI code assistant that can help with web development by providing suggestions and auto-completing code. It can also assist with debugging and refactoring.

    By using machine learning techniques, it can learn from a developer’s coding style and improve its suggestions over time. It can also save developers time by quickly generating boilerplate or repetitive code. Additionally, it can also assist with identifying and fixing errors, allowing developers to focus on more complex tasks.

    Server Management

    RunCloud

    RunCloud is an incredibly useful tool for web developers as it allows them to quickly and easily deploy, manage and monitor their web applications. It provides a comprehensive suite of tools that make it easy to manage servers, databases, storage, and other infrastructure components.

    It offers various features such as automated backups, application monitoring, and more. Web developers can use it to streamline their workflow and ensure their applications are secure and running efficiently, making it an ideal choice for web developers.

    RunCloud

    After Action Report — Which Web Development Tools Do You Use?

    These are just some of the many web development tools that you can integrate into your workflow and improve your operations. 

    If you’re tired of managing your own servers – you might want to check out RunCloud (yep, that’s us!). RunCloud is built for developers that want to focus on shipping great work, not on managing their infrastructure. Painless server configuration, so you don’t need to spend hours figuring it out – get started with RunCloud today & get up and running in minutes.

    Do you have any others that you’d want to add to this list? Let us know in the comments below, or join the conversation by sending us a Tweet!

  • How InstaWP Scaled The Leading WordPress Sandbox with RunCloud

    How InstaWP Scaled The Leading WordPress Sandbox with RunCloud

    InstaWP is the leading provider of what can most simply be described as disposable WordPress websites and it is used for everything from testing to staging and demos (for WordPress plugins and themes). Behind the scenes, they chose to power their platform with RunCloud using our API. 

    For Those Yet To Hear About InstaWP – What Is It? And What Led You To Build It?

    In short, InstaWP is a WordPress sandbox service. What this means, and the use cases & scenarios that it applies to are extremely varied.

    For example, we recently learned that the FooEvents team had been relying on InstaWP as a part of their support process.

    By using InstaWP, they were able to quickly create instances that enabled their team to explain installation issues to their customers with far greater ease and effectiveness.

    More recently, extendify.com and newsletterglue.com have started using InstaWP to provide more effective ways to demonstrate their solutions. Of particular interest is that InstaWP has received seed funding from Automattic (giving them a percentage of future equity under a SAFE (Simple Agreement for Future Equity).

    What led us to build the platform was very much out of our own needs. We wanted an easy way to deploy single-use WordPress sandbox environments – whether that was for testing, validating an idea before pushing something to production, debugging issues, or building a site for a client, among several important needs.

    We (at ExpressTech) wanted to make a platform that would simplify a whole range of processes that were taking place in our organization, and which we knew were also highly relevant to a wide range of other users in the WordPress space (as well as organizations similar to ours).

    Building InstaWP – The Challenges Faced

    As we began development on the platform when it was still an internal project, the biggest challenge we faced was not wanting to reinvent the wheel when it came to server deployment and management. Realistically, that would have extended the development time, increased costs, as well as raised maintenance costs of the platform as a whole to the point where we would likely not have pursued the development.

    It was at this stage that we began to explore the potential ways we could use RunCloud’s API to negate the need to bake the deployment scripts into our own systems. As it turned out, this ended up being relatively straightforward to accomplish.

    Shortly after finding RunCloud, we were confident that the implementation would be suitable, and would work exactly as we wanted it to. This gave us the confidence to take InstaWP to market much, much faster than we would have (and could have) prior to using RunCloud with our free offering.

    What Made RunCloud The Right Solution For InstaWP

    Although there are many platforms that try to accomplish something similar to what RunCloud does, we were very quickly certain about our choice to use RunCloud to build InstaWP. The fact that they’ve been a leader in the industry for years as a reliable service provider (i.e., not offering lifetime deals, compromising quality, etc.) aligned with our values, and this made us feel confident when making the choice that we would be in good hands.

    Similarly, upon connecting with the team, we received great help, support, and feedback that again made the entire process of building InstaWP more enjoyable.

    Suggested read: How to create WordPress Staging site

    Upcoming Plans & Where You Can Learn More About InstaWP

    RunCloud gave us the perfect start with its simple API and robust infrastructure to provision instances. We had to write some WP-specific APIs ourselves, like Magic Login, DB Editor, Code Editor, etc., but from a provisioning standpoint, RunCloud had us covered.

    To scale, we are looking to create our own backend of provisioning, with the sole reason being that our systems will be designed towards having short-lived sandbox environments, whereas RunCloud is meant for production-level sites.

    And eventually, the goal is to integrate with RunCloud (as well as hosting providers) to provide a way to easily push from InstaWP environments over to production sites. In a way, going full circle with an integration with the solution our platform was first powered by. The first phase of this has started:

  • How to Set Up a DigitalOcean Server with RunCloud

    How to Set Up a DigitalOcean Server with RunCloud

    DigitalOcean is a well-known cloud server provider that aims to simplify cloud computing so that developers and their teams can spend more time building software that changes the world. It’s designed for developers, and provides an intuitive control panel, predictable pricing, team accounts, and more.

    DigitalOcean has many different plans, including Basic (Standard), General Purpose, Memory Optimized, and CPU Optimized.

    Currently, DigitalOcean has 10 worldwide data centers spread across 8 regions:

    1. New York
    2. San Francisco
    3. Amsterdam
    4. London
    5. Frankfurt
    6. Toronto
    7. Bangalore
    8. Singapore.

    You can choose the server location that is close to you or your customers to get lower latency.

    In this post, we will show you how to set up the DigitalOcean server to host your websites on RunCloud.

    Let’s get started!

    Adding DigitalOcean API Keys to RunCloud

    With RunCloud’s server provisioning feature, you can set up a server in DigitalOcean directly from the RunCloud dashboard by providing an API key from DigitalOcean to RunCloud.

    To start the integration process, open your DigitalOcean dashboard and navigate to the “API” tab on the lower left of your screen.

    In the “Applications & API” menu, make sure that you are on the tokens tab, and click on the “Generate New Token” button to create a new key.

    On the next screen, give a suitable name to your key and set the expiration date of the key. Choose the expiration period carefully, because if your key expires, you will need to integrate your server with RunCloud again.

    Make sure you have granted the “Write permission”, and then click “Generate Token” to create the token.

    After your key has been created, you’ll need to add this key to your RunCloud account to finish the integration process. Go to your account settings and open the “Integrations” tab. Look for the “DigitalOcean” option in the list, and click on it.

    Make sure you click on the right option to host the servers, and not the DigitalOcean Space option.

    On the next screen, you can add the name of your API key to distinguish it from the rest of the keys, and then paste the key that you copied from the DigitalOcean dashboard.

    After you have added the key, it’s a good idea to test the integration by clicking on the “Test Integration” button. If you follow the steps correctly, you should get a success message. Click on the “Save Integration” button to save the changes.

    Deploying A Server Using RunCloud

    Once you have successfully integrated RunCloud with DigitalOcean, you can start using RunCloud’s automated deployment feature to launch and delete servers automatically.

    To deploy a new server simply go to your RunCloud dashboard and click on “Connect a New Server”. On the next screen, choose DigitalOcean from the list of available cloud providers and click on “Deploy Server Automatically”.

    Now scroll down to the bottom of the screen and select the installation type. There are two installation options available – you can either choose a native installation or containerized. Read our blog post on containerized architecture to learn more.

    Next, you can pick the server stack that you want to use. In this example we will just use the Nginx servers. Now you need to select the API key from the drop down menu – pick the API key that we just created and then click on “Continue”.

    On the next screen, you will get the option to select the operating system and other server details. Pick the latest version of the cloud image available, and then select the cloud plan that you want to use. There are multiple cloud plans available with varying costs – pick the one that meets your needs best.

    Next, select the instance size depending upon your workload. In this example, we have used the basic plan to deploy a $4 per month server in the Bangalore region.

    After you have selected the cloud instance, scroll down to the bottom of the page and give your server a suitable name. Don’t forget to check the box to acknowledge that you understand you will be billed for this cloud instance, and then click on the “Add Server” button to deploy the server.

    After you have created the server, RunCloud will automatically deploy a new server on your behalf in your DigitalOcean account, and then install all the necessary dependencies and other software needed to run web applications.

    This usually takes five to ten minutes, there is no additional input required from you at this point – just sit back and wait for the installation to complete.

    Once the installation has completed, you should see the following screen in your dashboard:

    Deploying A Server Using RunCloud One-Click Droplet

    RunCloud has pre-built images on the DigitalOcean marketplace that can be used to launch new servers quickly. Go to DigitalOcean marketplace.

    Click on the “Create RunCloud Droplet” to create a new server. This will take you to the DigitalOcean dashboard. In this dashboard, select your desired datacenter region, and server size.

    In the image section, make sure that RunCloud’s pre-built image is selected.

    Tip: You can also search for RunCloud’s other images in the marketplace search box.

    After you have configured all the necessary settings, click on “Create Droplet” to deploy the server. This should only take a few minutes.

    Once your server is up and running, log into it using SSH. You can use DigitalOcean’s in-built SSH feature for this. After logging into the server, click on the URL displayed to connect this server to your RunCloud account.

    If clicking the URL doesn’t work, you can copy and paste the URL into your browser. You will be asked to enter the name of the server and that’s it! You can now manage this server directly from the RunCloud dashboard.

    Securing Your Droplet with a DigitalOcean Cloud Firewall for RunCloud

    DigitalOcean’s Cloud Firewall protects your RunCloud server from unauthorized access. In this section, we will explain to you how to create and apply a firewall with the necessary rules.

    First, you need to log in to your DigitalOcean dashboard and then click on the Networking button in the main navigation menu on the left side of the screen. From there, select the Firewalls tab to access the firewall control panel.

    On the Firewalls page, click the Create Firewall button to start the configuration process. You will first be prompted to provide a descriptive name for your new firewall. It is good practice to choose a name that clearly identifies its purpose, such as “runcloud-webserver-firewall,” which will help you manage it easily later on.

    Next, you will define the specific rules for incoming traffic. You must create a set of “allow” rules to permit connections for essential services. On the firewall creation page, add the following Inbound Rules:

    • HTTP (TCP port 80): Add a rule to allow HTTP traffic from all IPv4 and all IPv6 addresses to enable standard, unencrypted web traffic to your sites.
    • HTTPS (TCP port 443): Create a rule for HTTPS to permit secure, encrypted web traffic from all IPv4 and all IPv6 sources.
    • HTTP/3 (UDP port 443): You can optionally add a custom UDP rule for port 443 from all sources to support the newer HTTP/3 protocol and improve performance.
    • RunCloud Agent (TCP port 34210): Add a custom TCP rule to allow traffic on port 34210 from all sources, as this port is required for your server to communicate with the RunCloud dashboard.
    • SSH (TCP port 22): Optionally, you can create a rule to allow SSH connections from all IPv4 and all IPv6 addresses, which is necessary for remote server administration. We recommend deleting this rule if you only manage your server via the RunCloud dashboard and don’t plan to connect to your server via SSH.

    After defining the rules, you need to apply this firewall to your server, which DigitalOcean refers to as a Droplet.

    On DigitalOcean, a single firewall can be used to multiple Droplets. In the “Apply to Droplets” section on the same page, you can search for and select your RunCloud server from the text area to immediately apply this set of rules to it. Later on, if you deploy new servers or decommission old ones, you can easily return to this firewall’s settings to add or remove it from those Droplets.

    Finally, once you have named your firewall, configured all the necessary inbound rules, and applied it to the correct Droplet(s), click the Create Firewall button at the bottom of the page. All the changes will take place immediately, and the new firewall configuration will protect your server.

    After Action Report

    DigitalOcean is one of the top choices to host your websites in the cloud. You can set up your DigitalOcean servers easily using RunCloud’s automatic integration, as well as using a marketplace image.

    If you’re tired of managing your own servers – you should switch to RunCloud. RunCloud is built for developers that want to focus on shipping great work, not on managing their infrastructure. We provide a painless server configuration experience, so you don’t need to spend hours figuring it out.

    Get started with RunCloud today, and get up and running in minutes.

  • The 19 Best & Most Reliable Transactional Email Services for 2026

    The 19 Best & Most Reliable Transactional Email Services for 2026

    If your transactional emails don’t reach the inbox, your application doesn’t work as it should:

    • Password resets fail.
    • Order confirmations go missing.
    • Users lose trust.

    Choosing a transactional email provider isn’t just about cost. It’s about deliverability, infrastructure, uptime, and how well the service integrates with your stack.

    In this guide, we review 19 transactional email services for 2026, comparing their reliability, technical capabilities, scalability, and pricing to help you choose the right fit for your business.

    How to Select The Best Transactional Email Service

    Choosing the right transactional email provider is an important decision. When comparing providers, you should use the following criteria to assess their capabilities.

    1. Deliverability and Sender Reputation Management

    The single most important metric is deliverability. It doesn’t matter how cheap a service is if your password resets end up in the spam folder. Top-tier services offer dedicated sender-reputation management tools that monitor your domain’s health. 

    1. API and SMTP Integration

    Check whether the provider allows you to send via HTTP for faster throughput than standard SMTP. A flexible SMTP relay allows for easy integration with legacy systems, while a modern, well-documented Web API is preferred for speed and advanced functionality. 

    1. Scalability and Uptime

    Always check the provider’s Service Level Agreement (SLA) regarding uptime. You need a guarantee (typically 99.9% or higher) that the service will remain operational during business hours.

    1. Analytics, Reporting, and Validation

    Email providers should provide comprehensive analytics and reporting insights into open rates, click-through rates, and delivery failures. 

    What Are Transactional Emails, And Why Do You Need Them?

    Transactional emails are automated emails triggered by a specific action or event, such as a purchase confirmation or password reset request.

    These emails are sent to individual recipients and serve primarily to inform them of a specific transaction. They may also include relevant information such as confirmation numbers, shipping details, and account updates.

    Transactional emails are essential for businesses because they enable them to communicate important information to customers promptly and efficiently. These emails can help to increase customer engagement and satisfaction by providing real-time updates and confirmations.

    Transactional emails can also help reduce customer support inquiries by providing clear, detailed information about specific transactions. They provide an essential way to build customer trust and loyalty by demonstrating that the business is professional and responsive.

    TL;DR: Quick Comparison of Top Transactional Email Services

    ServiceFree/Trial OfferStarting Paid Plan (Approx.)Key Feature
    1. Amazon SES
    Free tier availableVaries (Complex AWS pricing)Highly Scalable, integrates with the AWS ecosystem
    2. Bento30-day trial$30/month (min. 3000 users)Separate infrastructure/IPs for transactional emails
    3. BirdN/A$0.005 per messageFocus on deliverability, Adaptive Delivery technology
    4. BrevoFree plan (300 emails/day)$9/month (5,000 emails per month)97% deliverability claim, free inbound parsing service
    5. CourierUp to 10,000 notifications/monthUnifies notifications (Email, SMS, Push, Chat)
    6. Customer.ioNot Available$100/month for 5,000 usersUser’s entire messaging journey visibility
    7. Elastic EmailFree tier availableAPI: $19/monthDrag-and-drop designer, WordPress Sender integration
    8. GetResponseNot Available$19/month for 1,000 contactsComprehensive marketing automation, send-time optimization
    9. MailerSendFree plan (500 emails/month)$5/month for 5,000 emailsCollaboration-focused, dynamic drag-and-drop editor
    10. MailgunFree plan (100 emails/day)$15/month for 10,000 emails99.99% uptime, Send Time Optimization (STO)
    11. MailtrapFree tier available$15/monthSandbox for email testing/debugging, secure environment
    12. Moosend30-day free trial$9/month (unlimited emails to 500 contacts)Email automation, e-commerce AI, product recommendations
    13. Netcore Cloud EmailFree trial available$349/month (Basic plan)AI-powered predictive segmentation and STO
    14. OmnisendFree (500 emails/month)$16/month (6,000 emails to 500 contacts)Comprehensive eCommerce marketing platform
    15. PostmarkFree tier available$15/month for 10,000 emails4x faster delivery, dedicated IP option
    16. SendGrid100 emails per day$19.95/month for 50,000 emails96% inboxing rate claim, modern UI, add-ons
    17. SendLayerN/A (Starts at $5)$5/month for 1,000 emailsSuitable for small businesses, unlimited mailing lists
    18. SendPulseFree plan (12,000 emails/month)$15/month for 10,000 emailsMultichannel support (SMS, push, in-app, chat), automation
    19. SocketLabsFirst Month Free$39.95/month for 40,000 emailsSmart delivery rules, supports all major authentication

    The Top 19 Transactional Email Services

    The following list (in alphabetical order) includes the email services we consider reliable, offer a good range of features, provide the right integrations, and have a proven track record.

    1. Amazon SES

    Amazon SES (Simple Email Service) is a cloud-based email service from Amazon Web Services. It offers a scalable email delivery service for sending high-volume email campaigns. 

    Pricing: AWS is known for its complex pricing plans. There is a free tier available, but once it’s exhausted, your total spend will depend on several factors, including the number of emails sent and received, network bytes transmitted, and more. 

    amazon ses Transactional Email Service homepage

    Amazon SES integrates well with the rest of the AWS ecosystem and supports a variety of deployments, including dedicated, shared, or owned IP addresses. It also provides reports on sender statistics and a deliverability dashboard to help businesses make every email count.

    It’s suitable for many use cases, such as automated transactional messages, marketing emails, timely customer notifications, and bulk email communications.

    2. Bento 

    Bento is a new, up-and-coming email marketing company that provides a transactional email API for small and medium businesses. It has a separate infrastructure for sending transactional emails, which are prioritized over other traffic. This means it uses separate IPs for sending transactional emails, which offers better deliverability. 

    Pricing: Bento offers a 30-day trial. After that, you need to pay $0.01 per user per month, with a minimum charge of $30/month, for up to 3000 users.

    Bento Homepage

    It integrates with popular CMSs such as WordPress, Webflow, WPFusion, and LearnDash. It can also be integrated with eCommerce platforms like WooCommerce, Shopify, and Magento to send emails directly. They also provide customer support via Discord (in addition to email and phone), which can’t be said of any other tool on this list.

    3. Bird

    Bird offers a proprietary email infrastructure designed to maximize reliable throughput and engagement. Unlike platforms that rely on third-party aggregators, Bird owns its delivery stack, achieving a 99.3% inbox placement rate and 99.99% uptime. The system uses AI-powered routing optimization to automatically select the most efficient delivery paths based on real-time ISP data and engagement history.

    This ensures that high-volume marketing blasts and critical transactional alerts land directly in the inbox, bypassing spam filters and avoiding latency issues common with standard providers.

    To streamline campaign creation, Bird features a robust drag-and-drop Email Studio equipped with a library of conversion-optimized templates. This feature ensures that every email feels individually curated, significantly boosting open rates and customer engagement compared to static mass mailings.

    Pricing: Bird offers a flexible pay-as-you-go model with no upfront commitment, charging a competitive base rate of 0.005 per message and 0.0005 per push notification. For larger organizations seeking predictability, Bird offers a Monthly Targeted Contacts bundle starting at 50,000 contacts, though most developers will appreciate the transparency of the consumption-based structure for API-triggered transactional traffic.

    Bird uses next-generation artificial intelligence to transform email from a one-way broadcast into a two-way conversation channel. Its Intelligent Email Chatbots can answer customer queries and provide product recommendations directly within the email thread, reducing friction in the buying journey.

    4. Brevo (Sendinblue)

    Brevo’s transactional email service delivers more than 99% of messages without a single hiccup, ensuring critical communications like password resets, order confirmations, and shipping updates land directly in the inbox, not the spam folder.

    The platform prioritizes high-performance email deliverability through a trusted infrastructure that isolates transactional traffic from marketing streams. It offers advanced features, including extended log retention and real-time analytics. 

    Pricing: Brevo offers a volume-based pricing model that charges users by the number of emails sent rather than the size of their contact list, with unlimited contacts across all tiers. The platform offers a generous Free plan that allows 300 emails per day, while the paid “Starter” plan starts at approximately $9 per month for 5,000 emails. 

    Brevo offers a robust REST API and SMTP relay that integrates seamlessly with any CMS or custom application using native libraries for PHP, Node.js, and Python. In addition to offering dynamic content personalization, it also enables you to inject user-specific details directly into responsive email templates.

    5. Courier

    Courier is a transactional notification platform that unifies notifications across teams, products, and channels. It supports multiple channels, including email, SMS, push, in-app, and chat – all in a single API, making it easy to launch new channels. 

    Pricing: Courier offers a free Developer plan that includes 10,000 notifications per month and single sign-on (SSO) via Google or GitHub. For growing needs, their Pro plan is a pay-as-you-go option starting at $0.005 per send, while the custom-priced Enterprise plan adds advanced features like a dedicated Solutions Architect and multi-tenant management.

    courier Transactional Email Service homepage

    It also offers a Preferences API that allows users to choose which notifications they want to receive. It allows for easy integration with existing communication APIs and can build a notification template in minutes. 

    6. Customer.io

    Customer.io is a marketing and customer management platform that can send transactional emails, SMS, and in-app notifications. It is well-suited for sending password resets, order receipts, and other transactional messages. It has a separate infrastructure for sending transactional emails reliably and claims to have a 99.5% uptime.  

    Pricing: There are three different pricing options. Their Essentials plan starts at $100/month and allows sending email, push, in-app, and SMS notifications to 5,000 users. 

    customer io Transactional Email Service homepage

    Customer.io has a unique feature that sets it apart: you can get the entire messaging journey of a user. This allows you to see all the messages the user has received over time, whether they are password reset instructions or marketing promotions. 

    7. Elastic Email

    Elastic Email is an email marketing platform offering various tools for businesses to create and send effective email campaigns. The platform includes features such as a drag-and-drop email designer, customizable templates, personalization options, advanced scheduling, automation, and detailed statistics and reports for continuous learning and development. 

    Pricing: There are different pricing plans for using the email marketing and email API features. You can test the integration with a limited sending capacity for free. Paid plans start at $19/month for up to 50k emails, and they include essential features for reliable sending, including Email API, Designer, verification, tracking, and support.

    elastic email Transactional Email Service homepage

    Elastic Email also offers tools for building a contact list, including subscription forms, pop-ups, and landing pages. The Elastic Email WordPress Sender can connect your WordPress server with the Elastic Email API to maintain all your email campaigns.

    8. GetResponse

    GetResponse is a comprehensive email marketing automation platform that provides powerful tools to grow online businesses. It offers a variety of features, including email marketing, autoresponders, send-time optimization, newsletter templates, marketing automation, web events, advanced triggering, multichannel engagement, signup forms, A/B testing, list management, lead magnet funnels, eCommerce marketing automation, and more.

    Pricing: GetResponse offers three standard marketing tiers, Starter ($19/Mo), Marketer ($59/mo), and Creator ($69/mo), which all include unlimited monthly marketing sends but don’t include dedicated transactional features. Access to transactional emails, SMTP connections, and dedicated IPs is exclusively reserved for the Enterprise plan, which operates on a custom pricing model tailored to specific business needs. 

    getresponse Transactional Email Service homepage

    You can use it to communicate with customers efficiently and effectively, build a mailing list, and promote and sell your products online. Additionally, it integrates with popular eCommerce platforms such as WooCommerce, Magento, and Shopify, and offers a free plan with a demo for large businesses.

    9. MailerSend

    MailerSend is a transactional email service designed for team collaboration. It offers features such as an intuitive user interface, dynamic email templates, a robust RESTful API with a 99.5% SLA (service level agreement), and a drag-and-drop editor for creating responsive email templates.

    Pricing: The Free plan offers 500 emails per month and 10 email verification credits. The paid plans (Hobby, Starter, and Professional) offer increasing volumes of emails and SMS messages, starting at 5,000 emails per month for the Hobby plan and going up to 50,000 emails and 150 SMS messages for the Professional plan. 

    mailersend Transactional Email Service homepage

    MailerSend has a library of pre-designed dynamic email templates that can be easily personalized and integrated with the user’s preferred programming language. It also provides tools to improve email deliverability, including email verification and analytics. 

    10. Mailgun

    Mailgun provides powerful email-sending infrastructure via its Email API and SMTP relay services. The Email API enables easy integration and the sending of transactional or bulk emails, with 99.99% server uptime.

    Pricing: You can sign up for a free plan that offers 100 emails per day. The Basic plan starts at $15 per month and allows the sending of up to 10,000 emails.

    mailgun Transactional Email Service homepage

    You can use the Simple Mail Transfer Protocol (SMTP) to send marketing and transactional emails, with authentication protocols such as SPF, DMARC, and DKIM. They also offer inbound email routing and send time optimization – a feature that delivers your email when the recipients view their inbox. 

    11. Mailtrap

    Mailtrap is an email delivery platform built for both development and production. Developers can test, inspect, and debug emails in a secure sandbox and then seamlessly move to staging or live environments. Key features include spam score checking, SMTP and API support, detailed analytics, and team collaboration.

    Pricing: Free tier available; paid plans start at $15/month.

    It also offers Email Sandbox functionality that provides a secure environment for developers and QA teams to capture and inspect SMTP traffic from staging and development builds without risking accidental emails to real customers.

    This tool speeds up the quality assurance process by allowing users to automate test scenarios via a flexible API, validate HTML and CSS for client compatibility, and analyze spam scores to ensure optimal deliverability.

    12. Moosend

    Moosend is an email marketing and email automation software that offers features such as email sending, newsletter editing, personalization, audience management (segmentation, CRM tools), marketing growth (landing pages, subscription forms), automation (marketing automation, e-commerce AI, product recommendations), and tracking and reporting. 

    Pricing: Once the 30-day free trial ends, the cheapest plan costs $9/month and allows unlimited email sends to 500 contacts.

    moosend homepage Transactional Email Service

    Moosend also offers a variety of resources, such as a marketing blog, an academy, templates, webinars, and CRM tools. It also allows users to compare it with other email marketing software products such as MailChimp, ConvertKit, Constant Contact, and ActiveCampaign. The built-in integrations for WordPress, WooCommerce, and Magento make sending emails right out of the box easy.

    13. Netcore Cloud Email

    Netcore Cloud also offers an email marketing platform to businesses and enterprise customers. The platform uses AI to make every email more impactful through predictive segmentation, predictive engagement, send-time optimization, and subject-line optimization.

    Pricing: The Basic plan costs $349, the Scale plan costs $589, and the Growth plan costs $899. A free trial is also available.

    netcore cloud Transactional Email Service homepage

    The platform also provides actionable insights to support better decision-making and offers personalized customer journeys. It also offers resources and tools for email marketing, including A/B testing, email collection, and four email marketing types.

    14. Omnisend

    Omnisend is a comprehensive eCommerce marketing platform that offers powerful email and SMS marketing functionality. It includes email campaigns, automation, segmentation, pop-ups and forms, reporting, and multiple channels.

    Pricing: Omnisend offers a free tier for up to 500 contacts, while the Standard plan lets growing businesses start at $11.20 per month with the upfront discount. High-volume senders can opt for the Pro plan at $41.30 per month, which includes unlimited emails and monthly global SMS credits equal to the subscription price. 

    omnisend Transactional Email Service homepage

    Omnisend offers resources such as migration tools and multi-store accounts. It also integrates with 80+ popular services, including WooCommerce, Shopify, and Wix. This integration makes it easy for businesses to create on-brand, shoppable emails, automate sales, fully leverage customer data, capture and convert new subscribers, track and learn what’s working best, and tap into omnichannel marketing.

    15. Postmark

    Postmark is a transactional email service that delivers emails and claims to be 4x faster than the competition. It offers a variety of features, including an email API, SMTP service, message streams, email templates, inbound email, analytics, and integrations.

    Pricing: It offers a free plan with a limit of 100 emails/month. Paid plans start at $15/month for 10,000 emails, and you can pay an additional $50/month for a dedicated IP address.

    postmark Transactional Email Service homepage

    Postmark also offers detailed open and delivery tracking for every email, responsive templates for sending transactional emails, and customer support. You can use a web dashboard to track bounced emails and webhooks to notify the app of any issues.

    16. SendGrid

    Twilio SendGrid is an email marketing service that enables businesses to manage email campaigns, design emails, automate messages, and achieve high deliverability. It claims to have an average inboxing rate of 96%. 

    Pricing: The free plan offers 100 emails per day. Paid plans start at $19.95/ month for 50,000 emails. 

    sendgrid Transactional Email Service homepage

    The SendGrid email platform has a modern UI and provides visibility into the entire email lifecycle. It also provides add-ons such as 30 Days of Email Activity History, Dedicated IP Address, Twilio Products and APIs, Personalized Support, and Twilio Segment products to maximize email marketing. 

    17. SendLayer 

    SendLayer is an email delivery platform that provides a reliable and easy-to-use service for sending transactional emails. It offers detailed email logs, open-and-click analytics, mailing lists, API, SMTP email relay, and email analytics. 

    Pricing: The cheapest plan starts at $5/month and allows sending up to 1,000 emails. 

    sendlayer Transactional Email Service homepage

    SendLayer is suitable for small businesses that are just getting started. Some of its key features include unlimited mailing lists and event-based webhooks, which automatically trigger actions based on specific events, such as an email being opened or a link being clicked. 

    18. SendPulse

    SendPulse offers a transactional email service that lets users send email campaigns via SMTP or the API. The service offers a free plan that allows up to 12,000 emails per month. 

    Pricing: The free plan allows sending 12,000 emails per month. Paid plans start at $74.85/month for 100,000 emails. Alternatively, you can opt for the pay-as-you-go plan, which costs $15/year for 10,000 emails.

    sendpulse Transactional Email Service homepage

    SendPulse supports multiple channels, including SMS, push, in-app, and chat. Their service includes automation, dedicated IP addresses, SPF and DKIM authentication, a list of unsubscribed contacts, open and click tracking, a custom tracking domain, and webhooks for tracking email status. Additionally, they offer a variety of tools for sending transactional emails, including a drag-and-drop editor, subscription forms, email templates, and a Chrome extension.

    19. SocketLabs

    SocketLabs is an email delivery service that provides technology, infrastructure, and expertise in order to help businesses improve their email deliverability. The company offers a range of solutions, including SMTP service, email APIs, and tailored solutions.

    Pricing: The Core Email Essentials and Reporting plan offers a free first month, then costs $39.95 per month for 40,000 emails, with essential features such as SMTP/API and 10 days of insight history. For users requiring higher volume and advanced features, the Pro 100k plan is priced at $89.95 per month and includes 100,000 emails, a dedicated IP address, and extended performance history.

    socketlabs Transactional Email Service homepage

    They also provide detailed reporting, automatic bounce processing, and advanced analytics to help customers understand and improve their email delivery performance. Additionally, they offer a free trial, with migration tools for customers looking to switch from other email service providers. It supports DKIM, SPF, DMARC, and MTA-STS. It also constructs smart delivery rules based on the ever-changing rulesets of mailbox providers. 

    Final Thoughts

    Transactional email directly affects how your application functions. When delivery is delayed or inconsistent, password resets fail, confirmations don’t arrive, and user confidence drops.

    The right provider depends on your sending volume, infrastructure, and level of technical control. Focus on deliverability, authentication support, uptime guarantees, and API flexibility. Pricing matters, but performance matters more.

    Of course, reliable email delivery also depends on the environment your application runs in. Poor server configuration, mismanaged DNS, or inconsistent deployment practices can undermine even the best email provider.

    If you want tighter control over your cloud servers, simplified deployment workflows, and a cleaner way to manage production infrastructure, sign up for a free trial of RunCloud and see how it fits into your stack.

    When your infrastructure is stable and your email delivery is reliable, your application performs the way it should.

    Frequently Asked Questions 

    What are the most common use cases for transactional emails?

    The most frequent use cases include order confirmations, password resets, shipping notifications, account verification emails, and two-factor authentication codes. Unlike marketing emails, these are triggered one-to-one by a user’s action.

    How do I ensure my emails don’t end up in spam?

    To avoid deliverability issues, ensure you have proper authentication (SPF/DKIM) set up. Use email validation to verify addresses before sending, and keep your transactional traffic on a separate IP from your marketing traffic. 

    What is the difference between throttling and frequency caps?

    Throttling is a mechanism ISPs (or your provider) use to limit the number of emails accepted from a sender over a specific period to prevent server overload. Frequency caps are rules you set to limit how many emails a specific subscriber receives in a given timeframe to prevent user fatigue.

    Can I test my transactional emails before going live?

    Yes. Most providers offer A/B testing for subject lines or content within your transactional flows. You should also use a sandbox environment to test prebuilt flows and templates without emailing real customers.

  • DKIM – What Is It & Why Your Emails Need It

    DKIM – What Is It & Why Your Emails Need It

    Are you tired of seeing your emails end up in the spam folder? Want to protect your business from phishing attacks? Then you need to know about DKIM!

    Recent studies show that using DKIM (DomainKeys Identified Mail) significantly increases email deliverability and reduces the risk of phishing attacks. It really can be that easy – with just a few simple steps, you can protect your emails from being diverted to spam, and your business from the growing problem of cyber threats.

    Let’s get started!

    What Is DKIM?

    DKIM (DomainKeys Identified Mail) is a method of authenticating the origin of an email message. It allows the person receiving the message to check that it was actually sent by the domain it claims to be sent from, and that it hasn’t been modified during transit.

    Using DKIM helps to protect against spoofing and phishing attacks, in which attackers try to trick recipients into thinking that an email is from a legitimate source, when it is actually from an unauthorized or malicious source. It also helps to improve email deliverability, by allowing email servers to more easily distinguish legitimate messages from spam or other types of unwanted email.

    How Does DKIM Work?

    When a domain owner wants to use DKIM to authenticate their emails, they first generate a private/public key pair and publish the public key in their DNS records. The private key is used to create a digital signature, which is added to the headers of each email sent from that domain.

    The signature is an encrypted message that is unique to each email, and it contains information about the email, such as the sender, the recipient, and the date and time it was sent. It also includes a hash of the email’s content, a fixed-length string of characters generated using a mathematical function.

    When an email server receives an email with a DKIM signature, the server retrieves the public key from the DNS records and uses it to verify the signature. This involves decrypting the signature using the public key, and then comparing the resulting information to the email itself. If the information matches and the signature is valid, the email is considered authentic.

    If the signature is invalid or cannot be verified, it could indicate that the email has either been modified in transit, or is not from the domain it claims to be. In this case, the server may mark the email as spam or block it altogether, to protect the recipient from potentially malicious or unwanted content.

    Why Do Your Emails Need DKIM?

    Email security is vital for protecting the confidentiality, integrity, and availability of email communication. It is essential for businesses, organizations, and individuals who rely on email as a primary means of communication, as email is often used to transmit sensitive information, such as financial data, personal information, and confidential documents.

    There are two main problems with email – reliable delivery of outgoing emails and the potential threat of phishing attacks from incoming emails. According to Statista, a leading market and consumer data provider, out of 336.41 billion emails sent in July 2021, almost 283 billion emails were spam.

    Phishing attacks can trick recipients into disclosing sensitive information or downloading malware. These attacks often rely on spoofing the sender’s address or domain, so the email appears to be from a trusted source. The Anti-Phishing Working Group (APWG), an international coalition of counter-cybercrime responders and forensic investigators, concluded that the third quarter of 2022 was the worst quarter for phishing that APWG has ever observed. They observed a total of 1.2 million phishing attacks, a new record.

    This is where DKIM can help. By allowing email servers to verify an email’s authenticity, DKIM helps protect against spoofing and phishing attacks, making it more difficult for attackers to impersonate legitimate domains.

    DKIM helps the recipient verify an email’s origin, reducing the chances of getting marked as spam and increasing email deliverability. Many email servers use various filters and algorithms to identify and block spam and other unwanted emails. Having a valid DKIM signature can help increase the chances that an email will be delivered to the recipient’s inbox.

    On the other hand, not using DKIM can have consequences for the security and deliverability of emails. Without a DKIM signature, emails are more vulnerable to spoofing and phishing attacks, and they may be more likely to be marked as spam or blocked by email servers. This can lead to reduced deliverability and a decreased ability to communicate effectively through email.

    Setting Up DKIM for Your Domain

    To set up DKIM for an email domain, follow these steps:

    1. Generate a private/public key pair

    The first step in implementing DKIM is to generate a private/public key pair, which will be used to create and verify the DKIM signature. Several tools and resources are available for generating a key pair, such as OpenSSL, and DKIMCore; however, you are far more likely to use an email service provider such as Gmail, Outlook, or SimpleLogin, which will generate these keys on your behalf.

    generating a private public key pair for implementing dkim

    2. Add the public key to your DNS records

    After generating the key pair, you will need to add the public key to your DNS records, to retrieve and verify the DKIM signature. The specific steps for doing this will depend on the DNS provider you are using, but you will need to create a new TXT record and add the public key as the value.

    adding the public key to dns record

    3. Modify your email server’s configuration

    Next, you will need to modify your email server’s configuration to add the DKIM signature to outgoing emails. The specific steps for doing this will depend on the email server software you are using, but usually you will need to add the private key and other necessary information to the server’s configuration file. The exact steps vary by mailing software and the version you are using. Refer to your server’s documentation for precise steps.

    If you didn’t create a key in step 1, and are using an email service, then look for the option to “verify DNS records”. This will configure the required settings automatically and start signing all outgoing emails.

    4. Test and troubleshoot

    After completing the above steps, you should test your DKIM setup to ensure it is working correctly. Send a test email to yourself and check the email headers to verify that the DKIM tests are passing.

    How To Verify The DKIM Signature Of An Email

    Once you have configured the DNS records, verifying that everything is working correctly is a good idea. You can do this by following the steps given below:

    1. Send an email from your mailbox using the custom domain to a different address.
    2. Open the recipient’s mailbox, click on the menu icon, and look for the option to view the original message. On Gmail, this option is called “Show original”. However, in other email clients this can be called “View raw message”, or “Show email headers”.
    option show original to verify the dkim signature
    1. Once you open the raw message, you can look for the line starting with “DKIM-Signature” to verify that the headers are correct. Gmail provides a handy summary table at the top of the screen which can tell you if your message passed the DKIM check.
    dkim verification pass

    Conclusion

    DKIM is an essential email security feature already being used by 20,420 businesses to reduce the chances of email spoofing and phishing. We encourage you to configure the DKIM setting on your email server to take advantage of the additional security and decrease the chances of getting marked as spam.

    If you are looking for a simple yet powerful dashboard to configure your servers, then try RunCloud, which provides an easy and convenient way to maintain your servers without needing to learn about the intricacies of Linux servers. Start with a free trial today and experience the difference yourself.