Skip to content

QiMa/caddyplug

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

caddyplug

caddyplug is an experimental Caddy plugin manager using Go plugins.

Demonstration Video

Requirements

  • Go 1.8
  • Linux
  • Caddy with hook.pluginloader plugin. Installable with caddyplug install-caddy.

Install

go get github.com/abiosoft/caddyplug/caddyplug

Usage

  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

Goal

Building

Current:

  • Edit source and add import line for plugin
  • Rebuild Caddy
  • Or select plugins and download on caddyserver.com/download
  • Repeat

Desired:

  • Install plugins

Docker

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

Caveats

  • 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.

Note

  • This is not an official Caddy product.

About

Experimental Caddy plugin manager using Go plugins

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%