You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Valentin Lab 5ddc2d9c6b new: pkg: add ``*/doc/`` to ``.gitignore`` !minor 5 months ago
apache new: [apache] don't force ``X-Forwarded-Proto`` if already existent 11 months ago
bind new: [bind] add charm 2 years ago
bitwarden new: [bitwarden] upgrade to ``vaultwarden`` ``1.27.0`` 1 year ago
collabora new: [collabora] add charm 7 months ago
cron fix: dev: removed ``--force-yes`` everywhere as it is deprecated 3 years ago
cyclos fix: [cyclos] support missing relation ``web-proxy`` 2 years ago
cyclos-ui new: [cyclos-ui] new charm 4 years ago
docker-host new: [docker-host] set system timezone 5 years ago
docker-registry new: dev: [apache] store a ``url`` argument instead of a ``protocol`` argument. 5 years ago
docker-registry-auth new: [docker-registry-auth] allow usage of acl rules for public access. 4 years ago
docuseal new: [docuseal] new charm 6 months ago
drone new: [drone] add ``backup`` relation 3 years ago
drone-agent new: [drone-agent] implemented labels 5 years ago
etherpad new: [etherpad] add ``list`` and ``drop`` actions to list pads and drop a given pad 11 months ago
gitea new: [gitea] allow to provide all ``app.ini`` settings through ``options`` 12 months ago
gitlab new: [gitlab] new charm 5 years ago
gogocarto fix: [gogocarto] fix service from failing if mongo container is not present 8 months ago
gogocartojs new: [gogocartojs] added charm 4 years ago
hedgedoc chg: [hedgedoc] upgrade to ``1.9.2`` 2 years ago
hugo new: [hugo] add ``hugo`` charm 1 year ago
itty-bitty new: [itty-bitty] new charm 2 years ago
keycloak chg: [keycloak] upgrade to version ``17.0.1`` 2 years ago
letsencrypt fix: [letsencrypt] allow all domains to be renewed in one go 2 years ago
lo-xcgd new: [py3o-{fusion,server},lo-xcgd] add charm 4 years ago
logrotate chg: [logrotate] be more verbose 3 years ago
mailhog new: [mailhog] new charm 2 years ago
mariadb new: [mariadb] support debian 11 and debian 12 installation 9 months ago
mattermost fix: [mongo,odoo-tecnativa,mattermost,peertube,synapse,rocketchat,redis] avoid using ``find``'s ``-exec`` option as it fails 4 years ago
minecraft new: [minecraft] add type of install and ``paper`` type 11 months ago
mongo fix: [mongo] make ``upgrade`` script work to detect error on non "mongo" named service 6 months ago
monujo fix: [monujo] support version ``1.0.0-rc.8`` and up. 1 year ago
mysql fix: dev: removed ``--force-yes`` everywhere as it is deprecated 3 years ago
nextcloud fix: [nextcloud] repair ``--no-hint`` on ``upgrade`` action 8 months ago
odoo-tecnativa fix: [postgres] set ``drop`` action to not trigger hooks 5 months ago
onlyoffice new: [onlyoffice] add a forced enabling of the ``onlyoffice`` app in ``nextcloud`` 2 years ago
peertube chg: [peertube] upgrade to ``v4.1.0`` 2 years ago
piwigo new: [piwigo] added ``backup`` relation. 4 years ago
postgres fix: [postgres] prevent failure on slower hosts 5 months ago
postgres-alpine new: ``charm`` and ``service`` are now clear distinct concept 6 years ago
precise new: [host] update ``btrfs-tools`` compilation dependencies 5 months ago
py3o-fusion new: [py3o-{fusion,server},lo-xcgd] add charm 4 years ago
py3o-server new: [py3o-{fusion,server},lo-xcgd] add charm 4 years ago
radicale new: [radicale] add new charm. 2 years ago
rallly new: [rallly] add charm 5 months ago
rancher chg: [mattermost,odoo-tecnativa,rancher-agent,rancher,traefik] restart policy is now automatically set for non run-once services. 5 years ago
rancher-agent chg: [mattermost,odoo-tecnativa,rancher-agent,rancher,traefik] restart policy is now automatically set for non run-once services. 5 years ago
redis new: [apache,peertube,redis] added new backup relation 4 years ago
rocketchat chg: [rocketchat] update to version ``3.18.1`` 3 years ago
rsync-backup new: [rsync-backup] add ``compose.yml`` to backup 3 years ago
rsync-backup-target fix: [rsync-backup-target] make target accept ``rsync`` client ``3.2.0`` 5 months ago
searx new: [searx] add charm 3 years ago
sftp new: [sftp] add doc to ``sftp`` charm 2 years ago
smtp-stub new: [smtp-stub] new charm 5 months ago
softether new: [softether] new charm. 8 years ago
solid new: [solid] add charm 1 year ago
synapse new: doc: [synapse] add a ``README.rst`` that was written at the time of the charm 2 years ago
traefik chg: [mattermost,odoo-tecnativa,rancher-agent,rancher,traefik] restart policy is now automatically set for non run-once services. 5 years ago
vsftp new: [vsftp] new charm 5 years ago
whoami new: [traefik,whoami] new charms 6 years ago
.gitignore new: pkg: add ``*/doc/`` to ``.gitignore`` !minor 5 months ago new: doc: add doc on root level ``type`` key of ``metadata.yml`` 5 months ago


