Шаг 2 — Установка Caddy
Теперь, когда вы убедились в возможности выполнения сборки и запуска Caddy, пришло время настроить службу systemd, чтобы Caddy можно было запускать автоматически при загрузке системы. Дополнительную информацию о systemd можно найти в руководстве по основам Systemd.
Далее измените принадлежность бинарного файла Caddy на пользователя root:
Это предотвратит внесение изменений в исполняемый файл с помощью других учетных записей. Однако даже при использовании пользователя root для определения принадлежности Caddy рекомендуется запускать Caddy с помощью других учетных записей, не имеющих прав root и присутствующих в вашей системе. Это гарантирует, что в случае нарушения безопасности Caddy (или другой программы) злоумышленник не сможет изменять бинарный файл или выполнять команды от имени пользователя root.
Далее установите для бинарного файла разрешения — это позволит предоставить пользователю root полные права на чтение/запись/исполнение файла, в то время как остальные пользователи смогут только читать и исполнять файл:
Поскольку процесс Caddy не будет запускаться с помощью пользователя root, Linux будет запрещать привязку к портам и (стандартные порты для HTTP и HTTPS соответственно), так как это привилегированные операции. Для удобства доступа к вашему домену Caddy необходимо привязать к одному из этих портов в зависимости от протокола. В противном случае вам потребуется добавить конкретный номер порта в URL-адрес домена в вашем браузере, чтобы просмотреть содержимое, которое он будет обслуживать.
Чтобы позволить Caddy выполнять привязку к порту с низким номером без запуска root, воспользуйтесь следующей командой:
Утилита определяет права для файлов. В этой команде она предоставляет право для бинарного файла Caddy, что позволяет исполняемому файлу выполнять привязку с номером ниже 1024. В этой команде она указывает возможности CAPNETBIND_SERVICE для бинарного файла Caddy, который позволяет привязку исполняющего файла к порту ниже 1024.
Теперь вы завершили настройку бинарного файла Caddy и можете приступать к созданию конфигурации Caddy. Создайте директорию, где вы будете хранить файлы конфигурации Caddy, запустив следующую команду:
Затем установите правильные разрешения для пользователя и группы:
Установка пользователя в качестве root, а группы как www-data гарантирует, что у Caddy будет доступ к папке с правами на чтение и запись (через группу www-data) и что только учетная запись суперпользователя будет иметь аналогичные права на чтение и изменение. www-data — это используемые в Ubuntu по умолчанию пользователь и группа при работе с веб-сервером.
В следующем шаге вы должны будете активировать автоматическое предоставление сертификата TLS из Let’s Encrypt. В процессе подготовки создайте директорию для хранения любых сертификатов TLS, которые будет получать Caddy, и укажите те же самые правила принадлежности, как и в случае с директорией :
Caddy должен иметь возможность сохранять сертификаты в этой директории и считывать их оттуда, чтобы шифровать запросы. По этой причине необходимо изменить разрешения для директории , чтобы она была доступна только посредством пользователя root и группы www-data:
Далее создайте директорию для хранения файлов, которые будет размещать Caddy:
Установите www-data в качестве владельца и группы директории:
Caddy считывает свою конфигурацию из файла с именем , который хранится в директории . Создайте файл на диске, запустив следующую команду:
Для установки службы Caddy загрузите юнит-файл systemd из репозитория Caddy на Github в директорию , запустив следующую команду:
Внесите изменения в разрешения файла службы, чтобы его мог изменять только владелец, т. е. root:
Затем перезагрузите службу systemd для обнаружения службы Caddy:
Проверьте, удалось ли systemd обнаружить службу Caddy, запустив :
Результат будет выглядеть примерно так:
Если вы увидите аналогичный вывод, это значит, что новая служба была корректно обнаружена службой systemd.
Во время выполнения предварительных требований по настройке сервера вы активировали , простой брандмауэр, и разрешили подключения через SSH. Чтобы Caddy мог обслуживать трафик HTTP и HTTPS с вашего сервера, вам нужно будет разрешить прием такого трафика в , запустив следующую команду:
Результат будет выглядеть следующим образом:
Используйте , чтобы проверить, вступили ли в силу ваши изменения:
Вывод должен выглядеть так:
Установка Caddy завершена, но вам необходимо настроить его для обслуживания любого контента. В следующем шаге вы должны будете настроить Caddy для обслуживания файлов из директории .
Reloading config
Your server can perform zero-downtime config reloads/changes.
All API endpoints that load or change config are graceful with zero downtime.
When using the command line, however, it may be tempting to use Ctrl+C to stop your server and then restart it again to pick up the new configuration. Don’t do this: stopping and starting the server is orthogonal to config changes, and will result in downtime.
Instead, use the command for a graceful config change:
This actually just uses the API under the hood. It will load and, if necessary, adapt your config file to JSON, then gracefully replace the active configuration without downtime.
If there are any errors loading the new config, Caddy rolls back to the last working config.
Serve The Web Like It’s 2017
В целом он прост в настройке и универсален. Вот некоторые из его функций, и мы будем использовать его сегодня, чтобы добавить поддержку https для обычных веб-сайтов http, и это очень просто. Принцип заключается в использовании бесплатного SSL-сертификата Let’s Encrypt для реализации HTTPS. Let’s Encrypt — это бесплатный SSL-сертификат, который предоставляет организацию с открытым исходным кодом, срок действия ее сертификата истекает и его необходимо продлить, Caddy может автоматически продлевать
Сначала давайте попробуем установить Caddy.
Откройте официальный веб-сайт для загрузки: https://caddyserver.com/download, во-первых, выберите нужные вам функции, здесь мы видим, что caddy имеет множество функциональных плагинов и может быть настроен аналогично весенней загрузке. . Здесь мы просто добавляем поддержку Https на сервер, просто следуйте конфигурации по умолчанию. Второй шаг — пожертвовать. Если у вас есть свободные деньги, пожалуйста, сделайте пожертвование и поддержите!
Конечно, нам не нужно делать пожертвование и загружать Caddy в соответствии с нашей системной платформой на третьем этапе. Следующим шагом является настройка Caddy. Операция примерно такая же для платформ Windows и Linux. Я объясню специальные места.
Идея Caddy заключается в том, что вы можете напрямую преобразовать папку в сервер. Мы можем запустить caddy в любой папке (вам нужно добавить переменные среды, если вы не добавите их, вам нужно указать путь к файлу) в преобразовать эту папку в корневой каталог сервера.
Windows добавить переменную среды: добавьте каталог caddy в путь к переменной среды.
Среда Linux: напрямую добавить в / etc / profile, экспортировать PATH = «$ PATH: / your Caddy path»
Таким образом, служба запускается. Но что, если нам нужно настроить параметры? Есть два способа: один — добавить параметры после команды, а другой — использовать файл конфигурации. Создать новый файл в каталоге установки и называть его Caddyfile без суффикса. Это файл конфигурации. Конечно, вы также можете поместить файл конфигурации в другие пути и добавить параметры при запуске
caddy -conf=»/usr/local/app/Caddyfile»
В этом файле конфигурации мы можем настроить поддержку HTTPS. Подробнее см. Https://caddyserver.com/docs/automatic-https.
Затем мы запускаем службу, и настройка прошла успешно!
Здесь следует отметить два момента:
1. HTTPS использует порт 443, если используется программное обеспечение, его необходимо закрыть, например, сервер SVN.
2. Файл конфигурации Caddyfile требуется для использования в Windows, иначе он не запустится.
Step 3 — Configuring Caddy
In this section, you’ll write basic Caddy configuration for serving static files from your server.
Start by creating a basic HTML file in , called :
Add the following lines:
/var/www/index.html
When shown in a web browser, this file will display a heading with the text This page is being served via Caddy. Save and close the file.
Open the configuration file you created earlier for editing:
Add the following lines:
/etc/caddy/Caddyfile
This is a basic Caddy config, and declares that all HTTP traffic to your server should be served with files () from (which is marked as ) and compressed using to reduce page loading times on the client side.
When you are done, save and close the file.
Caddy has a huge number of different directives for many use cases. For example, the directive could be useful for enabling PHP.
To test that everything is working correctly, start the Caddy service:
Next, run to find information about the status of the Caddy service:
You’ll see the following:
You can now browse to your server’s IP in a web browser. Your sample web page will display:
You have now configured Caddy to serve static files from your server. In the next step, you’ll extend Caddy’s functionality through the use of plugins.
Запуск единого веб-сервера
Прежде чем я расскажу вам о программном обеспечении Uniform Server, я должен объяснить, почему я не перестал искать, когда нашел XAMPP.
Причина в том, что, хотя он и установил веб-сервер на основе PHP / MySQL, который мог бы хорошо отражать мой блог — его настройка, настройка и обслуживание службы были не такими упорядоченными, как мне бы хотелось. Хотя он поставляется с приложением Admin PHP для настройки MySQL, настроить его не так просто, если вы этого хотите.
Uniform Server, с другой стороны, делает все, что может делать XAMPP, плюс он дает вам гораздо более простой доступ к настройке и настройке параметров по вашему усмотрению. Он также позволяет вам включать сценарии Perl, если вы того пожелаете.
Чтобы настроить Uniform Server, просто загрузите ZIP-файл и поместите его на USB-устройство или в каталог ПК, где вы хотите хранить файлы веб-сервера. В этой корневой папке вы найдете Start_as_program.exe и Start_as_service.exe. Запуск программы запустит приложение конфигурации сервера.
Это также побудит вас немедленно изменить свой корневой пароль MySQL для большей безопасности. Как только вы это сделаете, вы снова окажетесь на главном экране настройки сервера программы. Точно так же, как XAMPP, когда вы хотите активировать свой веб-сервер, просто нажмите «Start Both», и веб-сервер Apache и ваша база данных MySQL будут активированы на http: // localhost.
Если вы перейдете по адресу http: //localhost/index.php перед размещением своих собственных файлов в подкаталоге / www, вы увидите следующую страницу. Это то, как вы знаете, сервер работает правильно с первого раза.
В приложении Uniform Server нажмите кнопку «Конфигурация сервера», чтобы увидеть все аспекты веб-сервера, которые вы можете изменить из этого приложения. Это немного отличается от предыдущих выпусков Uniform Server, который использовал веб-страницу администратора для всех этих параметров конфигурации. Теперь все это делается с помощью локально запускаемого приложения без браузера.
Как вы можете видеть, из этого приложения вы можете настроить список параметров сервера, не прибегая к попыткам найти нужные файлы конфигурации на веб-сервере. Это приложение найдет их всех для вас.
Например, нажмите кнопку «Apache», чтобы увидеть все настройки веб-сервера Apache, к которым вы можете получить доступ и изменить их, а также файлы журналов, которые вы можете просмотреть здесь.
Нажмите на PHP, чтобы получить доступ к настройкам PHP, которые вы можете изменить на этом сервере. Это действительно хорошо, особенно после того, как я пытался изменить настройки PHP на своем сервере XAMPP. Никогда не делая этого раньше, это был довольно неприятный опыт. С Uniform Server все это выложено здесь для вас. Вам все еще нужно будет знать, как вносить изменения, но, по крайней мере, вам не придется тратить время на поиск нужных INI-файлов и файлов конфигурации.
Нажмите «Изменить базовую конфигурацию», чтобы увидеть все настройки PHP, которые вы можете быстро изменить прямо из этого приложения — редактирование файлов не требуется. Все это зависит от меню.
Кроме того, создание резервных копий MySQL DB также включено в приложение Uniform Server. Это хорошо, потому что у меня есть встроенное приложение в моей учетной записи веб-хостинга с InMotion Hosting, которое позволяет выполнять резервное копирование БД в один клик — поэтому очень приятно иметь такую же функцию и в моей локальной версии блога.
Для меня самый быстрый способ протестировать такую «легковесную» службу веб-сервера, чтобы убедиться, что она полностью способна, — запустить скрипт установки WordPress поверх установки локального веб-сервера. По моему мнению, если это удастся осуществить, то, вероятно, он сможет запустить практически любой блог на основе PHP.
Итак, используя приложение Uniform Server, я запустил phpMyAdmin (мне не нужно было выяснять, где находится инструмент), и создал тестовую таблицу базы данных MySQL с новым пользователем. Наконец, я скопировал последнюю версию WordPress, отредактировал файл config.php с именем db и пользователем, а затем запустил скрипт установки с http: //localhost/wp-admin/install.php.
Сценарий установки выполнялся на локальном веб-сервере Windows без единого сбоя. Очень хорошо!
Суть в том, что после выполнения всех этих тестов я решил переключиться с использования XAMPP на использование Uniform Server. Это просто и быстрее установить и настроить.
Вы пробовали и XAMPP и Uniform Server? Какой ты предпочитаешь? Знаете ли вы о каких-либо других легких веб-серверах, которые работают лучше? Поделитесь своими мыслями в разделе комментариев ниже.
Изображение веб-сервера через Shutterstock
Настройка доменов с помощью Caddy
Чтобы настроить домен, сначала вам нужно создать веб-корневую директорию для вашего сайта «test-domain.com» в папке caddy, как показано.
$ cd caddy $ mkdir test-tecmint.com
Теперь создайте файл под названием Caddyfile, используя команду touch.
$ vi Caddyfile
Вставьте следующий код, чтобы активировать новый домен.
test-tecmint.com { root /caddy/test-tecmint.com }
Перезапустите службу Caddy, чтобы сохранить изменения и получить новые сертификаты SSL/TLS автоматически, используя Let’s Encrypt.
$ caddy Активация функций конфиденциальности ... Ваши сайты будут обслуживаться через HTTPS автоматически, используя Let's Encrypt. Продолжая, вы соглашаетесь с Соглашением о расшифровке подписчиков Let's Encryption по адресу: https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf Пожалуйста, введите свой адрес электронной почты, чтобы указать соглашение и быть уведомленным в случае возникновения проблем. Вы можете оставить его пустым, но мы не рекомендуем это. Email address:
Если все настроено правильно, ваш домен будет работать через протокол HTTPS, указывающий, что ваше соединение защищено.
Возможности [ править ]
Caddy может обслуживать различные технологии веб-сайтов, которые также могут действовать как обратный прокси-сервер и балансировщик нагрузки. Большинство функций Caddy — это реализации, найденные в библиотеке Go, но некоторые улучшения доступны в виде промежуточного программного обеспечения и представлены через директивы в Caddyfile (текстовый файл, используемый для настройки Caddy).
- HTTP / 1.1 (открытый текст HTTP), HTTP / 2 (по умолчанию для HTTPS-соединений) и экспериментальная поддержка HTTP / 3 .
- HTTPS, включаемый и управляемый автоматически, или настраиваемый вручную
- TLS 1.3 (включая временную поддержку старых протоколов)
- Индикация имени сервера
- OCSP сшивание
- Виртуальный хостинг (несколько сайтов на одном порту)
- Встроенная поддержка IPv4 и IPv6
- Обслуживать статические файлы (по возможности использует sendfile )
- Изящный перезапуск / перезагрузка
- Обратный прокси (HTTP или WebSockets )
- Балансировка нагрузки с проверками работоспособности
- Прокси FastCGI
- Шаблоны (аналогично включенным на стороне сервера )
- Markdown рендеринг
- Общий интерфейс шлюза через WebSockets
- Сжатие Gzip
- Базовая аутентификация доступа
- Перезапись URL
- Перенаправления
- Просмотр файлов
- Журналы доступа, ошибок и процессов
- Экспериментальная поддержка QUIC
Adding functionality
Let’s do something interesting with our file server: serve a templated page. Create a new file and paste this into it:
<!DOCTYPE html> <html> <head> <title>Caddy tutorial</title> </head> <body> Page loaded at: {{now | date "Mon Jan 2 15:04:05 MST 2006"}} </body> </html>
Save this as in the current directory and load it in your browser: https://localhost/caddy.html
The output is:
Wait a minute. We should see today’s date. Why didn’t it work? It’s because the server hasn’t yet been configured to evaluate templates! Easy to fix, just add a line to the Caddyfile so it looks like this:
localhost templates file_server browse
Save that, then reload the browser tab. You should see:
With Caddy’s templates module, you can do a lot of useful things with static files, such as including other HTML files, making sub-requests, setting response headers, working with data structures, and more!
It’s good practice to compress responses with a quick and modern compression algorithm. Let’s enable Gzip and Zstandard support using the directive:
localhost encode zstd gzip templates file_server browse
That’s the basic process for getting a semi-advanced, production-ready site up and running!
When you’re ready to turn on automatic HTTPS, just replace your site’s address ( in our tutorial) with your domain name. See our HTTPS quick-start guide for more information.
Auto-starting Caddy
Now that we’ve created the user and directories, we’ll set up Caddy as a system service. By doing this step, the Caddy web server will automatically start when you boot (or reboot) your system. You’ll also be able to start, stop, or force Caddy to reload its configuration by using the command. We’ll also define the working directory for Caddy through this file; which will set the default directory where Caddy will look for files to serve.
First, run the following command to determine the systemd version:
systemctl --version
This will list the version of systemd, as shown below:
Note down the systemd version, since you need to create a different file based on the systemd version.
Next, use your favourite text editor to create the file . Most distributions have the editor installed, so you can run:
sudo vi /etc/systemd/system/caddy.service
In the editor, press to enter the editing mode.
If the systemd version is greater than 229, paste or type in the following content into the editor:
Description=Caddy web server After=network-online.target User=caddy Group=caddy Type=exec WorkingDirectory=/var/caddy/html ExecStart=/usr/local/bin/caddy run -config /etc/caddy/Caddyfile ExecReload=/usr/local/bin/caddy reload -config /etc/caddy/Caddyfile ExecStop=/usr/local/bin/caddy stop LimitNOFILE=1048576 LimitNPROC=512 PrivateTmp=true PrivateDevices=true ProtectHome=true ProtectSystem=strict ReadWritePaths=/etc/caddy/.local /etc/caddy/.config /var/log CapabilityBoundingSet=CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_BIND_SERVICE NoNewPrivileges=true WantedBy=multi-user.target
However, if the systemd version is less than 229, paste or type in the contents shown below. Since systemd versions less than 229 do not have the feature of adding security restrictions to the process at runtime, we’ve omitted those here.
Description=Caddy web server After=network-online.target User=caddy Group=caddy Type=simple WorkingDirectory=/var/caddy/html ExecStart=/usr/local/bin/caddy run -config /etc/caddy/Caddyfile ExecReload=/usr/local/bin/caddy reload -config /etc/caddy/Caddyfile ExecStop=/usr/local/bin/caddy stop LimitNOFILE=1048576 LimitNPROC=512 WantedBy=multi-user.target
Exit the editing mode by pressing “Esc”, and then type to save the file.
Caddy Web Server
The basic version of Caddy is sufficient for running static HTML websites locally which you can then access on the same computer and depending on security policies and applications also in the same computer network or Internet.
Why would you need a program like it? There are plenty of use-cases for it. Maybe you want to make files available on the Internet from a trusted location that only you can access. Think, a bookmarks file for example or a reference HTML page that you use at work.
Just point your browser to localhost:2015 after installation to get started. You will get a 404 not found error since there is no index.html or index.htm file in the Caddy directory by default.
Place an index file in the directory to have it loaded automatically or other HTML files to load them manually or through the use of links.
Access to static HTML pages may be all that you require depending on your needs, but Caddy’s functionality does not end there.
If you check out the features listing on the Caddy Server homepage or the user guide, you will notice that Caddy supports more than just static web pages.
For instance, you may serve multiple websites from a single Caddy installation if you want using a so-called Caddyfile which is a configuration file for the server.
There is also support for PHP but that works only in conjunction with a FastCGI server that you need to set up on your system as well.
Other features of interest include support for IPv6 environments, support for gzip compression, HTTP/2 and TLS 1.2 support, and WebSockets support.
A good starting point to find out more about several of the advanced features that Caddy supports is the user guide linked above.
It may be easier however to use a full solution like Wampserver, XAMPP or QuickPHP Web Server that ships with everything right out of the box (everything meaning PHP and MySQL among other things that you need to run advanced dynamic scripts and services such as WordPress).
For static HTML pages and sites however, it is an excellent solution that is dead easy to set up and use.
Plus, it is fully portable which means that you can carry it around wherever you go to start your own web server from any supported operating system.
Caddy 0.82
With Caddy 0.82 released a year after writing this review, it is time to look at the changes introduced in the meantime to the web server.
One of the biggest changes is its automatic use of HTTPS using the free Lets Encrypt initiative. What this means is that your web server will support HTTPS when set up provided that certain criteria are met (such as the host is not localhost or an IP address).
Caddy suports IPv6, multiple sites run on the same server using virtualhosts, rewrites and redirects, WebSockets, and many, many other things that it did not when it was first released in 2015.
In addition, Caddy is now also available for FreeBSD and OpenBSD, as well as Linux ARM which you may use to run the web server on Android devices.
Summary
Author Rating
5 based on 4 votes
Software Name
Caddy Server
Software Category
Server
Landing Page
https://caddyserver.com/
Step 4 — Enabling Automatic TLS with Let’s Encrypt
Plugins offer a way of changing and extending Caddy’s behavior. Generally, they offer more config directives for you to use, according to your use case. In this section, you’ll enable automatic Let’s Encrypt certificate provisioning and renewal, using TXT DNS records for verification. To verify using TXT DNS records, you’ll install the official plugin for interfacing with the DigitalOcean DNS API.
Note: You may notice that the official plugin we’re using in this step is marked as deprecated. That’s because it’s in the process of being replaced with a set of newer, modular libraries based on libdns.
However, the digitalocean library is currently in a developmental state with some open issues. Until the issues are resolved, we’ll use the earlier plugin, which works correctly despite being labeled obsolete.
To add a plugin, you’ll need to recompile Caddy using , but specifying the repositories of plugins that should be available. Run the following command to compile Caddy with support for DigitalOcean DNS:
The output will be similar to this:
Once the compilation is finished, move the resulting binary to by running:
Then, set appropriate permissions:
Next, you’ll configure Caddy to work with DigitalOcean’s API to set DNS records. Caddy needs to read your API token as an environment variable to configure DigitalOcean’s DNS, so you’ll edit its systemd unit file:
Add the highlighted line in the section, replacing with your API token:
/etc/systemd/system/caddy.service
Save and close this file, then reload the systemd daemon as you did earlier to ensure the configuration is updated:
Run to check that your configuration changes were OK:
Then, run to see if it ran correctly:
The output will look like:
You’ll need to make a couple of slight changes to your , so open it up for editing:
Add the highlighted lines to the , making sure to replace with your domain (instead of just ) and adding the block, specifying that DigitalOcean DNS should be used:
/etc/caddy/Caddyfile
Using a domain rather than just a protocol specifier for the hostname will cause Caddy to serve requests over HTTPS. The directive configures Caddy’s behavior when using , and the subdirective specifies that Caddy should use the DigitalOcean DNS system, instead of HTTP.
With this, your website is ready to be deployed. Restart Caddy with and then it, so it runs on boot:
If you browse to your domain, you’ll automatically be redirected to HTTPS, with the same message shown.
Your installation of Caddy is now complete and secured, and you can further customize according to your use case.
Linux service
Manually install Caddy as a service on Linux with these instructions.
Requirements:
- binary that you downloaded or built from source
- 232 or newer
- privileges
Move the caddy binary into your , for example:
Test that it worked:
Create a group named :
Create a user named , with a writeable home folder:
If using a config file, be sure it is readable by the user you just created.
Next, choose a systemd service file based on your use case:
- if you configure Caddy with a file.
- if you configure Caddy solely through its API.
They are very similar but have minor differences in the ExecStart and ExecReload commands to accommodate your workflow. Customize the file accordingly.
Double-check the and directives. Make sure the binary’s location and command line arguments are correct for your installation! For example: if using a config file, change your path if it is different from our example.
The usual place to save the service file is:
After saving your service file, you can start the service for the first time with the usual systemctl dance:
Verify that it is running:
When running with our official service file, Caddy’s output will be redirected to :
If using a config file, you can gracefully apply any changes:
You can stop the service with: