diff --git a/package.json b/package.json
index ac087f1bc..dd531e946 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "coolify",
"description": "An open-source & self-hostable Heroku / Netlify alternative.",
- "version": "2.0.23",
+ "version": "2.0.24",
"license": "AGPL-3.0",
"scripts": {
"dev": "docker-compose -f docker-compose-dev.yaml up -d && NODE_ENV=development svelte-kit dev --host 0.0.0.0",
diff --git a/src/lib/haproxy/configuration.ts b/src/lib/haproxy/configuration.ts
index 76a2623f4..26b76d3fd 100644
--- a/src/lib/haproxy/configuration.ts
+++ b/src/lib/haproxy/configuration.ts
@@ -5,12 +5,12 @@ import crypto from 'crypto';
import * as db from '$lib/database';
import { checkContainer, checkHAProxy } from '.';
-import { getDomain } from '$lib/common';
+import { asyncExecShell, getDomain, getEngine } from '$lib/common';
+import { letsEncrypt } from '$lib/letsencrypt';
const url = dev ? 'http://localhost:5555' : 'http://coolify-haproxy:5555';
-let template = `#coolhash={{hash}}
-program api
+let template = `program api
command /usr/bin/dataplaneapi -f /usr/local/etc/haproxy/dataplaneapi.hcl --userlist haproxy-dataplaneapi
no option start-on-reload
@@ -44,6 +44,26 @@ frontend http
dev ? 302 : 301
} if { req.hdr(host) -i {{redirectTo}} }
{{/applications}}
+ {{#services}}
+ {{#isHttps}}
+ http-request redirect scheme https code ${
+ dev ? 302 : 301
+ } if { hdr(host) -i {{domain}} } !{ ssl_fc }
+ {{/isHttps}}
+ http-request redirect location {{{redirectValue}}} code ${
+ dev ? 302 : 301
+ } if { req.hdr(host) -i {{redirectTo}} }
+ {{/services}}
+ {{#coolify}}
+ {{#isHttps}}
+ http-request redirect scheme https code ${
+ dev ? 302 : 301
+ } if { hdr(host) -i {{domain}} } !{ ssl_fc }
+ {{/isHttps}}
+ http-request redirect location {{{redirectValue}}} code ${
+ dev ? 302 : 301
+ } if { req.hdr(host) -i {{redirectTo}} }
+ {{/coolify}}
use_backend backend-certbot if is_certbot
use_backend %[req.hdr(host),lower]
@@ -61,17 +81,28 @@ backend backend-certbot
{{#applications}}
{{#isRunning}}
-backend {{domain}}
- option forwardfor
- server {{id}} {{id}}:{{port}}
-{{/isRunning}}
-{{/applications}}
-{{#services}}
backend {{domain}}
option forwardfor
- server {{id}} {{id}}:{{port}}
+ server {{id}} {{id}}:{{port}} check
+{{/isRunning}}
+{{/applications}}
+
+{{#services}}
+{{#isRunning}}
+
+backend {{domain}}
+ option forwardfor
+ server {{id}} {{id}}:{{port}} check
+{{/isRunning}}
{{/services}}
+
+{{#coolify}}
+backend {{domain}}
+ option forwardfor
+ option httpchk GET /undead.json
+ server {{id}} {{id}}:{{port}} check fall 10
+{{/coolify}}
`;
export async function haproxyInstance() {
const { proxyPassword } = await db.listSettings();
@@ -85,26 +116,29 @@ export async function haproxyInstance() {
export async function configureHAProxy() {
const haproxy = await haproxyInstance();
await checkHAProxy(haproxy);
+ const ssls = [];
const data = {
applications: [],
- services: []
+ services: [],
+ coolify: []
};
const applications = await db.prisma.application.findMany({
- include: { destinationDocker: true }
+ include: { destinationDocker: true, settings: true }
});
for (const application of applications) {
const {
fqdn,
id,
port,
- destinationDocker: { engine }
+ destinationDocker: { engine, network },
+ settings: { previews }
} = application;
const isRunning = await checkContainer(engine, id);
+ const domain = getDomain(fqdn);
+ const isHttps = fqdn.startsWith('https://');
+ const isWWW = fqdn.includes('www.');
+ const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
if (isRunning) {
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
- const isWWW = fqdn.includes('www.');
- const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
data.applications.push({
id,
port,
@@ -114,32 +148,90 @@ export async function configureHAProxy() {
redirectValue,
redirectTo: isWWW ? domain : 'www.' + domain
});
+ if (isHttps) ssls.push({ domain, id, isCoolify: false });
+ }
+ if (previews) {
+ const host = getEngine(engine);
+ const { stdout } = await asyncExecShell(
+ `DOCKER_HOST=${host} docker container ls --filter="status=running" --filter="network=${network}" --filter="name=${id}-" --format="{{json .Names}}"`
+ );
+ const containers = stdout
+ .trim()
+ .split('\n')
+ .filter((a) => a)
+ .map((c) => c.replace(/"/g, ''));
+ if (containers.length > 0) {
+ for (const container of containers) {
+ let previewDomain = `${container.split('-')[1]}.${domain}`;
+ data.applications.push({
+ id: container,
+ port,
+ domain: previewDomain,
+ isRunning,
+ isHttps,
+ redirectValue,
+ redirectTo: isWWW ? previewDomain : 'www.' + previewDomain
+ });
+ if (isHttps) ssls.push({ domain: previewDomain, id, isCoolify: false });
+ }
+ }
}
}
- // const services = await db.prisma.service.findMany({
- // include: {
- // destinationDocker: true,
- // minio: true,
- // plausibleAnalytics: true,
- // vscodeserver: true,
- // wordpress: true
- // }
- // });
+ const services = await db.prisma.service.findMany({
+ include: {
+ destinationDocker: true,
+ minio: true,
+ plausibleAnalytics: true,
+ vscodeserver: true,
+ wordpress: true
+ }
+ });
- // for (const service of services) {
- // const {
- // fqdn,
- // id,
- // type,
- // destinationDocker: { engine }
- // } = service;
- // const found = db.supportedServiceTypesAndVersions.find((a) => a.name === type);
- // if (found) {
- // const port = found.ports.main;
- // const publicPort = service[type]?.publicPort;
- // const isRunning = await checkContainer(engine, id);
- // }
- // }
+ for (const service of services) {
+ const {
+ fqdn,
+ id,
+ type,
+ destinationDocker: { engine }
+ } = service;
+ const found = db.supportedServiceTypesAndVersions.find((a) => a.name === type);
+ if (found) {
+ const port = found.ports.main;
+ const publicPort = service[type]?.publicPort;
+ const isRunning = await checkContainer(engine, id);
+ const domain = getDomain(fqdn);
+ const isHttps = fqdn.startsWith('https://');
+ const isWWW = fqdn.includes('www.');
+ const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
+ data.services.push({
+ id,
+ port,
+ publicPort,
+ domain,
+ isRunning,
+ isHttps,
+ redirectValue,
+ redirectTo: isWWW ? domain : 'www.' + domain
+ });
+ if (isHttps) ssls.push({ domain, id, isCoolify: false });
+ }
+ }
+ const { fqdn } = await db.prisma.setting.findFirst();
+ if (fqdn) {
+ const domain = getDomain(fqdn);
+ const isHttps = fqdn.startsWith('https://');
+ const isWWW = fqdn.includes('www.');
+ const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
+ data.coolify.push({
+ id: dev ? 'host.docker.internal' : 'coolify',
+ port: 3000,
+ domain,
+ isHttps,
+ redirectValue,
+ redirectTo: isWWW ? domain : 'www.' + domain
+ });
+ if (!dev && isHttps) ssls.push({ domain, id: 'coolify', isCoolify: true });
+ }
const output = mustache.render(template, data);
const newHash = crypto.createHash('md5').update(output).digest('hex');
const { proxyHash, id } = await db.listSettings();
@@ -156,6 +248,15 @@ export async function configureHAProxy() {
}
});
} else {
- console.log('HAProxy configuration is up to date');
+ // console.log('HAProxy configuration is up to date');
+ }
+ if (ssls.length > 0) {
+ for (const ssl of ssls) {
+ if (!dev) {
+ await letsEncrypt(ssl.domain, ssl.id, ssl.isCoolify);
+ } else {
+ // console.log('Generate ssl for', ssl.domain);
+ }
+ }
}
}
diff --git a/src/lib/haproxy/index.ts b/src/lib/haproxy/index.ts
index 734c3a038..f47c8c560 100644
--- a/src/lib/haproxy/index.ts
+++ b/src/lib/haproxy/index.ts
@@ -1,8 +1,7 @@
import { dev } from '$app/env';
-import { asyncExecShell, getDomain, getEngine } from '$lib/common';
+import { asyncExecShell, getEngine } from '$lib/common';
import got from 'got';
import * as db from '$lib/database';
-import { letsEncrypt } from '$lib/letsencrypt';
const url = dev ? 'http://localhost:5555' : 'http://coolify-haproxy:5555';
@@ -49,112 +48,112 @@ export async function completeTransaction(transactionId) {
return await haproxy.put(`v2/services/haproxy/transactions/${transactionId}`);
}
-export async function removeProxyConfiguration(fqdn) {
- const domain = getDomain(fqdn);
- const haproxy = await haproxyInstance();
- const backendFound = await haproxy
- .get(`v2/services/haproxy/configuration/backends/${domain}`)
- .json();
- if (backendFound) {
- const transactionId = await getNextTransactionId();
- await haproxy
- .delete(`v2/services/haproxy/configuration/backends/${domain}`, {
- searchParams: {
- transaction_id: transactionId
- }
- })
- .json();
- await completeTransaction(transactionId);
- }
- await forceSSLOffApplication(domain);
- await removeWwwRedirection(fqdn);
-}
-export async function forceSSLOffApplication(domain) {
- const haproxy = await haproxyInstance();
- await checkHAProxy(haproxy);
+// export async function removeProxyConfiguration(fqdn) {
+// const domain = getDomain(fqdn);
+// const haproxy = await haproxyInstance();
+// const backendFound = await haproxy
+// .get(`v2/services/haproxy/configuration/backends/${domain}`)
+// .json();
+// if (backendFound) {
+// const transactionId = await getNextTransactionId();
+// await haproxy
+// .delete(`v2/services/haproxy/configuration/backends/${domain}`, {
+// searchParams: {
+// transaction_id: transactionId
+// }
+// })
+// .json();
+// await completeTransaction(transactionId);
+// }
+// await forceSSLOffApplication(domain);
+// await removeWwwRedirection(fqdn);
+// }
+// export async function forceSSLOffApplication(domain) {
+// const haproxy = await haproxyInstance();
+// await checkHAProxy(haproxy);
- let transactionId;
+// let transactionId;
- try {
- const rules: any = await haproxy
- .get(`v2/services/haproxy/configuration/http_request_rules`, {
- searchParams: {
- parent_name: 'http',
- parent_type: 'frontend'
- }
- })
- .json();
- if (rules.data.length > 0) {
- const rule = rules.data.find((rule) =>
- rule.cond_test.includes(`{ hdr(host) -i ${domain} } !{ ssl_fc }`)
- );
- if (rule) {
- transactionId = await getNextTransactionId();
- await haproxy
- .delete(`v2/services/haproxy/configuration/http_request_rules/${rule.index}`, {
- searchParams: {
- transaction_id: transactionId,
- parent_name: 'http',
- parent_type: 'frontend'
- }
- })
- .json();
- }
- }
- } catch (error) {
- console.log(error);
- } finally {
- if (transactionId) await completeTransaction(transactionId);
- }
-}
-export async function forceSSLOnApplication(domain) {
- const haproxy = await haproxyInstance();
- await checkHAProxy(haproxy);
- let transactionId;
- try {
- const rules: any = await haproxy
- .get(`v2/services/haproxy/configuration/http_request_rules`, {
- searchParams: {
- parent_name: 'http',
- parent_type: 'frontend'
- }
- })
- .json();
- let nextRule = 0;
- if (rules.data.length > 0) {
- const rule = rules.data.find((rule) =>
- rule.cond_test.includes(`{ hdr(host) -i ${domain} } !{ ssl_fc }`)
- );
- if (rule) return;
- nextRule = rules.data[rules.data.length - 1].index + 1;
- }
- transactionId = await getNextTransactionId();
+// try {
+// const rules: any = await haproxy
+// .get(`v2/services/haproxy/configuration/http_request_rules`, {
+// searchParams: {
+// parent_name: 'http',
+// parent_type: 'frontend'
+// }
+// })
+// .json();
+// if (rules.data.length > 0) {
+// const rule = rules.data.find((rule) =>
+// rule.cond_test.includes(`{ hdr(host) -i ${domain} } !{ ssl_fc }`)
+// );
+// if (rule) {
+// transactionId = await getNextTransactionId();
+// await haproxy
+// .delete(`v2/services/haproxy/configuration/http_request_rules/${rule.index}`, {
+// searchParams: {
+// transaction_id: transactionId,
+// parent_name: 'http',
+// parent_type: 'frontend'
+// }
+// })
+// .json();
+// }
+// }
+// } catch (error) {
+// console.log(error);
+// } finally {
+// if (transactionId) await completeTransaction(transactionId);
+// }
+// }
+// export async function forceSSLOnApplication(domain) {
+// const haproxy = await haproxyInstance();
+// await checkHAProxy(haproxy);
+// let transactionId;
+// try {
+// const rules: any = await haproxy
+// .get(`v2/services/haproxy/configuration/http_request_rules`, {
+// searchParams: {
+// parent_name: 'http',
+// parent_type: 'frontend'
+// }
+// })
+// .json();
+// let nextRule = 0;
+// if (rules.data.length > 0) {
+// const rule = rules.data.find((rule) =>
+// rule.cond_test.includes(`{ hdr(host) -i ${domain} } !{ ssl_fc }`)
+// );
+// if (rule) return;
+// nextRule = rules.data[rules.data.length - 1].index + 1;
+// }
+// transactionId = await getNextTransactionId();
- await haproxy
- .post(`v2/services/haproxy/configuration/http_request_rules`, {
- searchParams: {
- transaction_id: transactionId,
- parent_name: 'http',
- parent_type: 'frontend'
- },
- json: {
- index: nextRule,
- cond: 'if',
- cond_test: `{ hdr(host) -i ${domain} } !{ ssl_fc }`,
- type: 'redirect',
- redir_type: 'scheme',
- redir_value: 'https',
- redir_code: dev ? 302 : 301
- }
- })
- .json();
- } catch (error) {
- console.log(error);
- throw error;
- } finally {
- if (transactionId) await completeTransaction(transactionId);
- }
-}
+// await haproxy
+// .post(`v2/services/haproxy/configuration/http_request_rules`, {
+// searchParams: {
+// transaction_id: transactionId,
+// parent_name: 'http',
+// parent_type: 'frontend'
+// },
+// json: {
+// index: nextRule,
+// cond: 'if',
+// cond_test: `{ hdr(host) -i ${domain} } !{ ssl_fc }`,
+// type: 'redirect',
+// redir_type: 'scheme',
+// redir_value: 'https',
+// redir_code: dev ? 302 : 301
+// }
+// })
+// .json();
+// } catch (error) {
+// console.log(error);
+// throw error;
+// } finally {
+// if (transactionId) await completeTransaction(transactionId);
+// }
+// }
export async function deleteProxy({ id }) {
const haproxy = await haproxyInstance();
@@ -189,355 +188,55 @@ export async function reloadHaproxy(engine) {
const host = getEngine(engine);
return await asyncExecShell(`DOCKER_HOST=${host} docker exec coolify-haproxy kill -HUP 1`);
}
-export async function checkProxyConfigurations() {
- const timeout = 10;
- const haproxy = await haproxyInstance();
- await checkHAProxy(haproxy);
- try {
- const stats: any = await haproxy.get(`v2/services/haproxy/stats/native`).json();
- let transactionId = null;
- for (const stat of stats[0].stats) {
- if (stat.stats.status !== 'no check' && stat.type === 'server') {
- if (!transactionId) await getNextTransactionId();
- const { backend_name: backendName } = stat;
- await haproxy
- .delete(`v2/services/haproxy/configuration/backends/${backendName}`, {
- searchParams: {
- transaction_id: transactionId
- }
- })
- .json();
- }
- }
- if (transactionId) await completeTransaction(transactionId);
- } catch (error) {
- console.log(error.response.body);
- }
-}
-// export async function configureHAProxy(
-// haproxy,
-// transactionId,
-// fqdn,
-// id,
-// port,
-// containerRunning,
-// engine
-// ) {
-// const domain = getDomain(fqdn);
-// const isHttps = fqdn.startsWith('https://');
-// const isWWW = fqdn.includes('www.');
-// const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
-// const contTest = `{ req.hdr(host) -i ${isWWW ? domain.replace('www.', '') : `www.${domain}`} }`;
-
-// // console.log({ fqdn, domain, id, port, containerRunning, isHttps, isWWW });
-
-// if (!containerRunning) {
-// try {
-// await haproxy.get(`v2/services/haproxy/configuration/backends/${domain}`).json();
-// console.log('removing', domain);
-// transactionId = await getNextTransactionId();
-// await haproxy
-// .delete(`v2/services/haproxy/configuration/backends/${domain}`, {
-// searchParams: {
-// transaction_id: transactionId
-// }
-// })
-// .json();
-// } catch (error) {
-// if (error?.response?.body) {
-// const json = JSON.parse(error.response.body);
-// if (json.code === 400 && json.message.includes('could not resolve address')) {
-// await stopCoolifyProxy(engine);
-// await startCoolifyProxy(engine);
-// }
-// }
-// //
-// }
-// try {
-// let rules: any;
-// // Force SSL off
-// rules = await haproxy
-// .get(`v2/services/haproxy/configuration/http_request_rules`, {
-// searchParams: {
-// parent_name: 'http',
-// parent_type: 'frontend'
-// }
-// })
-// .json();
-// if (rules.data.length > 0) {
-// const rule = rules.data.find((rule) =>
-// rule.cond_test.includes(`{ hdr(host) -i ${domain} } !{ ssl_fc }`)
-// );
-// if (rule) {
-// if (!transactionId) transactionId = await getNextTransactionId();
-// await haproxy
-// .delete(`v2/services/haproxy/configuration/http_request_rules/${rule.index}`, {
-// searchParams: {
-// transaction_id: transactionId,
-// parent_name: 'http',
-// parent_type: 'frontend'
-// }
-// })
-// .json();
-// }
-// }
-
-// // Force WWW off
-// rules = await haproxy
-// .get(`v2/services/haproxy/configuration/http_request_rules`, {
-// searchParams: {
-// parent_name: 'http',
-// parent_type: 'frontend'
-// }
-// })
-// .json();
-// if (rules.data.length > 0) {
-// const rule = rules.data.find((rule) => rule.redir_value.includes(redirectValue));
-// if (rule) {
-// if (!transactionId) transactionId = await getNextTransactionId();
-// await haproxy
-// .delete(`v2/services/haproxy/configuration/http_request_rules/${rule.index}`, {
-// searchParams: {
-// transaction_id: transactionId,
-// parent_name: 'http',
-// parent_type: 'frontend'
-// }
-// })
-// .json();
-// }
-// }
-// } catch (error) {
-// console.log(error);
-// //
-// } finally {
-// try {
-// if (transactionId) return transactionId;
-// } catch (error) {
-// if (error?.response?.body) {
-// const json = JSON.parse(error.response.body);
-// if (json.code === 400 && json.message.includes('could not resolve address')) {
-// await stopCoolifyProxy(engine);
-// await startCoolifyProxy(engine);
-// }
-// }
-// }
-// }
-// return;
-// } else {
-// let serverConfigured = false;
-// let backendAvailable: any = null;
-// try {
-// backendAvailable = await haproxy
-// .get(`v2/services/haproxy/configuration/backends/${domain}`)
-// .json();
-// const server: any = await haproxy
-// .get(`v2/services/haproxy/configuration/servers/${id}`, {
-// searchParams: {
-// backend: domain
-// }
-// })
-// .json();
-
-// if (backendAvailable && server) {
-// // Very sophisticated way to check if the server is already configured in proxy
-// if (backendAvailable.data.forwardfor.enabled === 'enabled') {
-// if (backendAvailable.data.name === domain) {
-// if (server.data.check === 'disabled') {
-// if (server.data.address === id) {
-// if (server.data.port === port) {
-// serverConfigured = true;
-// }
-// }
-// }
-// }
-// }
-// }
-// } catch (error) {
-// //
-// console.log(error);
-// }
-// if (serverConfigured) {
-// console.log('server configured', domain);
-// return;
-// }
-
-// if (backendAvailable) {
-// if (!transactionId) transactionId = await getNextTransactionId();
-// await haproxy
-// .delete(`v2/services/haproxy/configuration/backends/${domain}`, {
-// searchParams: {
-// transaction_id: transactionId
-// }
-// })
-// .json();
-// }
-// try {
-// console.log('adding ', domain);
-// if (!transactionId) transactionId = await getNextTransactionId();
-// await haproxy.post('v2/services/haproxy/configuration/backends', {
-// searchParams: {
-// transaction_id: transactionId
-// },
-// json: {
-// 'init-addr': 'last,libc,none',
-// forwardfor: { enabled: 'enabled' },
-// name: domain
-// }
-// });
-// await haproxy.post('v2/services/haproxy/configuration/servers', {
-// searchParams: {
-// transaction_id: transactionId,
-// backend: domain
-// },
-// json: {
-// address: id,
-// check: 'disabled',
-// name: id,
-// port: port
-// }
-// });
-// let rules: any;
-
-// // Force SSL off
-// rules = await haproxy
-// .get(`v2/services/haproxy/configuration/http_request_rules`, {
-// searchParams: {
-// parent_name: 'http',
-// parent_type: 'frontend'
-// }
-// })
-// .json();
-// if (rules.data.length > 0) {
-// const rule = rules.data.find((rule) =>
-// rule.cond_test.includes(`{ hdr(host) -i ${domain} } !{ ssl_fc }`)
-// );
-// if (rule) {
-// await haproxy
-// .delete(`v2/services/haproxy/configuration/http_request_rules/${rule.index}`, {
-// searchParams: {
-// transaction_id: transactionId,
-// parent_name: 'http',
-// parent_type: 'frontend'
-// }
-// })
-// .json();
-// }
-// }
-// // Generate SSL && force SSL on
-// if (isHttps) {
-// await letsEncrypt(domain, id, false);
-// rules = await haproxy
-// .get(`v2/services/haproxy/configuration/http_request_rules`, {
-// searchParams: {
-// parent_name: 'http',
-// parent_type: 'frontend'
-// }
-// })
-// .json();
-// let nextRule = 0;
-// if (rules.data.length > 0) {
-// const rule = rules.data.find((rule) =>
-// rule.cond_test.includes(`{ hdr(host) -i ${domain} } !{ ssl_fc }`)
-// );
-// if (rule) return;
-// nextRule = rules.data[rules.data.length - 1].index + 1;
-// }
-
+// export async function checkProxyConfigurations() {
+// const timeout = 10;
+// const haproxy = await haproxyInstance();
+// await checkHAProxy(haproxy);
+// try {
+// const stats: any = await haproxy.get(`v2/services/haproxy/stats/native`).json();
+// let transactionId = null;
+// for (const stat of stats[0].stats) {
+// if (stat.stats.status !== 'no check' && stat.type === 'server') {
+// if (!transactionId) await getNextTransactionId();
+// const { backend_name: backendName } = stat;
// await haproxy
-// .post(`v2/services/haproxy/configuration/http_request_rules`, {
+// .delete(`v2/services/haproxy/configuration/backends/${backendName}`, {
// searchParams: {
-// transaction_id: transactionId,
-// parent_name: 'http',
-// parent_type: 'frontend'
-// },
-// json: {
-// index: nextRule,
-// cond: 'if',
-// cond_test: `{ hdr(host) -i ${domain} } !{ ssl_fc }`,
-// type: 'redirect',
-// redir_type: 'scheme',
-// redir_value: 'https',
-// redir_code: dev ? 302 : 301
+// transaction_id: transactionId
// }
// })
// .json();
// }
-
-// // WWW redirect on
-// rules = await haproxy
-// .get(`v2/services/haproxy/configuration/http_request_rules`, {
-// searchParams: {
-// parent_name: 'http',
-// parent_type: 'frontend'
-// }
-// })
-// .json();
-// let nextRule = 0;
-// if (rules.data.length > 0) {
-// const rule = rules.data.find((rule) => rule.redir_value.includes(redirectValue));
-// if (rule) return;
-// nextRule = rules.data[rules.data.length - 1].index + 1;
-// }
-
-// await haproxy
-// .post(`v2/services/haproxy/configuration/http_request_rules`, {
-// searchParams: {
-// transaction_id: transactionId,
-// parent_name: 'http',
-// parent_type: 'frontend'
-// },
-// json: {
-// index: nextRule,
-// cond: 'if',
-// cond_test: contTest,
-// type: 'redirect',
-// redir_type: 'location',
-// redir_value: redirectValue,
-// redir_code: dev ? 302 : 301
-// }
-// })
-// .json();
-// } catch (error) {
-// console.log(error);
-// } finally {
-// try {
-// if (transactionId) return transactionId;
-// } catch (error) {
-// if (error?.response?.body) {
-// const json = JSON.parse(error.response.body);
-// if (json.code === 400 && json.message.includes('could not resolve address')) {
-// await stopCoolifyProxy(engine);
-// await startCoolifyProxy(engine);
-// }
-// }
-// }
// }
+// if (transactionId) await completeTransaction(transactionId);
+// } catch (error) {
+// console.log(error.response.body);
// }
// }
-export async function configureCoolifyProxyOff(fqdn) {
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
- const haproxy = await haproxyInstance();
- await checkHAProxy(haproxy);
+// export async function configureCoolifyProxyOff(fqdn) {
+// const domain = getDomain(fqdn);
+// const isHttps = fqdn.startsWith('https://');
+// const haproxy = await haproxyInstance();
+// await checkHAProxy(haproxy);
- try {
- await haproxy.get(`v2/services/haproxy/configuration/backends/${domain}`).json();
- const transactionId = await getNextTransactionId();
- await haproxy
- .delete(`v2/services/haproxy/configuration/backends/${domain}`, {
- searchParams: {
- transaction_id: transactionId
- }
- })
- .json();
- await completeTransaction(transactionId);
- if (isHttps) await forceSSLOffApplication(domain);
- await removeWwwRedirection(fqdn);
- } catch (error) {
- throw error?.response?.body || error;
- }
-}
+// try {
+// await haproxy.get(`v2/services/haproxy/configuration/backends/${domain}`).json();
+// const transactionId = await getNextTransactionId();
+// await haproxy
+// .delete(`v2/services/haproxy/configuration/backends/${domain}`, {
+// searchParams: {
+// transaction_id: transactionId
+// }
+// })
+// .json();
+// await completeTransaction(transactionId);
+// if (isHttps) await forceSSLOffApplication(domain);
+// await removeWwwRedirection(fqdn);
+// } catch (error) {
+// throw error?.response?.body || error;
+// }
+// }
export async function checkHAProxy(haproxy?: any) {
if (!haproxy) haproxy = await haproxyInstance();
try {
@@ -549,76 +248,76 @@ export async function checkHAProxy(haproxy?: any) {
};
}
}
-export async function configureCoolifyProxyOn(fqdn) {
- const domain = getDomain(fqdn);
- const haproxy = await haproxyInstance();
- await checkHAProxy(haproxy);
- let serverConfigured = false;
- let backendAvailable: any = null;
- try {
- backendAvailable = await haproxy
- .get(`v2/services/haproxy/configuration/backends/${domain}`)
- .json();
- const server: any = await haproxy
- .get(`v2/services/haproxy/configuration/servers/coolify`, {
- searchParams: {
- backend: domain
- }
- })
- .json();
- if (backendAvailable && server) {
- // Very sophisticated way to check if the server is already configured in proxy
- if (backendAvailable.data.forwardfor.enabled === 'enabled') {
- if (backendAvailable.data.name === domain) {
- if (server.data.check === 'enabled') {
- if (server.data.address === dev ? 'host.docker.internal' : 'coolify') {
- if (server.data.port === 3000) {
- serverConfigured = true;
- }
- }
- }
- }
- }
- }
- } catch (error) {}
- if (serverConfigured) return;
- const transactionId = await getNextTransactionId();
- try {
- await haproxy.post('v2/services/haproxy/configuration/backends', {
- searchParams: {
- transaction_id: transactionId
- },
- json: {
- adv_check: 'httpchk',
- httpchk_params: {
- method: 'GET',
- uri: '/undead.json'
- },
- 'init-addr': 'last,libc,none',
- forwardfor: { enabled: 'enabled' },
- name: domain
- }
- });
- await haproxy.post('v2/services/haproxy/configuration/servers', {
- searchParams: {
- transaction_id: transactionId,
- backend: domain
- },
- json: {
- address: dev ? 'host.docker.internal' : 'coolify',
- check: 'enable',
- fall: 10,
- name: 'coolify',
- port: 3000
- }
- });
- } catch (error) {
- console.log(error);
- throw error;
- } finally {
- await completeTransaction(transactionId);
- }
-}
+// export async function configureCoolifyProxyOn(fqdn) {
+// const domain = getDomain(fqdn);
+// const haproxy = await haproxyInstance();
+// await checkHAProxy(haproxy);
+// let serverConfigured = false;
+// let backendAvailable: any = null;
+// try {
+// backendAvailable = await haproxy
+// .get(`v2/services/haproxy/configuration/backends/${domain}`)
+// .json();
+// const server: any = await haproxy
+// .get(`v2/services/haproxy/configuration/servers/coolify`, {
+// searchParams: {
+// backend: domain
+// }
+// })
+// .json();
+// if (backendAvailable && server) {
+// // Very sophisticated way to check if the server is already configured in proxy
+// if (backendAvailable.data.forwardfor.enabled === 'enabled') {
+// if (backendAvailable.data.name === domain) {
+// if (server.data.check === 'enabled') {
+// if (server.data.address === dev ? 'host.docker.internal' : 'coolify') {
+// if (server.data.port === 3000) {
+// serverConfigured = true;
+// }
+// }
+// }
+// }
+// }
+// }
+// } catch (error) {}
+// if (serverConfigured) return;
+// const transactionId = await getNextTransactionId();
+// try {
+// await haproxy.post('v2/services/haproxy/configuration/backends', {
+// searchParams: {
+// transaction_id: transactionId
+// },
+// json: {
+// adv_check: 'httpchk',
+// httpchk_params: {
+// method: 'GET',
+// uri: '/undead.json'
+// },
+// 'init-addr': 'last,libc,none',
+// forwardfor: { enabled: 'enabled' },
+// name: domain
+// }
+// });
+// await haproxy.post('v2/services/haproxy/configuration/servers', {
+// searchParams: {
+// transaction_id: transactionId,
+// backend: domain
+// },
+// json: {
+// address: dev ? 'host.docker.internal' : 'coolify',
+// check: 'enable',
+// fall: 10,
+// name: 'coolify',
+// port: 3000
+// }
+// });
+// } catch (error) {
+// console.log(error);
+// throw error;
+// } finally {
+// await completeTransaction(transactionId);
+// }
+// }
export async function stopTcpHttpProxy(destinationDocker, publicPort) {
const { engine } = destinationDocker;
@@ -748,179 +447,179 @@ export async function configureNetworkCoolifyProxy(engine) {
});
}
-export async function configureSimpleServiceProxyOn({ id, domain, port }) {
- console.log({ service: true, id, domain, port });
- const haproxy = await haproxyInstance();
- await checkHAProxy(haproxy);
- let serverConfigured = false;
- let backendAvailable: any = null;
+// export async function configureSimpleServiceProxyOn({ id, domain, port }) {
+// console.log({ service: true, id, domain, port });
+// const haproxy = await haproxyInstance();
+// await checkHAProxy(haproxy);
+// let serverConfigured = false;
+// let backendAvailable: any = null;
- try {
- backendAvailable = await haproxy
- .get(`v2/services/haproxy/configuration/backends/${domain}`)
- .json();
- const server: any = await haproxy
- .get(`v2/services/haproxy/configuration/servers/${id}`, {
- searchParams: {
- backend: domain
- }
- })
- .json();
- if (backendAvailable && server) {
- // Very sophisticated way to check if the server is already configured in proxy
- if (backendAvailable.data.forwardfor.enabled === 'enabled') {
- if (backendAvailable.data.name === domain) {
- if (server.data.check === 'enabled') {
- if (server.data.address === id) {
- if (server.data.port === port) {
- serverConfigured = true;
- }
- }
- }
- }
- }
- }
- } catch (error) {}
- if (serverConfigured) return;
- const transactionId = await getNextTransactionId();
- await haproxy.post('v2/services/haproxy/configuration/backends', {
- searchParams: {
- transaction_id: transactionId
- },
- json: {
- 'init-addr': 'last,libc,none',
- forwardfor: { enabled: 'enabled' },
- name: domain
- }
- });
- await haproxy.post('v2/services/haproxy/configuration/servers', {
- searchParams: {
- transaction_id: transactionId,
- backend: domain
- },
- json: {
- address: id,
- check: 'enable',
- name: id,
- port: port
- }
- });
- await completeTransaction(transactionId);
-}
+// try {
+// backendAvailable = await haproxy
+// .get(`v2/services/haproxy/configuration/backends/${domain}`)
+// .json();
+// const server: any = await haproxy
+// .get(`v2/services/haproxy/configuration/servers/${id}`, {
+// searchParams: {
+// backend: domain
+// }
+// })
+// .json();
+// if (backendAvailable && server) {
+// // Very sophisticated way to check if the server is already configured in proxy
+// if (backendAvailable.data.forwardfor.enabled === 'enabled') {
+// if (backendAvailable.data.name === domain) {
+// if (server.data.check === 'enabled') {
+// if (server.data.address === id) {
+// if (server.data.port === port) {
+// serverConfigured = true;
+// }
+// }
+// }
+// }
+// }
+// }
+// } catch (error) {}
+// if (serverConfigured) return;
+// const transactionId = await getNextTransactionId();
+// await haproxy.post('v2/services/haproxy/configuration/backends', {
+// searchParams: {
+// transaction_id: transactionId
+// },
+// json: {
+// 'init-addr': 'last,libc,none',
+// forwardfor: { enabled: 'enabled' },
+// name: domain
+// }
+// });
+// await haproxy.post('v2/services/haproxy/configuration/servers', {
+// searchParams: {
+// transaction_id: transactionId,
+// backend: domain
+// },
+// json: {
+// address: id,
+// check: 'enable',
+// name: id,
+// port: port
+// }
+// });
+// await completeTransaction(transactionId);
+// }
-export async function configureSimpleServiceProxyOff(fqdn) {
- if (!fqdn) {
- return;
- }
- const domain = getDomain(fqdn);
- const haproxy = await haproxyInstance();
- await checkHAProxy(haproxy);
- try {
- await haproxy.get(`v2/services/haproxy/configuration/backends/${domain}`).json();
- const transactionId = await getNextTransactionId();
- await haproxy
- .delete(`v2/services/haproxy/configuration/backends/${domain}`, {
- searchParams: {
- transaction_id: transactionId
- }
- })
- .json();
- await completeTransaction(transactionId);
- } catch (error) {}
- await forceSSLOffApplication(domain);
- await removeWwwRedirection(fqdn);
- return;
-}
+// export async function configureSimpleServiceProxyOff(fqdn) {
+// if (!fqdn) {
+// return;
+// }
+// const domain = getDomain(fqdn);
+// const haproxy = await haproxyInstance();
+// await checkHAProxy(haproxy);
+// try {
+// await haproxy.get(`v2/services/haproxy/configuration/backends/${domain}`).json();
+// const transactionId = await getNextTransactionId();
+// await haproxy
+// .delete(`v2/services/haproxy/configuration/backends/${domain}`, {
+// searchParams: {
+// transaction_id: transactionId
+// }
+// })
+// .json();
+// await completeTransaction(transactionId);
+// } catch (error) {}
+// await forceSSLOffApplication(domain);
+// await removeWwwRedirection(fqdn);
+// return;
+// }
-export async function removeWwwRedirection(fqdn) {
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
- const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
+// export async function removeWwwRedirection(fqdn) {
+// const domain = getDomain(fqdn);
+// const isHttps = fqdn.startsWith('https://');
+// const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
- const haproxy = await haproxyInstance();
- await checkHAProxy();
+// const haproxy = await haproxyInstance();
+// await checkHAProxy();
- let transactionId;
+// let transactionId;
- try {
- const rules: any = await haproxy
- .get(`v2/services/haproxy/configuration/http_request_rules`, {
- searchParams: {
- parent_name: 'http',
- parent_type: 'frontend'
- }
- })
- .json();
- if (rules.data.length > 0) {
- const rule = rules.data.find((rule) => rule.redir_value.includes(redirectValue));
- if (rule) {
- transactionId = await getNextTransactionId();
- await haproxy
- .delete(`v2/services/haproxy/configuration/http_request_rules/${rule.index}`, {
- searchParams: {
- transaction_id: transactionId,
- parent_name: 'http',
- parent_type: 'frontend'
- }
- })
- .json();
- }
- }
- } catch (error) {
- console.log(error);
- } finally {
- if (transactionId) await completeTransaction(transactionId);
- }
-}
-export async function setWwwRedirection(fqdn) {
- const haproxy = await haproxyInstance();
- await checkHAProxy(haproxy);
- let transactionId;
+// try {
+// const rules: any = await haproxy
+// .get(`v2/services/haproxy/configuration/http_request_rules`, {
+// searchParams: {
+// parent_name: 'http',
+// parent_type: 'frontend'
+// }
+// })
+// .json();
+// if (rules.data.length > 0) {
+// const rule = rules.data.find((rule) => rule.redir_value.includes(redirectValue));
+// if (rule) {
+// transactionId = await getNextTransactionId();
+// await haproxy
+// .delete(`v2/services/haproxy/configuration/http_request_rules/${rule.index}`, {
+// searchParams: {
+// transaction_id: transactionId,
+// parent_name: 'http',
+// parent_type: 'frontend'
+// }
+// })
+// .json();
+// }
+// }
+// } catch (error) {
+// console.log(error);
+// } finally {
+// if (transactionId) await completeTransaction(transactionId);
+// }
+// }
+// export async function setWwwRedirection(fqdn) {
+// const haproxy = await haproxyInstance();
+// await checkHAProxy(haproxy);
+// let transactionId;
- try {
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
- const isWWW = fqdn.includes('www.');
- const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
- const contTest = `{ req.hdr(host) -i ${isWWW ? domain.replace('www.', '') : `www.${domain}`} }`;
- const rules: any = await haproxy
- .get(`v2/services/haproxy/configuration/http_request_rules`, {
- searchParams: {
- parent_name: 'http',
- parent_type: 'frontend'
- }
- })
- .json();
- let nextRule = 0;
- if (rules.data.length > 0) {
- const rule = rules.data.find((rule) => rule.redir_value.includes(redirectValue));
- if (rule) return;
- nextRule = rules.data[rules.data.length - 1].index + 1;
- }
+// try {
+// const domain = getDomain(fqdn);
+// const isHttps = fqdn.startsWith('https://');
+// const isWWW = fqdn.includes('www.');
+// const redirectValue = `${isHttps ? 'https://' : 'http://'}${domain}%[capture.req.uri]`;
+// const contTest = `{ req.hdr(host) -i ${isWWW ? domain.replace('www.', '') : `www.${domain}`} }`;
+// const rules: any = await haproxy
+// .get(`v2/services/haproxy/configuration/http_request_rules`, {
+// searchParams: {
+// parent_name: 'http',
+// parent_type: 'frontend'
+// }
+// })
+// .json();
+// let nextRule = 0;
+// if (rules.data.length > 0) {
+// const rule = rules.data.find((rule) => rule.redir_value.includes(redirectValue));
+// if (rule) return;
+// nextRule = rules.data[rules.data.length - 1].index + 1;
+// }
- transactionId = await getNextTransactionId();
- await haproxy
- .post(`v2/services/haproxy/configuration/http_request_rules`, {
- searchParams: {
- transaction_id: transactionId,
- parent_name: 'http',
- parent_type: 'frontend'
- },
- json: {
- index: nextRule,
- cond: 'if',
- cond_test: contTest,
- type: 'redirect',
- redir_type: 'location',
- redir_value: redirectValue,
- redir_code: dev ? 302 : 301
- }
- })
- .json();
- } catch (error) {
- console.log(error);
- throw error;
- } finally {
- if (transactionId) await completeTransaction(transactionId);
- }
-}
+// transactionId = await getNextTransactionId();
+// await haproxy
+// .post(`v2/services/haproxy/configuration/http_request_rules`, {
+// searchParams: {
+// transaction_id: transactionId,
+// parent_name: 'http',
+// parent_type: 'frontend'
+// },
+// json: {
+// index: nextRule,
+// cond: 'if',
+// cond_test: contTest,
+// type: 'redirect',
+// redir_type: 'location',
+// redir_value: redirectValue,
+// redir_code: dev ? 302 : 301
+// }
+// })
+// .json();
+// } catch (error) {
+// console.log(error);
+// throw error;
+// } finally {
+// if (transactionId) await completeTransaction(transactionId);
+// }
+// }
diff --git a/src/lib/letsencrypt.ts b/src/lib/letsencrypt.ts
index c062287ea..b3846eba7 100644
--- a/src/lib/letsencrypt.ts
+++ b/src/lib/letsencrypt.ts
@@ -13,7 +13,7 @@ export async function letsEncrypt(domain, id = null, isCoolify = false) {
const nakedDomain = domain.replace('www.', '');
const wwwDomain = `www.${nakedDomain}`;
const randomCuid = cuid();
- const randomPort = await getPort({ port: portNumbers(minPort, maxPort) });
+ const randomPort = 9000;
let host;
let dualCerts = false;
diff --git a/src/lib/queues/builder.ts b/src/lib/queues/builder.ts
index 0de934bef..54976b050 100644
--- a/src/lib/queues/builder.ts
+++ b/src/lib/queues/builder.ts
@@ -256,26 +256,5 @@ export default async function (job) {
throw new Error(error);
}
saveBuildLog({ line: 'Proxy will be configured shortly.', buildId, applicationId });
- // try {
- // if (destinationDockerId && destinationDocker.isCoolifyProxyUsed) {
- // saveBuildLog({ line: 'Proxy configuration started!', buildId, applicationId });
- // await checkProxyConfigurations();
- // await configureProxyForApplication(domain, imageId, port);
- // if (isHttps) await letsEncrypt({ domain, id: applicationId });
- // await setWwwRedirection(fqdn);
- // await reloadHaproxy(destinationDocker.engine);
- // saveBuildLog({ line: 'Proxy configuration successful!', buildId, applicationId });
- // } else {
- // saveBuildLog({
- // line: 'Coolify Proxy is not configured for this destination. Nothing else to do.',
- // buildId,
- // applicationId
- // });
- // }
- // } catch (error) {
- // saveBuildLog({ line: error.stdout || error, buildId, applicationId });
- // sentry.captureException(error);
- // throw new Error(error);
- // }
}
}
diff --git a/src/lib/queues/cleanup.ts b/src/lib/queues/cleanup.ts
index 981173a31..53c1896a7 100644
--- a/src/lib/queues/cleanup.ts
+++ b/src/lib/queues/cleanup.ts
@@ -8,48 +8,53 @@ export default async function () {
for (const destinationDocker of destinationDockers) {
const host = getEngine(destinationDocker.engine);
// Tagging images with labels
- try {
- const images = [
- `coollabsio/${defaultProxyImageTcp}`,
- `coollabsio/${defaultProxyImageHttp}`,
- 'certbot/certbot:latest',
- 'node:16.14.0-alpine',
- 'alpine:latest',
- 'nginx:stable-alpine',
- 'node:lts',
- 'php:apache',
- 'rust:latest'
- ];
- for (const image of images) {
- try {
- await asyncExecShell(`DOCKER_HOST=${host} docker image inspect ${image}`);
- } catch (error) {
- await asyncExecShell(
- `DOCKER_HOST=${host} docker pull ${image} && echo "FROM ${image}" | docker build --label coolify.image="true" -t "${image}" -`
- );
- }
- }
- } catch (error) {}
+ // try {
+ // const images = [
+ // `coollabsio/${defaultProxyImageTcp}`,
+ // `coollabsio/${defaultProxyImageHttp}`,
+ // 'certbot/certbot:latest',
+ // 'node:16.14.0-alpine',
+ // 'alpine:latest',
+ // 'nginx:stable-alpine',
+ // 'node:lts',
+ // 'php:apache',
+ // 'rust:latest'
+ // ];
+ // for (const image of images) {
+ // try {
+ // await asyncExecShell(`DOCKER_HOST=${host} docker image inspect ${image}`);
+ // } catch (error) {
+ // await asyncExecShell(
+ // `DOCKER_HOST=${host} docker pull ${image} && echo "FROM ${image}" | docker build --label coolify.image="true" -t "${image}" -`
+ // );
+ // }
+ // }
+ // } catch (error) {}
try {
await asyncExecShell(`DOCKER_HOST=${host} docker container prune -f`);
} catch (error) {
console.log(error);
}
- if (!dev) {
- // Cleanup images that are not managed by coolify
- try {
- await asyncExecShell(
- `DOCKER_HOST=${host} docker image prune --filter 'label!=coolify.image=true' -a -f`
- );
- } catch (error) {
- console.log(error);
- }
- // Cleanup old images >3 days
- try {
- await asyncExecShell(`DOCKER_HOST=${host} docker image prune --filter "until=72h" -a -f`);
- } catch (error) {
- console.log(error);
- }
+ try {
+ await asyncExecShell(`DOCKER_HOST=${host} docker image prune -f`);
+ } catch (error) {
+ console.log(error);
}
+ // if (!dev) {
+ // // Cleanup images that are not managed by coolify
+ // try {
+ // await asyncExecShell(
+ // `DOCKER_HOST=${host} docker image prune --filter 'label!=coolify.image=true' -a -f`
+ // );
+ // } catch (error) {
+ // console.log(error);
+ // }
+ // // Cleanup old images >3 days
+ // try {
+ // await asyncExecShell(`DOCKER_HOST=${host} docker image prune --filter "until=72h" -a -f`);
+ // } catch (error) {
+ // console.log(error);
+ // }
+ // }
}
}
diff --git a/src/lib/queues/proxy.ts b/src/lib/queues/proxy.ts
index 65949abf0..3d5f05181 100644
--- a/src/lib/queues/proxy.ts
+++ b/src/lib/queues/proxy.ts
@@ -1,104 +1,10 @@
+import { ErrorHandler } from '$lib/database';
import { configureHAProxy } from '$lib/haproxy/configuration';
export default async function () {
try {
return await configureHAProxy();
} catch (error) {
- console.log(error.response.body || error);
+ ErrorHandler(error.response.body || error);
}
- // const haproxy = await haproxyInstance();
- // await checkHAProxy(haproxy);
- // const transactionId = await getNextTransactionId();
- // let executeTransaction = {
- // applications: false,
- // services: false
- // }
- // try {
- // await checkProxyConfigurations();
- // } catch (error) {
- // console.log(error);
- // }
- // try {
- // const applications = await db.prisma.application.findMany({
- // include: { destinationDocker: true }
- // });
-
- // for (const application of applications) {
- // const {
- // fqdn,
- // id,
- // port,
- // destinationDocker: { engine }
- // } = application;
- // const containerRunning = await checkContainer(engine, id);
- // executeTransaction.applications = await configureHAProxy(
- // haproxy,
- // transactionId,
- // fqdn,
- // id,
- // port,
- // containerRunning,
- // engine
- // );
- // }
-
- // const services = await db.prisma.service.findMany({
- // include: {
- // destinationDocker: true,
- // minio: true,
- // plausibleAnalytics: true,
- // vscodeserver: true,
- // wordpress: true
- // }
- // });
-
- // for (const service of services) {
- // const {
- // fqdn,
- // id,
- // type,
- // destinationDocker: { engine }
- // } = service;
- // const found = db.supportedServiceTypesAndVersions.find((a) => a.name === type);
- // if (found) {
- // console.log(found);
- // const port = found.ports.main;
- // const publicPort = service[type]?.publicPort;
- // const containerRunning = await checkContainer(engine, id);
- // executeTransaction.services = await configureHAProxy(
- // haproxy,
- // transactionId,
- // fqdn,
- // id,
- // port,
- // containerRunning,
- // engine
- // );
- // if (publicPort) {
- // const containerFound = await checkContainer(
- // service.destinationDocker.engine,
- // `haproxy-for-${publicPort}`
- // );
- // if (!containerFound) {
- // await startHttpProxy(service.destinationDocker, id, publicPort, 9000);
- // }
- // }
- // }
- // }
- // if (executeTransaction.applications || executeTransaction.services) {
- // await haproxy.put(`v2/services/haproxy/transactions/${transactionId}`);
- // }
- // // Check Coolify FQDN and configure proxy if needed
- // // const { fqdn } = await db.listSettings();
- // // if (fqdn) {
- // // const domain = getDomain(fqdn);
- // // await startCoolifyProxy('/var/run/docker.sock');
- // // await configureCoolifyProxyOn(fqdn);
- // // await setWwwRedirection(fqdn);
- // // const isHttps = fqdn.startsWith('https://');
- // // if (isHttps) await forceSSLOnApplication(domain);
- // // }
- // } catch (error) {
- // throw error;
- // }
}
diff --git a/src/routes/applications/[id]/previews/index.svelte b/src/routes/applications/[id]/previews/index.svelte
index 59b1e4aa2..9ac2dd940 100644
--- a/src/routes/applications/[id]/previews/index.svelte
+++ b/src/routes/applications/[id]/previews/index.svelte
@@ -44,33 +44,19 @@
-
-
-
- | Name |
- Value |
- Need during buildtime? |
- |
+
+
+
+ | Name |
+ Value |
+ Need during buildtime? |
+ Action |
-
+
{#each applicationSecrets as secret}
{#key secret.id}
-
+
s.name === secret.name)}
isPRMRSecret
diff --git a/src/routes/applications/[id]/stop.json.ts b/src/routes/applications/[id]/stop.json.ts
index 58064c07a..999d8c106 100644
--- a/src/routes/applications/[id]/stop.json.ts
+++ b/src/routes/applications/[id]/stop.json.ts
@@ -1,8 +1,7 @@
-import { getDomain, getUserDetails } from '$lib/common';
+import { asyncExecShell, getEngine, getUserDetails, removeDestinationDocker } from '$lib/common';
import * as db from '$lib/database';
import { ErrorHandler } from '$lib/database';
-import { dockerInstance } from '$lib/docker';
-import { removeProxyConfiguration } from '$lib/haproxy';
+import { checkContainer } from '$lib/haproxy';
import type { RequestHandler } from '@sveltejs/kit';
export const post: RequestHandler = async (event) => {
@@ -17,10 +16,12 @@ export const post: RequestHandler = async (event) => {
teamId
});
if (destinationDockerId) {
- const docker = dockerInstance({ destinationDocker });
- await docker.engine.getContainer(id).stop();
+ const { engine } = destinationDocker;
+ const found = await checkContainer(engine, id);
+ if (found) {
+ await removeDestinationDocker({ id, engine });
+ }
}
- // await removeProxyConfiguration(fqdn);
return {
status: 200
};
diff --git a/src/routes/destinations/[id]/restart.json.ts b/src/routes/destinations/[id]/restart.json.ts
index 65a3e0cd4..9d2da459a 100644
--- a/src/routes/destinations/[id]/restart.json.ts
+++ b/src/routes/destinations/[id]/restart.json.ts
@@ -1,30 +1,19 @@
-import { getDomain, getUserDetails } from '$lib/common';
+import { getUserDetails } from '$lib/common';
import { ErrorHandler } from '$lib/database';
import * as db from '$lib/database';
-import {
- configureCoolifyProxyOn,
- forceSSLOnApplication,
- setWwwRedirection,
- startCoolifyProxy,
- stopCoolifyProxy
-} from '$lib/haproxy';
+import { startCoolifyProxy, stopCoolifyProxy } from '$lib/haproxy';
import type { RequestHandler } from '@sveltejs/kit';
export const post: RequestHandler = async (event) => {
const { teamId, status, body } = await getUserDetails(event);
if (status === 401) return { status, body };
- const { engine, fqdn } = await event.request.json();
+ const { engine } = await event.request.json();
try {
- const domain = getDomain(fqdn);
await stopCoolifyProxy(engine);
await startCoolifyProxy(engine);
await db.setDestinationSettings({ engine, isCoolifyProxyUsed: true });
- await configureCoolifyProxyOn(fqdn);
- await setWwwRedirection(fqdn);
- const isHttps = fqdn.startsWith('https://');
- if (isHttps) await forceSSLOnApplication(domain);
return {
status: 200
};
diff --git a/src/routes/services/[id]/minio/start.json.ts b/src/routes/services/[id]/minio/start.json.ts
index 1d1a0655e..5512bded8 100644
--- a/src/routes/services/[id]/minio/start.json.ts
+++ b/src/routes/services/[id]/minio/start.json.ts
@@ -3,15 +3,7 @@ import * as db from '$lib/database';
import { promises as fs } from 'fs';
import yaml from 'js-yaml';
import type { RequestHandler } from '@sveltejs/kit';
-import { letsEncrypt } from '$lib/letsencrypt';
-import {
- checkHAProxy,
- checkProxyConfigurations,
- configureSimpleServiceProxyOn,
- reloadHaproxy,
- setWwwRedirection,
- startHttpProxy
-} from '$lib/haproxy';
+import { startHttpProxy } from '$lib/haproxy';
import getPort, { portNumbers } from 'get-port';
import { getDomain } from '$lib/components/common';
import { ErrorHandler } from '$lib/database';
@@ -24,7 +16,6 @@ export const post: RequestHandler = async (event) => {
const { id } = event.params;
try {
- // await checkHAProxy();
const service = await db.getService({ id, teamId });
const {
type,
@@ -38,9 +29,6 @@ export const post: RequestHandler = async (event) => {
const data = await db.prisma.setting.findFirst();
const { minPort, maxPort } = data;
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
-
const network = destinationDockerId && destinationDocker.network;
const host = getEngine(destinationDocker.engine);
@@ -96,16 +84,8 @@ export const post: RequestHandler = async (event) => {
}
try {
await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`);
- // await checkProxyConfigurations();
- // await configureSimpleServiceProxyOn({ id, domain, port: consolePort });
await db.updateMinioService({ id, publicPort });
await startHttpProxy(destinationDocker, id, publicPort, apiPort);
-
- // if (isHttps) {
- // await letsEncrypt({ domain, id });
- // }
- // await setWwwRedirection(fqdn);
- // await reloadHaproxy(destinationDocker.engine);
return {
status: 200
};
diff --git a/src/routes/services/[id]/minio/stop.json.ts b/src/routes/services/[id]/minio/stop.json.ts
index 0285e776c..3e2340237 100644
--- a/src/routes/services/[id]/minio/stop.json.ts
+++ b/src/routes/services/[id]/minio/stop.json.ts
@@ -1,9 +1,7 @@
-import { getEngine, getUserDetails, removeDestinationDocker } from '$lib/common';
-import { getDomain } from '$lib/components/common';
+import { getUserDetails, removeDestinationDocker } from '$lib/common';
import * as db from '$lib/database';
import { ErrorHandler } from '$lib/database';
-import { dockerInstance } from '$lib/docker';
-import { checkContainer, configureSimpleServiceProxyOff, stopTcpHttpProxy } from '$lib/haproxy';
+import { checkContainer, stopTcpHttpProxy } from '$lib/haproxy';
import type { RequestHandler } from '@sveltejs/kit';
export const post: RequestHandler = async (event) => {
@@ -21,7 +19,6 @@ export const post: RequestHandler = async (event) => {
minio: { publicPort }
} = service;
await db.updateMinioService({ id, publicPort: null });
- const domain = getDomain(fqdn);
if (destinationDockerId) {
const engine = destinationDocker.engine;
@@ -35,7 +32,6 @@ export const post: RequestHandler = async (event) => {
}
try {
await stopTcpHttpProxy(destinationDocker, publicPort);
- // await configureSimpleServiceProxyOff(fqdn);
} catch (error) {
console.log(error);
}
diff --git a/src/routes/services/[id]/nocodb/start.json.ts b/src/routes/services/[id]/nocodb/start.json.ts
index 82ccd2a1c..ef9ac485c 100644
--- a/src/routes/services/[id]/nocodb/start.json.ts
+++ b/src/routes/services/[id]/nocodb/start.json.ts
@@ -3,15 +3,6 @@ import * as db from '$lib/database';
import { promises as fs } from 'fs';
import yaml from 'js-yaml';
import type { RequestHandler } from '@sveltejs/kit';
-import { letsEncrypt } from '$lib/letsencrypt';
-import {
- checkHAProxy,
- checkProxyConfigurations,
- configureSimpleServiceProxyOn,
- reloadHaproxy,
- setWwwRedirection
-} from '$lib/haproxy';
-import { getDomain } from '$lib/components/common';
import { ErrorHandler } from '$lib/database';
import { makeLabelForServices } from '$lib/buildPacks/common';
@@ -22,13 +13,8 @@ export const post: RequestHandler = async (event) => {
const { id } = event.params;
try {
- await checkHAProxy();
const service = await db.getService({ id, teamId });
- const { type, version, fqdn, destinationDockerId, destinationDocker } = service;
-
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
-
+ const { type, version, destinationDockerId, destinationDocker } = service;
const network = destinationDockerId && destinationDocker.network;
const host = getEngine(destinationDocker.engine);
@@ -56,14 +42,6 @@ export const post: RequestHandler = async (event) => {
try {
await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`);
- // await checkProxyConfigurations();
- // await configureSimpleServiceProxyOn({ id, domain, port: 8080 });
-
- // if (isHttps) {
- // await letsEncrypt({ domain, id });
- // }
- // await setWwwRedirection(fqdn);
- // await reloadHaproxy(destinationDocker.engine);
return {
status: 200
};
diff --git a/src/routes/services/[id]/nocodb/stop.json.ts b/src/routes/services/[id]/nocodb/stop.json.ts
index f15ba1012..c604e1cc3 100644
--- a/src/routes/services/[id]/nocodb/stop.json.ts
+++ b/src/routes/services/[id]/nocodb/stop.json.ts
@@ -1,9 +1,7 @@
import { getUserDetails, removeDestinationDocker } from '$lib/common';
-import { getDomain } from '$lib/components/common';
import * as db from '$lib/database';
import { ErrorHandler } from '$lib/database';
-import { dockerInstance } from '$lib/docker';
-import { checkContainer, configureSimpleServiceProxyOff } from '$lib/haproxy';
+import { checkContainer } from '$lib/haproxy';
import type { RequestHandler } from '@sveltejs/kit';
export const post: RequestHandler = async (event) => {
@@ -15,7 +13,6 @@ export const post: RequestHandler = async (event) => {
try {
const service = await db.getService({ id, teamId });
const { destinationDockerId, destinationDocker, fqdn } = service;
- const domain = getDomain(fqdn);
if (destinationDockerId) {
const engine = destinationDocker.engine;
@@ -27,11 +24,6 @@ export const post: RequestHandler = async (event) => {
} catch (error) {
console.error(error);
}
- try {
- await configureSimpleServiceProxyOff(fqdn);
- } catch (error) {
- console.log(error);
- }
}
return {
diff --git a/src/routes/services/[id]/plausibleanalytics/start.json.ts b/src/routes/services/[id]/plausibleanalytics/start.json.ts
index fe0171267..70de54499 100644
--- a/src/routes/services/[id]/plausibleanalytics/start.json.ts
+++ b/src/routes/services/[id]/plausibleanalytics/start.json.ts
@@ -3,15 +3,6 @@ import * as db from '$lib/database';
import { promises as fs } from 'fs';
import yaml from 'js-yaml';
import type { RequestHandler } from '@sveltejs/kit';
-import { letsEncrypt } from '$lib/letsencrypt';
-import {
- checkHAProxy,
- checkProxyConfigurations,
- configureSimpleServiceProxyOn,
- reloadHaproxy,
- setWwwRedirection
-} from '$lib/haproxy';
-import { getDomain } from '$lib/components/common';
import { ErrorHandler } from '$lib/database';
import { makeLabelForServices } from '$lib/buildPacks/common';
@@ -22,7 +13,6 @@ export const post: RequestHandler = async (event) => {
const { id } = event.params;
try {
- await checkHAProxy();
const service = await db.getService({ id, teamId });
const {
type,
@@ -42,9 +32,6 @@ export const post: RequestHandler = async (event) => {
}
} = service;
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
-
const config = {
plausibleAnalytics: {
image: `plausible/analytics:${version}`,
@@ -83,7 +70,6 @@ export const post: RequestHandler = async (event) => {
};
const network = destinationDockerId && destinationDocker.network;
const host = getEngine(destinationDocker.engine);
- const engine = destinationDocker.engine;
const { workdir } = await createDirectories({ repository: type, buildId: id });
@@ -187,14 +173,7 @@ COPY ./init-db.sh /docker-entrypoint-initdb.d/init-db.sh`;
await asyncExecShell(
`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up --build -d`
);
- // await checkProxyConfigurations();
- // await configureSimpleServiceProxyOn({ id, domain, port: 8000 });
- // if (isHttps) {
- // await letsEncrypt({ domain, id });
- // }
- // await setWwwRedirection(fqdn);
- // await reloadHaproxy(destinationDocker.engine);
return {
status: 200
};
diff --git a/src/routes/services/[id]/plausibleanalytics/stop.json.ts b/src/routes/services/[id]/plausibleanalytics/stop.json.ts
index d9b42d7b3..6ff3cac3b 100644
--- a/src/routes/services/[id]/plausibleanalytics/stop.json.ts
+++ b/src/routes/services/[id]/plausibleanalytics/stop.json.ts
@@ -1,9 +1,7 @@
import { getUserDetails, removeDestinationDocker } from '$lib/common';
-import { getDomain } from '$lib/components/common';
import * as db from '$lib/database';
import { ErrorHandler } from '$lib/database';
-import { dockerInstance } from '$lib/docker';
-import { checkContainer, configureSimpleServiceProxyOff } from '$lib/haproxy';
+import { checkContainer } from '$lib/haproxy';
import type { RequestHandler } from '@sveltejs/kit';
export const post: RequestHandler = async (event) => {
@@ -15,7 +13,6 @@ export const post: RequestHandler = async (event) => {
try {
const service = await db.getService({ id, teamId });
const { destinationDockerId, destinationDocker, fqdn } = service;
- const domain = getDomain(fqdn);
if (destinationDockerId) {
const engine = destinationDocker.engine;
@@ -36,12 +33,6 @@ export const post: RequestHandler = async (event) => {
} catch (error) {
console.error(error);
}
-
- try {
- await configureSimpleServiceProxyOff(fqdn);
- } catch (error) {
- console.log(error);
- }
}
return {
diff --git a/src/routes/services/[id]/vaultwarden/start.json.ts b/src/routes/services/[id]/vaultwarden/start.json.ts
index 5dcacbea3..f42481200 100644
--- a/src/routes/services/[id]/vaultwarden/start.json.ts
+++ b/src/routes/services/[id]/vaultwarden/start.json.ts
@@ -3,15 +3,6 @@ import * as db from '$lib/database';
import { promises as fs } from 'fs';
import yaml from 'js-yaml';
import type { RequestHandler } from '@sveltejs/kit';
-import { letsEncrypt } from '$lib/letsencrypt';
-import {
- checkHAProxy,
- checkProxyConfigurations,
- configureSimpleServiceProxyOn,
- reloadHaproxy,
- setWwwRedirection
-} from '$lib/haproxy';
-import { getDomain } from '$lib/components/common';
import { getServiceImage, ErrorHandler } from '$lib/database';
import { makeLabelForServices } from '$lib/buildPacks/common';
@@ -22,12 +13,8 @@ export const post: RequestHandler = async (event) => {
const { id } = event.params;
try {
- await checkHAProxy();
const service = await db.getService({ id, teamId });
- const { type, version, fqdn, destinationDockerId, destinationDocker } = service;
-
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
+ const { type, version, destinationDockerId, destinationDocker } = service;
const network = destinationDockerId && destinationDocker.network;
const host = getEngine(destinationDocker.engine);
@@ -74,14 +61,6 @@ export const post: RequestHandler = async (event) => {
}
try {
await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`);
- // await checkProxyConfigurations();
- // await configureSimpleServiceProxyOn({ id, domain, port: 80 });
-
- // if (isHttps) {
- // await letsEncrypt({ domain, id });
- // }
- // await setWwwRedirection(fqdn);
- // await reloadHaproxy(destinationDocker.engine);
return {
status: 200
};
diff --git a/src/routes/services/[id]/vaultwarden/stop.json.ts b/src/routes/services/[id]/vaultwarden/stop.json.ts
index f15ba1012..3c3bfbc62 100644
--- a/src/routes/services/[id]/vaultwarden/stop.json.ts
+++ b/src/routes/services/[id]/vaultwarden/stop.json.ts
@@ -1,9 +1,7 @@
import { getUserDetails, removeDestinationDocker } from '$lib/common';
-import { getDomain } from '$lib/components/common';
import * as db from '$lib/database';
import { ErrorHandler } from '$lib/database';
-import { dockerInstance } from '$lib/docker';
-import { checkContainer, configureSimpleServiceProxyOff } from '$lib/haproxy';
+import { checkContainer } from '$lib/haproxy';
import type { RequestHandler } from '@sveltejs/kit';
export const post: RequestHandler = async (event) => {
@@ -15,7 +13,6 @@ export const post: RequestHandler = async (event) => {
try {
const service = await db.getService({ id, teamId });
const { destinationDockerId, destinationDocker, fqdn } = service;
- const domain = getDomain(fqdn);
if (destinationDockerId) {
const engine = destinationDocker.engine;
@@ -27,13 +24,7 @@ export const post: RequestHandler = async (event) => {
} catch (error) {
console.error(error);
}
- try {
- await configureSimpleServiceProxyOff(fqdn);
- } catch (error) {
- console.log(error);
- }
}
-
return {
status: 200
};
diff --git a/src/routes/services/[id]/vscodeserver/start.json.ts b/src/routes/services/[id]/vscodeserver/start.json.ts
index ee5f2670b..29bf3326a 100644
--- a/src/routes/services/[id]/vscodeserver/start.json.ts
+++ b/src/routes/services/[id]/vscodeserver/start.json.ts
@@ -3,15 +3,6 @@ import * as db from '$lib/database';
import { promises as fs } from 'fs';
import yaml from 'js-yaml';
import type { RequestHandler } from '@sveltejs/kit';
-import { letsEncrypt } from '$lib/letsencrypt';
-import {
- checkHAProxy,
- checkProxyConfigurations,
- configureSimpleServiceProxyOn,
- reloadHaproxy,
- setWwwRedirection
-} from '$lib/haproxy';
-import { getDomain } from '$lib/components/common';
import { ErrorHandler } from '$lib/database';
import { makeLabelForServices } from '$lib/buildPacks/common';
@@ -22,20 +13,15 @@ export const post: RequestHandler = async (event) => {
const { id } = event.params;
try {
- await checkHAProxy();
const service = await db.getService({ id, teamId });
const {
type,
version,
- fqdn,
destinationDockerId,
destinationDocker,
vscodeserver: { password }
} = service;
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
-
const network = destinationDockerId && destinationDocker.network;
const host = getEngine(destinationDocker.engine);
@@ -84,14 +70,6 @@ export const post: RequestHandler = async (event) => {
try {
await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`);
- // await checkProxyConfigurations();
- // await configureSimpleServiceProxyOn({ id, domain, port: 8080 });
-
- // if (isHttps) {
- // await letsEncrypt({ domain, id });
- // }
- // await setWwwRedirection(fqdn);
- // await reloadHaproxy(destinationDocker.engine);
return {
status: 200
};
diff --git a/src/routes/services/[id]/vscodeserver/stop.json.ts b/src/routes/services/[id]/vscodeserver/stop.json.ts
index cf748b709..3c3bfbc62 100644
--- a/src/routes/services/[id]/vscodeserver/stop.json.ts
+++ b/src/routes/services/[id]/vscodeserver/stop.json.ts
@@ -1,9 +1,7 @@
import { getUserDetails, removeDestinationDocker } from '$lib/common';
-import { getDomain } from '$lib/components/common';
import * as db from '$lib/database';
import { ErrorHandler } from '$lib/database';
-import { dockerInstance } from '$lib/docker';
-import { checkContainer, configureSimpleServiceProxyOff } from '$lib/haproxy';
+import { checkContainer } from '$lib/haproxy';
import type { RequestHandler } from '@sveltejs/kit';
export const post: RequestHandler = async (event) => {
@@ -15,7 +13,6 @@ export const post: RequestHandler = async (event) => {
try {
const service = await db.getService({ id, teamId });
const { destinationDockerId, destinationDocker, fqdn } = service;
- const domain = getDomain(fqdn);
if (destinationDockerId) {
const engine = destinationDocker.engine;
@@ -27,11 +24,6 @@ export const post: RequestHandler = async (event) => {
} catch (error) {
console.error(error);
}
- try {
- await configureSimpleServiceProxyOff(fqdn);
- } catch (error) {
- console.log(error);
- }
}
return {
status: 200
diff --git a/src/routes/services/[id]/wordpress/start.json.ts b/src/routes/services/[id]/wordpress/start.json.ts
index 76e113bce..54080478e 100644
--- a/src/routes/services/[id]/wordpress/start.json.ts
+++ b/src/routes/services/[id]/wordpress/start.json.ts
@@ -3,15 +3,6 @@ import * as db from '$lib/database';
import { promises as fs } from 'fs';
import yaml from 'js-yaml';
import type { RequestHandler } from '@sveltejs/kit';
-import { letsEncrypt } from '$lib/letsencrypt';
-import {
- checkHAProxy,
- checkProxyConfigurations,
- configureSimpleServiceProxyOn,
- reloadHaproxy,
- setWwwRedirection
-} from '$lib/haproxy';
-import { getDomain } from '$lib/components/common';
import { ErrorHandler } from '$lib/database';
import { makeLabelForServices } from '$lib/buildPacks/common';
@@ -22,7 +13,6 @@ export const post: RequestHandler = async (event) => {
const { id } = event.params;
try {
- await checkHAProxy();
const service = await db.getService({ id, teamId });
const {
type,
@@ -40,9 +30,6 @@ export const post: RequestHandler = async (event) => {
}
} = service;
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
-
const network = destinationDockerId && destinationDocker.network;
const host = getEngine(destinationDocker.engine);
@@ -121,14 +108,6 @@ export const post: RequestHandler = async (event) => {
try {
await asyncExecShell(`DOCKER_HOST=${host} docker compose -f ${composeFileDestination} up -d`);
- // await checkProxyConfigurations();
- // await configureSimpleServiceProxyOn({ id, domain, port: 80 });
-
- // if (isHttps) {
- // await letsEncrypt({ domain, id });
- // }
- // await setWwwRedirection(fqdn);
- // await reloadHaproxy(destinationDocker.engine);
return {
status: 200
};
diff --git a/src/routes/services/[id]/wordpress/stop.json.ts b/src/routes/services/[id]/wordpress/stop.json.ts
index 800a62de3..2fc32b5a1 100644
--- a/src/routes/services/[id]/wordpress/stop.json.ts
+++ b/src/routes/services/[id]/wordpress/stop.json.ts
@@ -1,9 +1,7 @@
import { getUserDetails, removeDestinationDocker } from '$lib/common';
-import { getDomain } from '$lib/components/common';
import * as db from '$lib/database';
import { ErrorHandler } from '$lib/database';
-import { dockerInstance } from '$lib/docker';
-import { checkContainer, configureSimpleServiceProxyOff } from '$lib/haproxy';
+import { checkContainer } from '$lib/haproxy';
import type { RequestHandler } from '@sveltejs/kit';
export const post: RequestHandler = async (event) => {
@@ -15,7 +13,6 @@ export const post: RequestHandler = async (event) => {
try {
const service = await db.getService({ id, teamId });
const { destinationDockerId, destinationDocker, fqdn } = service;
- const domain = getDomain(fqdn);
if (destinationDockerId) {
const engine = destinationDocker.engine;
try {
@@ -30,11 +27,6 @@ export const post: RequestHandler = async (event) => {
} catch (error) {
console.error(error);
}
- try {
- await configureSimpleServiceProxyOff(fqdn);
- } catch (error) {
- console.log(error);
- }
}
return {
diff --git a/src/routes/settings/index.json.ts b/src/routes/settings/index.json.ts
index bb823ed58..163877fb0 100644
--- a/src/routes/settings/index.json.ts
+++ b/src/routes/settings/index.json.ts
@@ -1,18 +1,6 @@
-import { dev } from '$app/env';
-import { getDomain, getUserDetails } from '$lib/common';
+import { getUserDetails } from '$lib/common';
import * as db from '$lib/database';
import { listSettings, ErrorHandler } from '$lib/database';
-import {
- checkProxyConfigurations,
- configureCoolifyProxyOff,
- configureCoolifyProxyOn,
- forceSSLOnApplication,
- reloadHaproxy,
- removeWwwRedirection,
- setWwwRedirection,
- startCoolifyProxy
-} from '$lib/haproxy';
-import { letsEncrypt } from '$lib/letsencrypt';
import type { RequestHandler } from '@sveltejs/kit';
import { promises as dns } from 'dns';
@@ -52,10 +40,7 @@ export const del: RequestHandler = async (event) => {
// Do not care.
}
try {
- const domain = getDomain(fqdn);
await db.prisma.setting.update({ where: { fqdn }, data: { fqdn: null } });
- await configureCoolifyProxyOff(fqdn);
- await removeWwwRedirection(domain);
return {
status: 200,
body: {
@@ -80,50 +65,19 @@ export const post: RequestHandler = async (event) => {
const { fqdn, isRegistrationEnabled, dualCerts, minPort, maxPort } = await event.request.json();
try {
- await checkProxyConfigurations();
- const {
- id,
- fqdn: oldFqdn,
- isRegistrationEnabled: oldIsRegistrationEnabled,
- dualCerts: oldDualCerts
- } = await db.listSettings();
- if (oldIsRegistrationEnabled !== isRegistrationEnabled) {
+ const { id } = await db.listSettings();
+ if (isRegistrationEnabled) {
await db.prisma.setting.update({ where: { id }, data: { isRegistrationEnabled } });
}
- if (oldDualCerts !== dualCerts) {
- await db.prisma.setting.update({ where: { id }, data: { dualCerts } });
- }
- if (oldFqdn && oldFqdn !== fqdn) {
- if (oldFqdn) {
- const oldDomain = getDomain(oldFqdn);
- await configureCoolifyProxyOff(oldFqdn);
- await removeWwwRedirection(oldDomain);
- }
- }
if (fqdn) {
- await startCoolifyProxy('/var/run/docker.sock');
- const domain = getDomain(fqdn);
- const isHttps = fqdn.startsWith('https://');
- if (domain) {
- await configureCoolifyProxyOn(fqdn);
- await setWwwRedirection(fqdn);
- if (isHttps) {
- await letsEncrypt({ domain, isCoolify: true });
- await forceSSLOnApplication(domain);
- await reloadHaproxy('/var/run/docker.sock');
- }
- }
-
await db.prisma.setting.update({ where: { id }, data: { fqdn } });
- await db.prisma.destinationDocker.updateMany({
- where: { engine: '/var/run/docker.sock' },
- data: { isCoolifyProxyUsed: true }
- });
+ }
+ if (dualCerts) {
+ await db.prisma.setting.update({ where: { id }, data: { dualCerts } });
}
if (minPort && maxPort) {
await db.prisma.setting.update({ where: { id }, data: { minPort, maxPort } });
}
-
return {
status: 201
};