caddyplug is an experimental Caddy plugin manager using Go plugins.
- Go 1.8
- Linux
- Caddy with hook.pluginloader plugin. Installable with
caddyplug install-caddy
.
go get github.com/abiosoft/caddyplug/caddyplug
Usage:
caddyplug <command> [plugins...]
Commands:
install install plugins
uninstall uninstall plugins
list list plugins
install-caddy install caddy
package get plugin package
Example
$ caddyplug install git linode
✓ git
✓ linode
Current:
- Edit source and add import line for plugin
- Rebuild Caddy
- Or select plugins and download on caddyserver.com/download
- Repeat
Desired:
- Install plugins
Current:
- Search for Docker image with desired plugins
- Give up and clone abiosoft/caddy (or similar) image
- Modify plugins arg in Dockerfile
- Worry about keeping track of upgrades to parent git/docker repo.
Desired:
Add plugins as required
FROM abiosoft/caddy:plugin # Hopefully this changes to 'FROM caddy'
RUN caddyplug install git hugo digitalocean
- Only works on Linux.
- Due to limitations of Go plugins, Caddy and plugins must be built with same Go version. Installing Caddy with caddyplug is recommended to ensure this.
- Not compatible with caddyserver.com/download yet. Requires
CGO_ENABLED=1
. - Large Docker images. Multi-stage builds may help.
- Fetches
master
of plugin repositories. go build --buildmode=plugin
is slow. Stop building on-demand, maybe.- This is experimental and reliant on the stability of Go plugins.
- This is not an official Caddy product.