This package provides charms, which are special system recipes, that are meant to be executable and mangled together to allow managing a wide set of services.

Inspired by juju charms, these are mostly bash scripts organized by service and meant to automate all administration tasks, from installation, to connection with other services, or any other task a service would need.

Several tools are able to read the current state of this repository to effectively deploy full production grade services on different type of platform.

The only real fully functional implementation is 0k-compose. It will use these charms to drive, prepare, and build in docker, complete sets of services.

Another old solution called lxc-deploy was used actively before to deploy services on LXC tool set until 2016 using these charms.

Bare hosts can also replay some recipes to install services directly on them via the 0k-charm project using the charm apply command. Note that actually, as most recipes are bash executable, it is still a viable option to copy-paste parts of source-code of these scripts. These last two options are still used very often to bootstrap installs of docker-hosts for instance.


Charms in these repository are in a wide set of maturity, from simple note taking of shell commands, not even executable, to full charm allowing to deploy services and manage the full life cycle of the service.

The repository in a whole is thus NOT considered as mature at all, and will require some thorough cleaning and decisions to furthermore structure to reach a state where it'll make sense to go full public.


TODO Through compose for full deployment of sets of services

Requires 0k-compose package that contains the compose command line tool.


TODO Through lxc-deploy for full install and deployment of services

Requires lxc-scripts package that holds several tools for LXC management, amongst them is lxc-deploy.


TODO Through docker-build-charm for docker image creation

Requires 0k-docker package that holds several tools for docker management, amongst them is docker-build-charm.

docker-build-charm will use the install recipes in a charm to basically mimic the Dockerfile purpose and create a docker image for a specific service.


TODO Through 0k-charm for bare hosts installs

Requires 0k-charm package to get the charm command line util.



Most tools should check the CHARM_STORE bash environment variable that should be the path to reach the root of this repository. If not defined, most tools will look in /srv/charm-store by default.


charm type

Not all charm are intended to bring up services as having a container always running and listening.

In metadata.yml, the root level type can be one of:

  • service (default)

    If not specified, this is the default. A charm brings up a service. It is meant to be always running. For instance, apache, mysql, postgres are services.

    They usually open ports and are listening to provide their service, or carry background listening of other ressources (like checking time and sending scheduling command for the cron services), and or use files to trigger or report on their activity.

    It will have an entry in the final docker-compose.yml, and thus, a container will run and stay in memory and have a restart: unless-stopped policy. They use CPU and memory ressources.

  • run-once

    The entry is meant to describe a command that run once, it will be called by a service and will exit after execution.

    For instance, logrotate, rsync-backup, or letsencrypt are of type run-once.

    They are meant to be run by service for specific events. They usually will use relations to ensure they are called at specific moment by service…

    A command does not have an automatic restart policy as services have.

    They use CPU and memory ressources only when run and gives them back once finished.

  • stub

    The entry describes an entity that will not be run at all. It is used to hold information in the compose.yml and often to stand for a real service managed outside of compose.yml (on an other host or on a different managing system, like a local installation or LXC, virtualbox, …).

    For instance, stmp-stub can be used to stand for an external smtp.

    It is through their relation that they shine as they can provide similar interface than actual services would have provided. smtp-stub is a smtp-server provider and other charm can connect to it.

    They usually implement relation hooks, and are providers.

    No entry will be created in the final docker-compose.yml.

    They use no CPU or memory ressources at all.