Install and Enjoy Caddy Web Server on Linux

Windows Articles

How to update apps on Android

Hi folks! In this post, we will show you how to update your Android apps. Updating the apps on your device is...

How to install Apache Ant on Ubuntu 20.04?

Hello, friends. Apache Ant is a very important tool for the development of applications in Java. So in this post, we will...

How to use the ss command

For Linux users, there will come a time when you need to know about the network. Several tools help in this process,...

How to create user template in Windows Server 2019/2016

Hello! Windows Server has many features that support system administration. For example, through the users it is possible to manage many administrative...

Debian 10.6 available

Several volunteers have developed the free software distributed under the name of Debian. Debian does not sell its software directly, the developers...

In the present world, security is the most important thing to keep an eye on. Even the slightest leakage can allow a huge tragedy to take place. In the case of websites, HTTPS is very important as without it, users are more likely to leak their sensitive info in the online. If you’re a webmaster, you may already be using NGINX or Apache. These are obviously very popular and powerful, but setting up HTTPS with them is a painful task.

Thanks to the world of devs, there’s another alternative solution to the problem – Caddy Web Server. It’s a really nice alternative to all those popular choices. It also comes with HTTPS by default, saving a lot of hassle and problem in the start.

Let’s take a look on installing Caddy in our system.

Installing Caddy Web Server

For installing Caddy in our Linux system, we’re going to use cURL. Caddy works the same on all the available platforms including all the normal Linux versions and server editions. It’s because Caddy loves to distribute their software with the help of a specialized bash script instead of adding software repo.

Run the following command:

curl https://getcaddy.com | bash -s personal

In this demo, we’ll be running the Caddy “personal” (free) edition. It’s free of course, but for larger organizations and for higher usage, you should get the commercial edition. However, the commercial one is a bit costly. You can check out the commercial price plans here.

If you want to install the commercial version of Caddy Web Server, run the following command:

curl https://getcaddy.com | bash -s commercial

After the script finishes downloading and installing Caddy, it’ll be installed in /usr/local/bin/ directory. Now, run the following command for modifying the Caddy binary.

sudo setcap cap_net_bind_service=+ep /usr/local/bin/caddy

Configuring Caddy

Now, we have to configure the server. Let’s get going.

Enable root access:

su

OR

sudo -s

Create the directories where Caddy will operate:

mkdir /etc/caddy
mkdir /etc/ssl/caddy
mkdir /var/www

Note that if your server already contains “/var/www/” directory, you can skip the last command.

Now, create a new “Caddyfile”:

touch /etc/caddy/Caddyfile

Update the folder permission of the Caddy sub-folder:

chmod 0770 /etc/ssl/caddy

Now, chown the “/var/www” directory.

chown www-data: /var/www

For working properly with the “systemd”, run the following commands:

touch /lib/systemd/system/caddy.service
nano /lib/systemd/system/caddy.service

Paste the following code into the editor, then “Ctrl + O” to save the file and “Ctrl + X” to close the editor

[Unit]
Description=Caddy HTTP/2 web server
Documentation=https://caddyserver.com/docs
After=network-online.target
Wants=network-online.target

[Service]
Restart=on-failure
StartLimitInterval=86400
StartLimitBurst=5

User=www-data
Group=www-data
; Letsencrypt-issued certificates will be written to this directory.
Environment=CADDYPATH=/etc/ssl/caddy

ExecStart=/usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp
ExecReload=/bin/kill -USR1 $MAINPID

LimitNOFILE=1048576
LimitNPROC=64

PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=full
ReadWriteDirectories=/etc/ssl/caddy

; The following additional security directives only work with systemd v229 or later.
; They further retrict privileges that can be gained by caddy. Uncomment if you like.
; Note that you may have to add capabilities required by any plugins in use.
;CapabilityBoundingSet=CAP_NET_BIND_SERVICE
;AmbientCapabilities=CAP_NET_BIND_SERVICE
;NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

Restart “caddy.service”:

systemctl enable caddy.service
systemctl start caddy.service

Setting up domains

Now, it’s just normal configuration like most other servers to perform some configurations. Let’s start with the domain folder.

Edit the “Caddyfile” for activating your new domain. Don’t forget to change the names with your domain name.

mkdir -p /var/www/osradar.com/
nano /etc/caddy/Caddyfile

# Paste the following code for activating your domain on Caddy

domain-demo.com {
root /var/www/osradar.com
}

Restart the “caddy.service”:

systemctl restart caddy.service

Enjoy Caddy! Check out installing MariaDB server on CentOS 6/7 and Fedora 27/28.

More articles

1 COMMENT

  1. I think some semicolons went missing. I would recommend just:
    mkdir -p /etc/caddy /etc/ssl/caddy /var/www
    (with -p there are no problems if the directory already exists, or if the parent doesn’t).

    The lines starting with “touch”, “systemctl” and “mkdir -p” are missing semicolons.

    Also, the setcap is not necessary, as it is part of the standard install script.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Latest article

How to update apps on Android

Hi folks! In this post, we will show you how to update your Android apps. Updating the apps on your device is...

How to install Apache Ant on Ubuntu 20.04?

Hello, friends. Apache Ant is a very important tool for the development of applications in Java. So in this post, we will...

How to use the ss command

For Linux users, there will come a time when you need to know about the network. Several tools help in this process,...

How to create user template in Windows Server 2019/2016

Hello! Windows Server has many features that support system administration. For example, through the users it is possible to manage many administrative...

Debian 10.6 available

Several volunteers have developed the free software distributed under the name of Debian. Debian does not sell its software directly, the developers...