diff --git a/package.json b/package.json
index dd531e946..b3cb422fa 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.24",
+ "version": "2.0.26",
"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/components/svg/services/LanguageTool.svelte b/src/lib/components/svg/services/LanguageTool.svelte
new file mode 100644
index 000000000..65a8f0a03
--- /dev/null
+++ b/src/lib/components/svg/services/LanguageTool.svelte
@@ -0,0 +1,27 @@
+
+
+
diff --git a/src/lib/database/common.ts b/src/lib/database/common.ts
index 04bf54d6b..4638e483e 100644
--- a/src/lib/database/common.ts
+++ b/src/lib/database/common.ts
@@ -156,6 +156,15 @@ export const supportedServiceTypesAndVersions = [
ports: {
main: 80
}
+ },
+ {
+ name: 'languagetool',
+ fancyName: 'LanguageTool',
+ baseImage: 'silviof/docker-languagetool',
+ versions: ['latest'],
+ ports: {
+ main: 8010
+ }
}
];
diff --git a/src/lib/database/services.ts b/src/lib/database/services.ts
index 5cbf2cbfb..56606109b 100644
--- a/src/lib/database/services.ts
+++ b/src/lib/database/services.ts
@@ -105,6 +105,13 @@ export async function configureServiceType({ id, type }) {
type
}
});
+ } else if (type === 'languagetool') {
+ await prisma.service.update({
+ where: { id },
+ data: {
+ type
+ }
+ });
}
}
export async function setServiceVersion({ id, version }) {
@@ -128,6 +135,9 @@ export async function updatePlausibleAnalyticsService({ id, fqdn, email, usernam
export async function updateNocoDbOrMinioService({ id, fqdn, name }) {
return await prisma.service.update({ where: { id }, data: { fqdn, name } });
}
+export async function updateLanguageToolService({ id, fqdn, name }) {
+ return await prisma.service.update({ where: { id }, data: { fqdn, name } });
+}
export async function updateVaultWardenService({ id, fqdn, name }) {
return await prisma.service.update({ where: { id }, data: { fqdn, name } });
}
diff --git a/src/lib/letsencrypt/index.ts b/src/lib/letsencrypt/index.ts
index 43e5d8a63..456c5bc6d 100644
--- a/src/lib/letsencrypt/index.ts
+++ b/src/lib/letsencrypt/index.ts
@@ -1,5 +1,5 @@
import { asyncExecShell, getDomain, getEngine } from '$lib/common';
-import { checkContainer } from '$lib/haproxy';
+import { checkContainer, reloadHaproxy } from '$lib/haproxy';
import * as db from '$lib/database';
import { dev } from '$app/env';
import cuid from 'cuid';
@@ -56,6 +56,7 @@ export async function letsEncrypt(domain, id = null, isCoolify = false) {
await asyncExecShell(
`DOCKER_HOST=${host} docker run --rm -v "coolify-letsencrypt:/etc/letsencrypt" -v "coolify-ssl-certs:/app/ssl" alpine:latest sh -c "test -d /etc/letsencrypt/live/${nakedDomain}/ && cat /etc/letsencrypt/live/${nakedDomain}/fullchain.pem /etc/letsencrypt/live/${nakedDomain}/privkey.pem > /app/ssl/${nakedDomain}.pem || cat /etc/letsencrypt/live/${wwwDomain}/fullchain.pem /etc/letsencrypt/live/${wwwDomain}/privkey.pem > /app/ssl/${wwwDomain}.pem"`
);
+ await reloadHaproxy(host);
} else {
await asyncExecShell(
`DOCKER_HOST=${host} docker run --rm --name certbot-${randomCuid} -p 9080:${randomPort} -v "coolify-letsencrypt:/etc/letsencrypt" certbot/certbot --logs-dir /etc/letsencrypt/logs certonly --standalone --preferred-challenges http --http-01-address 0.0.0.0 --http-01-port ${randomPort} -d ${domain} --expand --agree-tos --non-interactive --register-unsafely-without-email ${
@@ -65,6 +66,7 @@ export async function letsEncrypt(domain, id = null, isCoolify = false) {
await asyncExecShell(
`DOCKER_HOST=${host} docker run --rm -v "coolify-letsencrypt:/etc/letsencrypt" -v "coolify-ssl-certs:/app/ssl" alpine:latest sh -c "cat /etc/letsencrypt/live/${domain}/fullchain.pem /etc/letsencrypt/live/${domain}/privkey.pem > /app/ssl/${domain}.pem"`
);
+ await reloadHaproxy(host);
}
} catch (error) {
if (error.code !== 0) {
@@ -145,9 +147,10 @@ export async function generateSSLCerts() {
if (ssls.length > 0) {
for (const ssl of ssls) {
if (!dev) {
+ console.log('Checking SSL for', ssl.domain);
await letsEncrypt(ssl.domain, ssl.id, ssl.isCoolify);
} else {
- console.log('Generate ssl for', ssl.domain);
+ console.log('Checking SSL for', ssl.domain);
}
}
}
diff --git a/src/routes/services/[id]/__layout.svelte b/src/routes/services/[id]/__layout.svelte
index e1f5b21a6..a096c14cd 100644
--- a/src/routes/services/[id]/__layout.svelte
+++ b/src/routes/services/[id]/__layout.svelte
@@ -110,23 +110,6 @@
loading = false;
}
}
- // onMount(async () => {
- // if (
- // service.type &&
- // service.destinationDockerId &&
- // service.version &&
- // service.fqdn &&
- // !isRunning
- // ) {
- // try {
- // await post(`/services/${service.id}/${service.type}/stop.json`, {});
- // } catch ({ error }) {
- // return errorNotification(error);
- // } finally {
- // loading = false;
- // }
- // }
- // });