2016-06-21 12:28:38 -05:00
|
|
|
<a href="https://caddyserver.com"><img src="https://caddyserver.com/resources/images/caddy-lower.png" alt="Caddy" width="350"></a>
|
2015-01-13 15:24:43 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
[![community](https://img.shields.io/badge/community-forum-ff69b4.svg?style=flat-square)](https://forum.caddyserver.com) [![twitter](https://img.shields.io/badge/twitter-@caddyserver-55acee.svg?style=flat-square)](https://twitter.com/caddyserver) [![Documentation](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](https://godoc.org/github.com/mholt/caddy) [![Linux Build Status](https://img.shields.io/travis/mholt/caddy.svg?style=flat-square&label=linux+build)](https://travis-ci.org/mholt/caddy) [![Windows Build Status](https://img.shields.io/appveyor/ci/mholt/caddy.svg?style=flat-square&label=windows+build)](https://ci.appveyor.com/project/mholt/caddy)
|
2015-01-13 15:24:43 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
Caddy is a general-purpose web server for Windows, Mac, Linux, BSD, and
|
|
|
|
[Android](https://github.com/mholt/caddy/wiki/Running-Caddy-on-Android). It is
|
2016-06-21 20:21:45 -05:00
|
|
|
a capable but easier alternative to other popular web servers.
|
2015-01-13 15:24:43 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
[Releases](https://github.com/mholt/caddy/releases) ·
|
|
|
|
[User Guide](https://caddyserver.com/docs) ·
|
|
|
|
[Community](https://forum.caddyserver.com)
|
2015-01-21 21:16:31 -05:00
|
|
|
|
2015-01-13 15:24:43 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
## Menu
|
2015-01-21 21:16:31 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
- [Features](#features)
|
2015-04-27 10:53:08 -05:00
|
|
|
- [Quick Start](#quick-start)
|
2015-11-03 14:39:25 -05:00
|
|
|
- [Running from Source](#running-from-source)
|
2016-06-21 12:28:38 -05:00
|
|
|
- [Running in Production](#running-in-production)
|
2015-04-27 10:53:08 -05:00
|
|
|
- [Contributing](#contributing)
|
|
|
|
- [About the Project](#about-the-project)
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
## Features
|
2015-04-27 10:53:08 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
- **Easy configuration** with Caddyfile
|
|
|
|
- **Automatic HTTPS** via [Let's Encrypt](https://letsencrypt.org); Caddy
|
|
|
|
obtains and manages all cryptographic assets for you
|
|
|
|
- **HTTP/2** enabled by default (powered by Go standard library)
|
|
|
|
- **Virtual hosting** for hundreds of sites per server instance, including TLS
|
|
|
|
SNI
|
|
|
|
- Experimental **QUIC support** for those that like speed
|
|
|
|
- TLS session ticket **key rotation** for more secure connections
|
|
|
|
- **Brilliant extensibility** so Caddy can be customized for your needs
|
|
|
|
- **Runs anywhere** with **no external dependencies** (not even libc)
|
2015-04-27 10:53:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
## Quick Start
|
2015-04-27 10:53:08 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
Caddy binaries have no dependencies and are available for every platform.
|
|
|
|
Install Caddy any one of these ways:
|
2015-05-01 09:55:34 -05:00
|
|
|
|
2016-06-21 20:21:45 -05:00
|
|
|
- **[Download page](https://caddyserver.com/download)** allows you to
|
|
|
|
customize your build in the browser
|
|
|
|
- **[Latest release](https://github.com/mholt/caddy/releases/latest)** for
|
|
|
|
pre-built binaries
|
|
|
|
- **curl [getcaddy.com](https://getcaddy.com)** for auto install:
|
2016-06-21 12:28:38 -05:00
|
|
|
`curl https://getcaddy.com | bash`
|
2015-01-13 15:24:43 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
Once `caddy` is in your PATH, you can `cd` to your website's folder and run
|
|
|
|
`caddy` to serve it. By default, Caddy serves the current directory at
|
|
|
|
[localhost:2015](http://localhost:2015).
|
2015-01-13 15:24:43 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
To customize how your site is served, create a file named Caddyfile by your
|
|
|
|
site and paste this into it:
|
2015-01-13 15:24:43 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
```plain
|
2015-04-27 10:53:08 -05:00
|
|
|
localhost
|
|
|
|
|
2015-01-13 15:24:43 -05:00
|
|
|
gzip
|
2015-04-27 10:53:08 -05:00
|
|
|
browse
|
|
|
|
websocket /echo cat
|
2016-06-21 12:28:38 -05:00
|
|
|
ext .html
|
|
|
|
log /var/log/access.log
|
|
|
|
proxy /api 127.0.0.1:7005
|
2015-01-13 15:24:43 -05:00
|
|
|
header /api Access-Control-Allow-Origin *
|
|
|
|
```
|
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
When you run `caddy` in that directory, it will automatically find and use
|
|
|
|
that Caddyfile to configure itself.
|
2015-04-27 10:53:08 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
This simple file enables compression, allows directory browsing (for folders
|
|
|
|
without an index file), hosts a WebSocket echo server at /echo, serves clean
|
|
|
|
URLs, logs requests to 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.
|
2015-04-27 10:53:08 -05:00
|
|
|
|
|
|
|
Wow! Caddy can do a lot with just a few lines.
|
2015-01-13 15:24:43 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
To host multiple sites and do more with the Caddyfile, please see the
|
|
|
|
[Caddyfile documentation](https://caddyserver.com/docs/caddyfile).
|
2015-11-03 14:39:25 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
Note that production sites (not localhost) are served over
|
|
|
|
[HTTPS by default](https://caddyserver.com/docs/automatic-https).
|
2015-04-27 10:53:08 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
Caddy has a command line interface. Run `caddy -h` to view basic help or see
|
|
|
|
the [CLI documentation](https://caddyserver.com/docs/cli) for details.
|
2015-04-27 10:53:08 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
**Running as root:** We advise against this. You can still listen on ports
|
|
|
|
< 1024 using setcap like so: `sudo setcap cap_net_bind_service=+ep ./caddy`
|
2015-04-27 10:53:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
2015-11-03 14:39:25 -05:00
|
|
|
## Running from Source
|
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
Note: You will need **[Go 1.6](https://golang.org/dl/)** or newer.
|
2015-11-03 14:39:25 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
1. `go get github.com/mholt/caddy`
|
2015-11-03 14:39:25 -05:00
|
|
|
2. `cd` into your website's directory
|
|
|
|
3. Run `caddy` (assumes `$GOPATH/bin` is in your `$PATH`)
|
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
Caddy's `main()` is in the caddy subfolder. To recompile Caddy, use
|
|
|
|
`build.bash` found in that folder.
|
2015-11-03 14:39:25 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
## Running in Production
|
2015-11-03 14:39:25 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
The Caddy project does not officially maintain any system-specific
|
|
|
|
integrations, but your download file includes
|
|
|
|
[unofficial resources](https://github.com/mholt/caddy/tree/master/dist/init)
|
|
|
|
contributed by the community that you may find helpful for running Caddy in
|
|
|
|
production.
|
2015-11-03 14:39:25 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
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.
|
2015-11-03 14:39:25 -05:00
|
|
|
|
2015-04-27 10:53:08 -05:00
|
|
|
|
|
|
|
|
|
|
|
## Contributing
|
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
**[Join our community](https://forum.caddyserver.com) where you can chat with
|
|
|
|
other Caddy users and developers!**
|
2015-05-06 17:39:58 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
Please see our [contributing guidelines](https://github.com/mholt/caddy/blob/master/CONTRIBUTING.md)
|
|
|
|
and check out the [developer wiki](https://github.com/mholt/caddy/wiki).
|
2016-05-27 10:15:06 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
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](https://forum.caddyserver.com)!
|
2015-04-27 10:53:08 -05:00
|
|
|
|
|
|
|
Thanks for making Caddy -- and the Web -- better!
|
|
|
|
|
2015-11-24 14:16:05 -05:00
|
|
|
Special thanks to
|
2016-05-15 07:25:59 -05:00
|
|
|
[![DigitalOcean](https://i.imgur.com/sfGr0eY.png)](https://www.digitalocean.com)
|
2015-11-24 13:17:34 -05:00
|
|
|
for hosting the Caddy project.
|
2015-08-04 19:32:27 -05:00
|
|
|
|
2015-04-27 10:53:08 -05:00
|
|
|
|
2015-01-13 17:45:08 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
## About the Project
|
2015-03-03 13:14:36 -05:00
|
|
|
|
2015-11-24 14:16:05 -05:00
|
|
|
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](https://github.com/rif/spark),
|
|
|
|
[nginx](https://github.com/nginx/nginx), lighttpd,
|
|
|
|
[Websocketd](https://github.com/joewalnes/websocketd)
|
|
|
|
and [Vagrant](https://www.vagrantup.com/),
|
2015-11-24 14:04:15 -05:00
|
|
|
which provides a pleasant mixture of features from each of them.
|
2015-03-03 13:14:36 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
**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](https://caddyserver.com/brand).
|
2015-03-03 13:14:36 -05:00
|
|
|
|
2016-06-21 12:28:38 -05:00
|
|
|
*Author on Twitter: [@mholt6](https://twitter.com/mholt6)*
|