Example #1
0
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"])
Example #2
0
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}"
    )
Example #3
0
def run_nginx() -> None:
    client = from_env()
    build_kolombo_image(client, "nginx")

    step("Bringing up nginx service")
    up_kolombo_service("nginx")
Example #4
0
def run_auth() -> None:
    client = from_env()
    build_kolombo_image(client, "auth")

    step("Bringing up auth service")
    up_kolombo_service("auth")
Example #5
0
def run_receiver() -> None:
    client = from_env()
    build_kolombo_image(client, "receiver")

    step("Bringing up receiver service")
    up_kolombo_service("receiver")