async def run_all() -> None: from kolombo.models import Domain client = from_env() build_kolombo_image(client, "receiver") build_kolombo_image(client, "auth") build_kolombo_image(client, "nginx") build_kolombo_image(client, "sender") step("Deploying all Kolombo services") up_all_kolombo_services() domains = [domain.actual for domain in await Domain.all_active()] # Remove duplicates preserving order domains = list(dict.fromkeys(domains)) if len(domains) < 1: error("No active domains to run senders for") return senders_compose_config = generate_senders_compose_config(domains) project_name = "kolombo_senders" file_path = "/etc/kolombo/senders-compose.yml" with open(file_path, mode="w") as compose_file: compose_file.write(senders_compose_config) step(f"Deploying senders for domains: {', '.join(domains)}") compose_command = [ "docker-compose", "-p", project_name, "-f", file_path, "up" ] run([*compose_command, "--force-recreate", "--remove-orphans", "-d"])
def generate_keys( domain: str = Argument( ..., help="Domain to generate DKIM keys for"), # noqa: B008 ) -> None: client = from_env() build_kolombo_image(client, "dkim-gen") step(f"Generating DKIM keys for domain: {domain}") client.containers.run( "kolombo-dkim-gen", domain, stderr=True, auto_remove=True, volumes=["/etc/kolombo/dkim_keys:/etc/opendkim/keys"], ) dkim_txt = read_dkim_txt_record(domain) info( f"[b]TXT[/] record for [b u]mail._domainkey.{domain}[/] is: {dkim_txt}" )
def run_nginx() -> None: client = from_env() build_kolombo_image(client, "nginx") step("Bringing up nginx service") up_kolombo_service("nginx")
def run_auth() -> None: client = from_env() build_kolombo_image(client, "auth") step("Bringing up auth service") up_kolombo_service("auth")
def run_receiver() -> None: client = from_env() build_kolombo_image(client, "receiver") step("Bringing up receiver service") up_kolombo_service("receiver")