yacu

module
v0.0.0-...-5861326 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 8, 2023 License: MIT

README

yacu — Yet Another Container Updater

A simple program written in Go and available in the form of a docker container capable of updating docker containers based on the age of the latest image.

Put simply. A chosen container will only be updated if it's remote image is older than a set amount of days in order to ensure somewhat stable releases while giving the ability of automatic updates.

Configuration

A config file is optional but highly recommended.

YACU searches for a yacu.yaml config file in current working directory or uses a path passed via --config command line parameter.

In case of the docker container, yacu.yaml should be mounted in /data path of the container

File examples can be viewed in examples/config folder in this repository.


Database

path — path to sqlite database where creation and last check dates for each container are stored (default data.db)

database:
  path: data.db
Logging

console — console logging configuration

  • level — logging level [debug, info, warn, error, fatal] (default info)

file — file logging configuration

  • directory — directory containing up to four 10 MB log files, leave empty if no file logging is desired (default logs)
  • level — logging level [debug, info, warn, error, fatal] (default debug)
logging:
  console:
    level: info
  file:
    directory:  logs
    level:      debug
Scanner

interval — an interval using cron format (default @weekly)
image_age — how old an image should be in days before pulling and updating container (default 7)
scan_all — scan all containers on device unless explicitly disabled using yacu.enable label (default false)
scan_stopped — scan an eligible container even if it is not running (default false)

scanner:
  interval:     "@weekly"
  image_age:    7
  scan_all:     false
  scan_stopped: false
Updater

stop_timeout — amount of time in seconds to wait on a container to stop before forcefully killing (default 30)
remove_volumes — remove volumes when recreating a container (default false)
remove_images — remove previous image if it is unused after an update (default false)

updater:
  stop_timeout:     30
  remove_volumes:   false
  remove_images:    false
Registry authentication

An array of registry authentication data, with each containing the following:

domain — registry domain that needs authentication
username — username for auth
password — password for the above username on registry
insecure — authenticate insecurely in case of local registries not using HTTPS (default false)

registries:
  - domain:     docker.io
    username:   123
    password:   123
  - domain:     custom_registry.tld
    username:   321
    password:   321
    insecure:   true
Webhooks

A way to send notifications on each successful or failed update
NOTE: only discord webhooks are currently implemented

url — webhook url
kind — type of data to send (default for all true)

  • errors — errors that occur during updates
  • image_success — successful image pull
  • container_success — successful container recreation with new image

Extra data depending on webhook type

Discord

author — author info, not required

  • name — author name
  • url — hyperlink when clicking the author name, e.g. server webui url
  • icon_url — custom author image url
webhooks:
  discord:
    url: webhook_url
    author:
      name:     server_name
      url:      webui_url
      icon_url: author_icon_url
    kind:
      critical_errors:      true
      container_fail:       true
      container_success:    true

Labels

yacu.enable — allow/disallow yacu from scanning the container, bypasses scanner.scan_all [true, false]
yacu.image_age — minimum time in days that an image should be released for before pulling and recreating the container, used to bypass scanner.image_age
yacu.stop_timeout — amount of time in seconds to wait for a container to stop before forcefully killing it, used to bypass updater.stop_timeout

Directories

Path Synopsis
set

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL