class

Meridian::Proxy::Manager

Inherits Reference < Object

Constants

ADMIN_SOCKET = File.join(CONFIG_DIR, "admin.sock")
CADDYFILE = File.join(CONFIG_DIR, "Caddyfile")
CONFIG_DIR = File.join(".config", "containers", PROXY_NAME)
IMAGE_CHECK = "version=$(caddy version) || exit; #{VERSION_PREDICATE}"
PROXY_CONTAINER = "meridian-caddy.container"
PROXY_NAME = "meridian-caddy"
PROXY_NETWORK_SERVICE = "#{Runtime::Paths::SHARED_PROXY_NETWORK}-network.service"
PROXY_SERVICE = "meridian-caddy.service"
PROXY_SOCKET = "meridian-caddy.socket"
RELOAD_LOCK = File.join(CONFIG_DIR, "reload.lock")
RESOLVE_SUCCESSES = 3
RESOLVE_TIMEOUT = 120
ROUTES_DIR = File.join(CONFIG_DIR, "routes")
SOCKET_DIRECTORY = ".config/systemd/user"
SOCKET_PATH = File.join(SOCKET_DIRECTORY, PROXY_SOCKET)
VALIDATE = "podman run --rm -v \"$HOME/#{CONFIG_DIR}:/config:ro\" \"$1\" caddy validate --config /config/Caddyfile --adapter caddyfile"
VERSION_CHECK = "version=$(podman exec #{PROXY_NAME} caddy version) || exit; #{VERSION_PREDICATE}"
VERSION_PREDICATE = "printf '%s\\n' \"$version\" | awk -F. 'BEGIN { ok=0 } { gsub(/^v/, \"\", $1); ok=($1 > 2 || ($1 == 2 && ($2 > 11 || ($2 == 11 && $3 >= 6)))) } END { exit !ok }'"

Caddy 2.11.6 fixes ACME challenges on activated sockets.

Constructors

new(config : Config::DeployConfig, ssh_executor : SSH::Executor = SSH::Executor.new, quadlet_generator : Quadlet::Generator | Nil = nil, output : IO = STDOUT, audit_logger : Audit::Logger | Nil = nil, drain_sleeper : Proc(Time::Span, Nil) = ->(duration : Time::Span) do sleep(duration) end)
Source

Instance methods

drain(host : String, target : String) : Nil
Source
maintenance(host : String, proxy : Config::ServerProxyConfig, old_target : String) : Nil
Source
register_assets(host : String) : Nil

Assets have no upstream to confirm after an SSH drop during reload. Rerunning the deploy resolves SwitchUncertain.

Source
register_redirects(host : String, proxy : Config::ServerProxyConfig) : Nil
Source
remove(force : Bool = false) : Nil
Source
setup
Source
switch(host : String, proxy : Config::ServerProxyConfig, target : String) : Nil
Source