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 {