Configure custom repository

This guide shows how to configure the Falco charm with a custom Git repository containing your own Falco rules and configurations.

Prerequisites

  • A deployed Falco operator from getting started tutorial

  • A Git repository (e.g., GitHub, GitLab) to host your custom Falco configuration files

Repository structure

Your custom configuration repository must follow this structure:

my-falco-config/
├── rules.d/
│   ├── custom-rules.yaml
└── config.override.d/
    └── custom-config.yaml

Sample rule file

Create a file in rules.d/ directory, for example custom-rules.yaml. You can use the official rules from Falco.

Sample configuration file

Create a file in config.override.d/ directory, for example config.override.d/custom-config.yaml:

rules_files:
  - /etc/falco/rules.d

engine:
  modern_ebpf:
    cpus_for_each_buffer: 2
    buf_size_preset: 4
    drop_failed_exit: false

capture:
  enabled: false
  path_prefix: /tmp/falco
  mode: rules
  default_duration: 5000

plugins_hostinfo: true

Generate SSH keys

Generate an SSH key pair for Falco to access the repository:

ssh-keygen -t rsa -b 4096 -f ~/falco-repo-key -N ""

This creates two files:

  • ~/falco-repo-key - Private key (keep secure)

  • ~/falco-repo-key.pub - Public key (add to your Git repository)

Add the public key to your Git repository’s deploy keys or your user account’s SSH keys.

Configure the Falco charm

Set the custom configuration repository using the charm configuration:

juju config falco custom-config-repository=git+ssh://git@github.com/your-org/your-falco-config.git
juju add-secret custom-config-repo-ssh-key value="$(cat ~/falco-repo-key)"

juju grant-secret custom-config-repo-ssh-key falco  # should return a secret id
juju config falco custom-config-repository-ssh-key="secret:d5dn431kohtcgpn8ou4g"  # use the secret id returned above

Verify the configuration

Check that Falco has loaded your custom configuration:

juju ssh falco/0 -- ls -la /var/lib/juju/agents/unit-falco-0/charm/falco/etc/falco/rules.d
juju ssh falco/0 -- ls -la /var/lib/juju/agents/unit-falco-0/charm/falco/etc/falco/config.override.d

You should see your custom rules files listed in the output.

Update custom configuration

To update your custom configuration, push changes to your Git repository and update the configuration. It’s a good practice to use a commit hash to specify the exact version of the repository to use.

Or trigger a configuration update by setting the repository reference:

juju config falco custom-config-repository=git+ssh://git@github.com/your-org/your-falco-config.git@35e03c8d07636155f78200268928a04a58692c69

Falco will automatically sync the changes from the repository.

Troubleshooting

For troubleshooting common issues with custom repositories, see how to troubleshoot.