WIP: Traefik
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "coolify",
|
"name": "coolify",
|
||||||
"description": "An open-source & self-hostable Heroku / Netlify alternative.",
|
"description": "An open-source & self-hostable Heroku / Netlify alternative.",
|
||||||
"version": "2.8.2",
|
"version": "2.9.0",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "docker-compose -f docker-compose-dev.yaml up -d && cross-env NODE_ENV=development & svelte-kit dev --host 0.0.0.0",
|
"dev": "docker-compose -f docker-compose-dev.yaml up -d && cross-env NODE_ENV=development & svelte-kit dev --host 0.0.0.0",
|
||||||
|
@@ -3,7 +3,6 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<title>Coolify</title>
|
|
||||||
%svelte.head%
|
%svelte.head%
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@@ -369,7 +369,7 @@ export async function startTraefikProxy(engine: string): Promise<void> {
|
|||||||
--certificatesresolvers.letsencrypt.acme.httpchallenge=true \
|
--certificatesresolvers.letsencrypt.acme.httpchallenge=true \
|
||||||
--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme.json \
|
--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme.json \
|
||||||
--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web \
|
--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web \
|
||||||
--log.level=debug`
|
--log.level=error`
|
||||||
);
|
);
|
||||||
await db.prisma.setting.update({ where: { id }, data: { proxyHash: null } });
|
await db.prisma.setting.update({ where: { id }, data: { proxyHash: null } });
|
||||||
await db.setDestinationSettings({ engine, isCoolifyProxyUsed: true });
|
await db.setDestinationSettings({ engine, isCoolifyProxyUsed: true });
|
||||||
|
@@ -133,6 +133,8 @@
|
|||||||
<title>Coolify</title>
|
<title>Coolify</title>
|
||||||
{#if !$session.whiteLabeled}
|
{#if !$session.whiteLabeled}
|
||||||
<link rel="icon" href="/favicon.png" />
|
<link rel="icon" href="/favicon.png" />
|
||||||
|
{:else if $session.whiteLabelDetails.icon}
|
||||||
|
<link rel="icon" href={$session.whiteLabelDetails.icon} />
|
||||||
{/if}
|
{/if}
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
<SvelteToast options={{ intro: { y: -64 }, duration: 3000, pausable: true }} />
|
<SvelteToast options={{ intro: { y: -64 }, duration: 3000, pausable: true }} />
|
||||||
|
@@ -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) {
|
if (isHttps) {
|
||||||
traefik.http.routers[id] = {
|
traefik.http.routers[id] = {
|
||||||
entrypoints: ['web'],
|
entrypoints: ['web'],
|
||||||
@@ -46,16 +46,6 @@ function configureMiddleware({ id, port, nakedDomain, isHttps, isWWW, isDualCert
|
|||||||
middlewares: ['redirect-to-https']
|
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] = {
|
traefik.http.services[id] = {
|
||||||
loadbalancer: {
|
loadbalancer: {
|
||||||
servers: [
|
servers: [
|
||||||
@@ -66,13 +56,61 @@ function configureMiddleware({ id, port, nakedDomain, isHttps, isWWW, isDualCert
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!isDualCerts) {
|
if (isDualCerts) {
|
||||||
if (isWWW) {
|
traefik.http.routers[`${id}-secure`] = {
|
||||||
traefik.http.routers[`${id}`].middlewares.push('redirect-to-www');
|
entrypoints: ['websecure'],
|
||||||
traefik.http.routers[`${id}-secure`].middlewares.push('redirect-to-www');
|
rule: `Host(\`${domain}\`) || Host(\`www.${nakedDomain}\`)`,
|
||||||
|
service: `${id}`,
|
||||||
|
tls: {
|
||||||
|
certresolver: 'letsencrypt'
|
||||||
|
},
|
||||||
|
middlewares: []
|
||||||
|
};
|
||||||
} else {
|
} 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');
|
||||||
|
} 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}`].middlewares.push('redirect-to-non-www');
|
||||||
traefik.http.routers[`${id}-secure`].middlewares.push('redirect-to-non-www');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user