0
Fork 0
mirror of https://github.com/caddyserver/caddy.git synced 2024-12-23 22:27:38 -05:00
Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Find a file
2017-05-19 08:30:01 -06:00
.github Minor improvements to PR template 2017-04-29 16:49:07 -06:00
caddy Change forum links to new domain 2017-04-23 12:51:08 -06:00
caddyfile Revert "Revert removed method" (#1465) 2017-02-20 08:47:56 -07:00
caddyhttp proxy: Add new URI hashing load balancing policy (#1679) 2017-05-17 10:46:57 -06:00
caddytls tls: Only require renewed cert at startup 7 days out (issue #1680) 2017-05-19 08:30:01 -06:00
dist dist: Delete old build automation program 2017-05-05 18:12:41 -06:00
startupshutdown Log Startup and Shutdown Commands 2016-10-24 20:48:36 +01:00
.gitattributes Catch whitespace code style violations locally (#774) 2016-04-20 16:56:57 +02:00
.gitignore Add new browse sort - namedirfirst (#1551) 2017-04-02 20:38:14 +01:00
.travis.yml Update CI to use Go 1.8 (#1444) 2017-02-16 16:37:12 -07:00
appveyor.yml Update CI to use Go 1.8 (#1444) 2017-02-16 16:37:12 -07:00
assets.go Rewrote Caddy from the ground up; initial commit of 0.9 branch 2016-06-04 17:00:29 -06:00
assets_test.go Rewrote Caddy from the ground up; initial commit of 0.9 branch 2016-06-04 17:00:29 -06:00
caddy.go lint fixes 2017-04-29 20:53:58 -04:00
caddy_test.go Fix 1592: Allow insecure CA URL on internal networks (#1607) 2017-04-26 12:00:49 -06:00
commands.go Rewrote Caddy from the ground up; initial commit of 0.9 branch 2016-06-04 17:00:29 -06:00
commands_test.go Fix misspellings 2016-09-05 10:20:34 -06:00
controller.go OnFirstStartup and OnFinalShutdown callbacks added 2016-06-23 18:02:12 -06:00
LICENSE.txt License is a text file 2015-08-01 16:07:59 -06:00
plugins.go lint fixes 2017-04-29 20:53:58 -04:00
README.md Fix contributing link in readme 2017-05-02 11:02:25 -06:00
rlimit_posix.go improve rlimit usage (#982) 2016-08-02 21:01:36 -06:00
rlimit_windows.go improve rlimit usage (#982) 2016-08-02 21:01:36 -06:00
sigtrap.go Introducing Event Hooks Plugins (#1537) 2017-03-27 18:05:59 -06:00
sigtrap_posix.go Avoid panic if reloading before server is started 2017-03-06 19:20:26 -07:00
sigtrap_windows.go Rewrote Caddy from the ground up; initial commit of 0.9 branch 2016-06-04 17:00:29 -06:00

Caddy

Every Site on HTTPS

Caddy is a general-purpose HTTP/2 web server that serves HTTPS by default.


@caddyserver on Twitter Caddy Forum Caddy on Sourcegraph

Download · Documentation · Community


Caddy is fast, easy to use, and makes you more productive.

Available for Windows, Mac, Linux, BSD, Solaris, and Android.

Menu

Features

  • Easy configuration with the Caddyfile
  • Automatic HTTPS on by default (via Let's Encrypt)
  • HTTP/2 by default
  • Virtual hosting so multiple sites just work
  • Experimental QUIC support for those that like speed
  • TLS session ticket key rotation for more secure connections
  • Extensible with plugins because a convenient web server is a helpful one
  • Runs anywhere with no external dependencies (not even libc)

There's way more, too! See all features built into Caddy. On top of all those, Caddy does even more with plugins: choose which plugins you want at download.

Install

Caddy binaries have no dependencies and are available for every platform. Get Caddy any one of these ways:

  • Download page allows you to customize your build in the browser
  • Latest release for pre-built, vanilla binaries
  • go get to build from source: go get github.com/mholt/caddy/caddy (requires Go 1.8 or newer)

Then make sure the caddy binary is in your PATH.

Quick Start

To serve static files from the current working directory, run:

caddy

Caddy's default port is 2015, so open your browser to http://localhost:2015.

Go from 0 to HTTPS in 5 seconds

If the caddy binary has permission to bind to low ports and your domain name's DNS records point to the machine you're on:

caddy -host example.com

This command serves static files from the current directory over HTTPS. Certificates are automatically obtained and renewed for you!

Customizing your site

To customize how your site is served, create a file named Caddyfile by your site and paste this into it:

localhost

push
browse
websocket /echo cat
ext    .html
log    /var/log/access.log
proxy  /api 127.0.0.1:7005
header /api Access-Control-Allow-Origin *

When you run caddy in that directory, it will automatically find and use that Caddyfile.

This simple file enables server push (via Link headers), allows directory browsing (for folders without an index file), hosts a WebSocket echo server at /echo, serves clean URLs, logs requests to an access log, proxies all API requests to a backend on port 7005, and adds the coveted Access-Control-Allow-Origin: * header for all responses from the API.

Wow! Caddy can do a lot with just a few lines.

Doing more with Caddy

To host multiple sites and do more with the Caddyfile, please see the Caddyfile tutorial.

Sites with qualifying hostnames are served over HTTPS by default.

Caddy has a command line interface. Run caddy -h to view basic help or see the CLI documentation for details.

Running in Production

Caddy is production-ready if you find it to be a good fit for your site and workflow.

Running as root: We advise against this. You can still listen on ports < 1024 on Linux using setcap like so: sudo setcap cap_net_bind_service=+ep ./caddy

The Caddy project does not officially maintain any system-specific integrations nor suggest how to administer your own system. But your download file includes unofficial resources contributed by the community that you may find helpful for running Caddy in production.

How you choose to run Caddy is up to you. Many users are satisfied with nohup caddy &. Others use screen. Users who need Caddy to come back up after reboots either do so in the script that caused the reboot, add a command to an init script, or configure a service with their OS.

Contributing

Join our forum where you can chat with other Caddy users and developers!

Please see our contributing guidelines. If you want to write a plugin, check out the developer wiki.

We use GitHub issues and pull requests only for discussing bug reports and the development of specific changes. We welcome all other topics on the forum!

If you want to contribute to the documentation, please submit pull requests to caddyserver/website.

Thanks for making Caddy -- and the Web -- better!

Donors

  • DigitalOcean is hosting the Caddy project.
  • DNSimple provides DNS services for Caddy's sites.
  • DNS Spy keeps an eye on Caddy's DNS properties.

We thank them for their services. If you want to help keep Caddy free, please become a sponsor!

About the Project

Caddy was born out of the need for a "batteries-included" web server that runs anywhere and doesn't have to take its configuration with it. Caddy took inspiration from spark, nginx, lighttpd, Websocketd and Vagrant, which provides a pleasant mixture of features from each of them.

The name "Caddy": The name of the software is "Caddy", not "Caddy Server" or "CaddyServer". Please call it "Caddy" or, if you wish to clarify, "the Caddy web server". See brand guidelines.

Author on Twitter: @mholt6