abiosoft / caddyplug

Experimental Caddy plugin manager using Go plugins

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

caddyplug

caddyplug is an experimental Caddy plugin manager using Go plugins.

Demonstration Video

Requirements

  • Go 1.8
  • Linux/macOS
  • 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:

Option 1

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

Option 2

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

License:Apache License 2.0


Languages

Language:Go 100.0%