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:
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.
Compatibility: An EOL version may not be compatible with newer hardware, software, or standards. This can cause errors, crashes, or performance issues.
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.
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.
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.
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.
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:
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.
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.
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.
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.
Configure your domain name, for quick and easy setup, we recommend integrating RunCloud with Cloudflare API, which automatically handles adding and removing DNS records.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Now you can go back to the Craft CMS dashboard and refresh the page, all the warnings that you tackled should have disappeared.
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.
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.
TheWordPress 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.
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”.
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.
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.
Next, you will need to configure the SSL/TLS settings for your site. We recommend enabling AutoSSL.
Set the name and other details of your WordPress site. Be sure to use a strong password, and check everything carefully.
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.
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
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.
Navigate to the “Sites” tab and click on “Add New” to create a new site.
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.
Once you have added the site it should be visible in the Network Admin dashboard. Repeat the last step to create additional sites.
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.
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
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.
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.
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.
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
On your WordPress multisite installation, open the Network Admin dashboard. There you can find the “Installed Themes” submenu.
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.
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.
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:
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 -vto 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';
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';
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!
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.
When a user visits your WordPress page, the web browser sends an HTTP/HTTPS request to Nginx.
Nginx passes the request to PHP-FPM, and Nginx will catch any PHP codes when trying to grab the page.
PHP-FPM processes the page and runs through the MariaDB/MySQL database query to retrieve the page.
PHP-FPM sends the generated “static” HTML page back to Nginx.
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:
Visit the web page that you want to test and open Web Developer Tools by pressing F12 or right-click and selecting Inspect.
When opened, click and select the “Network” tab.
Refresh the page to get fresh page data.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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:
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.
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 RunCloudDroplet” 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.
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.
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.
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.
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.
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
Smart 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 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.
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.
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 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 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.
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 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.
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 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.
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 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 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.
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 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 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.
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.
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.
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.
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.
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:
Send an email from your mailbox using the custom domain to a different address.
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”.
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.
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.