You can have a direct impact on the project by helping with its code. To contribute code to Caddy, open a [pull request](https://github.com/mholt/caddy/pulls)(PR). If you're new to our community, that's okay: **we gladly welcome pull requests from anyone, regardless of your native language or coding experience.** You can get familiar with Caddy's code base by using [code search at Sourcegraph](https://sourcegraph.com/github.com/mholt/caddy/-/search).
You can have a direct impact on the project by helping with its code. To contribute code to Caddy, open a [pull request](https://github.com/caddyserver/caddy/pulls)(PR). If you're new to our community, that's okay: **we gladly welcome pull requests from anyone, regardless of your native language or coding experience.** You can get familiar with Caddy's code base by using [code search at Sourcegraph](https://sourcegraph.com/github.com/caddyserver/caddy/-/search).
We hold contributions to a high standard for quality :bowtie:, so don't be surprised if we ask for revisions—even if it seems small or insignificant. Please don't take it personally. :wink: If your change is on the right track, we can guide you to make it mergable.
We hold contributions to a high standard for quality :bowtie:, so don't be surprised if we ask for revisions—even if it seems small or insignificant. Please don't take it personally. :wink: If your change is on the right track, we can guide you to make it mergable.
...
@@ -52,9 +52,9 @@ We often grant [collaborator status](#collaborator-instructions) to contributors
...
@@ -52,9 +52,9 @@ We often grant [collaborator status](#collaborator-instructions) to contributors
Contributing to Go projects on GitHub is fun and easy. We recommend the following workflow:
Contributing to Go projects on GitHub is fun and easy. We recommend the following workflow:
1.[Fork this repo](https://github.com/mholt/caddy). This makes a copy of the code you can write to.
1.[Fork this repo](https://github.com/caddyserver/caddy). This makes a copy of the code you can write to.
2. If you don't already have this repo (mholt/caddy.git) repo on your computer, get it with `go get github.com/mholt/caddy/caddy`.
2. If you don't already have this repo (mholt/caddy.git) repo on your computer, get it with `go get github.com/caddyserver/caddy/caddy`.
3. Tell git that it can push the mholt/caddy.git repo to your fork by adding a remote: `git remote add myfork https://github.com/you/caddy.git`
3. Tell git that it can push the mholt/caddy.git repo to your fork by adding a remote: `git remote add myfork https://github.com/you/caddy.git`
...
@@ -62,7 +62,7 @@ Contributing to Go projects on GitHub is fun and easy. We recommend the followin
...
@@ -62,7 +62,7 @@ Contributing to Go projects on GitHub is fun and easy. We recommend the followin
5. Push your changes to your fork: `git push myfork`
5. Push your changes to your fork: `git push myfork`
6.[Create a pull request](https://github.com/mholt/caddy/pull/new/master) to merge your changes into mholt/caddy @ master. (Click "compare across forks" and change the head fork.)
6.[Create a pull request](https://github.com/caddyserver/caddy/pull/new/master) to merge your changes into mholt/caddy @ master. (Click "compare across forks" and change the head fork.)
This workflow is nice because you don't have to change import paths. You can get fancier by using different branches if you want.
This workflow is nice because you don't have to change import paths. You can get fancier by using different branches if you want.
...
@@ -71,7 +71,7 @@ This workflow is nice because you don't have to change import paths. You can get
...
@@ -71,7 +71,7 @@ This workflow is nice because you don't have to change import paths. You can get
Caddy can do more with plugins! Anyone can write a plugin. Plugins are Go libraries that get compiled into Caddy, extending its feature set. They can add directives to the Caddyfile, change how the Caddyfile is loaded, and even implement new server types (e.g. HTTP, DNS). When it's ready, you can submit your plugin to the Caddy website so others can download it.
Caddy can do more with plugins! Anyone can write a plugin. Plugins are Go libraries that get compiled into Caddy, extending its feature set. They can add directives to the Caddyfile, change how the Caddyfile is loaded, and even implement new server types (e.g. HTTP, DNS). When it's ready, you can submit your plugin to the Caddy website so others can download it.
[Learn how to write and submit a plugin](https://github.com/mholt/caddy/wiki) on the wiki. You should also share and discuss your plugin idea [on the forums](https://caddy.community) to have people test it out. We don't use the Caddy issue tracker for plugins.
[Learn how to write and submit a plugin](https://github.com/caddyserver/caddy/wiki) on the wiki. You should also share and discuss your plugin idea [on the forums](https://caddy.community) to have people test it out. We don't use the Caddy issue tracker for plugins.
### Getting help using Caddy
### Getting help using Caddy
...
@@ -83,7 +83,7 @@ Many people on the forums could benefit from your experience and expertise, too.
...
@@ -83,7 +83,7 @@ Many people on the forums could benefit from your experience and expertise, too.
### Reporting bugs
### Reporting bugs
Like every software, Caddy has its flaws. If you find one, [search the issues](https://github.com/mholt/caddy/issues) to see if it has already been reported. If not, [open a new issue](https://github.com/mholt/caddy/issues/new) and describe the bug, and somebody will look into it! (This repository is only for Caddy, not plugins.)
Like every software, Caddy has its flaws. If you find one, [search the issues](https://github.com/caddyserver/caddy/issues) to see if it has already been reported. If not, [open a new issue](https://github.com/caddyserver/caddy/issues/new) and describe the bug, and somebody will look into it! (This repository is only for Caddy, not plugins.)
**You can help stop bugs in their tracks!** Speed up the patch by identifying the bug in the code. This can sometimes be done by adding `fmt.Println()` statements (or similar) in relevant code paths to narrow down where the problem may be. It's a good way to [introduce yourself to the Go language](https://tour.golang.org), too.
**You can help stop bugs in their tracks!** Speed up the patch by identifying the bug in the code. This can sometimes be done by adding `fmt.Println()` statements (or similar) in relevant code paths to narrow down where the problem may be. It's a good way to [introduce yourself to the Go language](https://tour.golang.org), too.
...
@@ -96,9 +96,9 @@ Please be kind. :smile: Remember that Caddy comes at no cost to you, and you're
...
@@ -96,9 +96,9 @@ Please be kind. :smile: Remember that Caddy comes at no cost to you, and you're
### Suggesting features
### Suggesting features
First, [search to see if your feature has already been requested](https://github.com/mholt/caddy/issues). If it has, you can add a :+1: reaction to vote for it. If your feature idea is new, open an issue to request the feature. You don't have to follow the bug template for feature requests. Please describe your idea thoroughly so that we know how to implement it! Really vague requests may not be helpful or actionable and without clarification will have to be closed.
First, [search to see if your feature has already been requested](https://github.com/caddyserver/caddy/issues). If it has, you can add a :+1: reaction to vote for it. If your feature idea is new, open an issue to request the feature. You don't have to follow the bug template for feature requests. Please describe your idea thoroughly so that we know how to implement it! Really vague requests may not be helpful or actionable and without clarification will have to be closed.
While we really do value your requests and implement many of them, not all features are a good fit for Caddy. Most of those [make good plugins](https://github.com/mholt/caddy/wiki), though, which can be made by anyone! But if a feature is not in the best interest of the Caddy project or its users in general, we may politely decline to implement it into Caddy core.
While we really do value your requests and implement many of them, not all features are a good fit for Caddy. Most of those [make good plugins](https://github.com/caddyserver/caddy/wiki), though, which can be made by anyone! But if a feature is not in the best interest of the Caddy project or its users in general, we may politely decline to implement it into Caddy core.
<a href="https://twitter.com/caddyserver" title="@caddyserver on Twitter"><img src="https://img.shields.io/badge/twitter-@caddyserver-55acee.svg" alt="@caddyserver on Twitter"></a>
<a href="https://twitter.com/caddyserver" title="@caddyserver on Twitter"><img src="https://img.shields.io/badge/twitter-@caddyserver-55acee.svg" alt="@caddyserver on Twitter"></a>
<ahref="https://sourcegraph.com/github.com/mholt/caddy?badge"title="Caddy on Sourcegraph"><imgsrc="https://sourcegraph.com/github.com/mholt/caddy/-/badge.svg"alt="Caddy on Sourcegraph"></a>
<ahref="https://sourcegraph.com/github.com/caddyserver/caddy?badge"title="Caddy on Sourcegraph"><imgsrc="https://sourcegraph.com/github.com/caddyserver/caddy/-/badge.svg"alt="Caddy on Sourcegraph"></a>
Caddy is a **production-ready** open-source web server that is fast, easy to use, and makes you more productive.
Caddy is a **production-ready** open-source web server that is fast, easy to use, and makes you more productive.
Available for Windows, Mac, Linux, BSD, Solaris, and [Android](https://github.com/mholt/caddy/wiki/Running-Caddy-on-Android).
Available for Windows, Mac, Linux, BSD, Solaris, and [Android](https://github.com/caddyserver/caddy/wiki/Running-Caddy-on-Android).
<palign="center">
<palign="center">
<b>Thanks to our special sponsor:</b>
<b>Thanks to our special sponsor:</b>
...
@@ -68,7 +68,7 @@ Altogether, Caddy can do things other web servers simply cannot do. Its features
...
@@ -68,7 +68,7 @@ Altogether, Caddy can do things other web servers simply cannot do. Its features
Caddy binaries have no dependencies and are available for every platform. Get Caddy any of these ways:
Caddy binaries have no dependencies and are available for every platform. Get Caddy any of these ways:
-**[Download page](https://caddyserver.com/download)** (RECOMMENDED) allows you to customize your build in the browser
-**[Download page](https://caddyserver.com/download)** (RECOMMENDED) allows you to customize your build in the browser
-**[Latest release](https://github.com/mholt/caddy/releases/latest)** for pre-built, vanilla binaries
-**[Latest release](https://github.com/caddyserver/caddy/releases/latest)** for pre-built, vanilla binaries
-**[AWS Marketplace](https://aws.amazon.com/marketplace/pp/B07J1WNK75?qid=1539015041932&sr=0-1&ref_=srh_res_product_title&cl_spe=C)** makes it easy to deploy directly to your cloud environment. <ahref="https://aws.amazon.com/marketplace/pp/B07J1WNK75?qid=1539015041932&sr=0-1&ref_=srh_res_product_title&cl_spe=C"target="_blank">
-**[AWS Marketplace](https://aws.amazon.com/marketplace/pp/B07J1WNK75?qid=1539015041932&sr=0-1&ref_=srh_res_product_title&cl_spe=C)** makes it easy to deploy directly to your cloud environment. <ahref="https://aws.amazon.com/marketplace/pp/B07J1WNK75?qid=1539015041932&sr=0-1&ref_=srh_res_product_title&cl_spe=C"target="_blank">
<imgsrc="https://s3.amazonaws.com/cloudformation-examples/cloudformation-launch-stack.png"alt="Get Caddy on the AWS Marketplace"height="25"/></a>
<imgsrc="https://s3.amazonaws.com/cloudformation-examples/cloudformation-launch-stack.png"alt="Get Caddy on the AWS Marketplace"height="25"/></a>
...
@@ -81,7 +81,7 @@ To build from source you need **[Git](https://git-scm.com/downloads)** and **[Go
...
@@ -81,7 +81,7 @@ To build from source you need **[Git](https://git-scm.com/downloads)** and **[Go
<!-- TODO: This env variable will not be required starting with Go 1.13 -->
<!-- TODO: This env variable will not be required starting with Go 1.13 -->
1. Set the transitional environment variable for Go modules: `export GO111MODULE=on`
1. Set the transitional environment variable for Go modules: `export GO111MODULE=on`
2. Run `go get github.com/mholt/caddy/caddy`
2. Run `go get github.com/caddyserver/caddy/caddy`
Caddy will be installed to your `$GOPATH/bin` folder.
Caddy will be installed to your `$GOPATH/bin` folder.
...
@@ -98,7 +98,7 @@ There is no need to modify the Caddy code to build it with plugins. We will crea
...
@@ -98,7 +98,7 @@ There is no need to modify the Caddy code to build it with plugins. We will crea
packagemain
packagemain
import(
import(
"github.com/mholt/caddy/caddy/caddymain"
"github.com/caddyserver/caddy/caddy/caddymain"
// plug in plugins here, for example:
// plug in plugins here, for example:
// _ "import/path/here"
// _ "import/path/here"
...
@@ -111,14 +111,14 @@ func main() {
...
@@ -111,14 +111,14 @@ func main() {
}
}
```
```
3.`go mod init caddy`
3.`go mod init caddy`
4. Run `go get github.com/mholt/caddy`
4. Run `go get github.com/caddyserver/caddy`
5.`go install` will then create your binary at `$GOPATH/bin`, or `go build` will put it in the current directory.
5.`go install` will then create your binary at `$GOPATH/bin`, or `go build` will put it in the current directory.
**To install Caddy's source code for development:**
**To install Caddy's source code for development:**
<!-- TODO: This env variable will not be required starting with Go 1.13 -->
<!-- TODO: This env variable will not be required starting with Go 1.13 -->
1. Set the transitional environment variable for Go modules: `export GO111MODULE=on`
1. Set the transitional environment variable for Go modules: `export GO111MODULE=on`
2. Run `git clone https://github.com/mholt/caddy.git` in any folder (doesn't have to be in GOPATH).
2. Run `git clone https://github.com/caddyserver/caddy.git` in any folder (doesn't have to be in GOPATH).
You can make changes to the source code from that clone and checkout any commit or tag you wish to develop on.
You can make changes to the source code from that clone and checkout any commit or tag you wish to develop on.
...
@@ -182,7 +182,7 @@ Caddy is production-ready if you find it to be a good fit for your site and work
...
@@ -182,7 +182,7 @@ Caddy is production-ready if you find it to be a good fit for your site and work
**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`
**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](https://github.com/mholt/caddy/tree/master/dist/init) contributed by the community that you may find helpful for running Caddy in production.
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](https://github.com/caddyserver/caddy/tree/master/dist/init) 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.
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.
...
@@ -191,17 +191,17 @@ If you have questions or concerns about Caddy' underlying crypto implementations
...
@@ -191,17 +191,17 @@ If you have questions or concerns about Caddy' underlying crypto implementations
## Contributing
## Contributing
**[Join our forum](https://caddy.community) where you can chat with other Caddy users and developers!** To get familiar with the code base, try [Caddy code search on Sourcegraph](https://sourcegraph.com/github.com/mholt/caddy/)!
**[Join our forum](https://caddy.community) where you can chat with other Caddy users and developers!** To get familiar with the code base, try [Caddy code search on Sourcegraph](https://sourcegraph.com/github.com/caddyserver/caddy/)!
Please see our [contributing guidelines](https://github.com/mholt/caddy/blob/master/.github/CONTRIBUTING.md) for instructions. If you want to write a plugin, check out the [developer wiki](https://github.com/mholt/caddy/wiki).
Please see our [contributing guidelines](https://github.com/caddyserver/caddy/blob/master/.github/CONTRIBUTING.md) for instructions. If you want to write a plugin, check out the [developer wiki](https://github.com/caddyserver/caddy/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](https://caddy.community)!
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://caddy.community)!
If you want to contribute to the documentation, please [submit an issue](https://github.com/mholt/caddy/issues/new) describing the change that should be made.
If you want to contribute to the documentation, please [submit an issue](https://github.com/caddyserver/caddy/issues/new) describing the change that should be made.
### Good First Issue
### Good First Issue
If you are looking for somewhere to start and would like to help out by working on an existing issue, take a look at our [`Good First Issue`](https://github.com/mholt/caddy/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) tag
If you are looking for somewhere to start and would like to help out by working on an existing issue, take a look at our [`Good First Issue`](https://github.com/caddyserver/caddy/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) tag