From 1ec620be4bc90c7498b49c0cb8c00f07f909bdc5 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Mon, 16 May 2022 23:56:54 +0200 Subject: [PATCH] WIP: Traefik --- package.json | 2 +- src/app.html | 1 - src/lib/haproxy/index.ts | 2 +- src/routes/__layout.svelte | 2 + src/routes/webhooks/traefik/main.json.ts | 66 +++++++++++++++++++----- 5 files changed, 56 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 782e43f09..96d9a64a4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "coolify", "description": "An open-source & self-hostable Heroku / Netlify alternative.", - "version": "2.8.2", + "version": "2.9.0", "license": "AGPL-3.0", "scripts": { "dev": "docker-compose -f docker-compose-dev.yaml up -d && cross-env NODE_ENV=development & svelte-kit dev --host 0.0.0.0", diff --git a/src/app.html b/src/app.html index a0336e87d..ab9a75726 100644 --- a/src/app.html +++ b/src/app.html @@ -3,7 +3,6 @@ - Coolify %svelte.head% diff --git a/src/lib/haproxy/index.ts b/src/lib/haproxy/index.ts index d0a6cb804..d2424589c 100644 --- a/src/lib/haproxy/index.ts +++ b/src/lib/haproxy/index.ts @@ -369,7 +369,7 @@ export async function startTraefikProxy(engine: string): Promise { --certificatesresolvers.letsencrypt.acme.httpchallenge=true \ --certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme.json \ --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web \ - --log.level=debug` + --log.level=error` ); await db.prisma.setting.update({ where: { id }, data: { proxyHash: null } }); await db.setDestinationSettings({ engine, isCoolifyProxyUsed: true }); diff --git a/src/routes/__layout.svelte b/src/routes/__layout.svelte index 0f0843f8f..0dceeb9af 100644 --- a/src/routes/__layout.svelte +++ b/src/routes/__layout.svelte @@ -133,6 +133,8 @@ Coolify {#if !$session.whiteLabeled} + {:else if $session.whiteLabelDetails.icon} + {/if} diff --git a/src/routes/webhooks/traefik/main.json.ts b/src/routes/webhooks/traefik/main.json.ts index b0fee9cc7..715c50314 100644 --- a/src/routes/webhooks/traefik/main.json.ts +++ b/src/routes/webhooks/traefik/main.json.ts @@ -37,7 +37,7 @@ const traefik = { } }; -function configureMiddleware({ id, port, nakedDomain, isHttps, isWWW, isDualCerts }) { +function configureMiddleware({ id, port, domain, nakedDomain, isHttps, isWWW, isDualCerts }) { if (isHttps) { traefik.http.routers[id] = { entrypoints: ['web'], @@ -46,16 +46,6 @@ function configureMiddleware({ id, port, nakedDomain, isHttps, isWWW, isDualCert middlewares: ['redirect-to-https'] }; - traefik.http.routers[`${id}-secure`] = { - entrypoints: ['websecure'], - rule: `Host(\`${nakedDomain}\`) || Host(\`www.${nakedDomain}\`)`, - service: `${id}`, - tls: { - certresolver: 'letsencrypt' - }, - middlewares: [] - }; - traefik.http.services[id] = { loadbalancer: { servers: [ @@ -66,13 +56,61 @@ function configureMiddleware({ id, port, nakedDomain, isHttps, isWWW, isDualCert } }; - if (!isDualCerts) { + if (isDualCerts) { + traefik.http.routers[`${id}-secure`] = { + entrypoints: ['websecure'], + rule: `Host(\`${domain}\`) || Host(\`www.${nakedDomain}\`)`, + service: `${id}`, + tls: { + certresolver: 'letsencrypt' + }, + middlewares: [] + }; + } else { if (isWWW) { + traefik.http.routers[`${id}-secure-www`] = { + entrypoints: ['websecure'], + rule: `Host(\`www.${nakedDomain}\`)`, + service: `${id}`, + tls: { + certresolver: 'letsencrypt' + }, + middlewares: [] + }; + traefik.http.routers[`${id}-secure`] = { + entrypoints: ['websecure'], + rule: `Host(\`${nakedDomain}\`)`, + service: `${id}`, + tls: { + domains: { + main: `${domain}` + } + }, + middlewares: ['redirect-to-www'] + }; traefik.http.routers[`${id}`].middlewares.push('redirect-to-www'); - traefik.http.routers[`${id}-secure`].middlewares.push('redirect-to-www'); } else { + traefik.http.routers[`${id}-secure-www`] = { + entrypoints: ['websecure'], + rule: `Host(\`www.${nakedDomain}\`)`, + service: `${id}`, + tls: { + domains: { + main: `${domain}` + } + }, + middlewares: ['redirect-to-non-www'] + }; + traefik.http.routers[`${id}-secure`] = { + entrypoints: ['websecure'], + rule: `Host(\`${domain}\`)`, + service: `${id}`, + tls: { + certresolver: 'letsencrypt' + }, + middlewares: [] + }; traefik.http.routers[`${id}`].middlewares.push('redirect-to-non-www'); - traefik.http.routers[`${id}-secure`].middlewares.push('redirect-to-non-www'); } } } else {