mirror of
https://github.com/ershisan99/coolify.git
synced 2025-12-24 20:49:32 +00:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
986c5b7133 | ||
|
|
4e334d4fff | ||
|
|
dcf7f92aab | ||
|
|
f6a91cb53c | ||
|
|
726fbbb52a | ||
|
|
29d2278579 | ||
|
|
72ceeff022 | ||
|
|
54d65ec011 | ||
|
|
96aef5c4a6 | ||
|
|
7b64166fb0 | ||
|
|
1f5908e0b8 | ||
|
|
a4562d18b6 | ||
|
|
875e232199 |
@@ -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.2.3",
|
"version": "2.2.7",
|
||||||
"license": "AGPL-3.0",
|
"license": "AGPL-3.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "docker-compose -f docker-compose-dev.yaml up -d && NODE_ENV=development svelte-kit dev",
|
"dev": "docker-compose -f docker-compose-dev.yaml up -d && NODE_ENV=development svelte-kit dev",
|
||||||
|
|||||||
@@ -28,11 +28,11 @@ export default async function ({
|
|||||||
if (secret.isBuildSecret) {
|
if (secret.isBuildSecret) {
|
||||||
if (pullmergeRequestId) {
|
if (pullmergeRequestId) {
|
||||||
if (secret.isPRMRSecret) {
|
if (secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!secret.isPRMRSecret) {
|
if (!secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ const createDockerfile = async (data, image): Promise<void> => {
|
|||||||
if (secret.isBuildSecret) {
|
if (secret.isBuildSecret) {
|
||||||
if (pullmergeRequestId) {
|
if (pullmergeRequestId) {
|
||||||
if (secret.isPRMRSecret) {
|
if (secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!secret.isPRMRSecret) {
|
if (!secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,11 +24,11 @@ const createDockerfile = async (data, image): Promise<void> => {
|
|||||||
if (secret.isBuildSecret) {
|
if (secret.isBuildSecret) {
|
||||||
if (pullmergeRequestId) {
|
if (pullmergeRequestId) {
|
||||||
if (secret.isPRMRSecret) {
|
if (secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!secret.isPRMRSecret) {
|
if (!secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,11 +23,11 @@ const createDockerfile = async (data, image): Promise<void> => {
|
|||||||
if (secret.isBuildSecret) {
|
if (secret.isBuildSecret) {
|
||||||
if (pullmergeRequestId) {
|
if (pullmergeRequestId) {
|
||||||
if (secret.isPRMRSecret) {
|
if (secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!secret.isPRMRSecret) {
|
if (!secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,11 +22,11 @@ const createDockerfile = async (data, image): Promise<void> => {
|
|||||||
if (secret.isBuildSecret) {
|
if (secret.isBuildSecret) {
|
||||||
if (pullmergeRequestId) {
|
if (pullmergeRequestId) {
|
||||||
if (secret.isPRMRSecret) {
|
if (secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!secret.isPRMRSecret) {
|
if (!secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -129,9 +129,8 @@ export const removeDestinationDocker = async ({ id, engine }) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const createDirectories = async ({ repository, buildId }) => {
|
export const createDirectories = async ({ repository, buildId }) => {
|
||||||
const dashedRepository = dashify(repository);
|
const repodir = `/tmp/build-sources/${repository}/`;
|
||||||
const repodir = `/tmp/build-sources/${dashedRepository}/`;
|
const workdir = `/tmp/build-sources/${repository}/${buildId}`;
|
||||||
const workdir = `/tmp/build-sources/${dashedRepository}/${buildId}`;
|
|
||||||
|
|
||||||
await asyncExecShell(`mkdir -p ${workdir}`);
|
await asyncExecShell(`mkdir -p ${workdir}`);
|
||||||
|
|
||||||
|
|||||||
@@ -252,6 +252,9 @@ export const buildPacks = [
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
export const scanningTemplates = {
|
export const scanningTemplates = {
|
||||||
|
'@sveltejs/kit': {
|
||||||
|
buildPack: 'nodejs'
|
||||||
|
},
|
||||||
astro: {
|
astro: {
|
||||||
buildPack: 'astro'
|
buildPack: 'astro'
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -27,11 +27,11 @@ export async function buildCacheImageWithNode(data, imageForBuild) {
|
|||||||
if (secret.isBuildSecret) {
|
if (secret.isBuildSecret) {
|
||||||
if (pullmergeRequestId) {
|
if (pullmergeRequestId) {
|
||||||
if (secret.isPRMRSecret) {
|
if (secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!secret.isPRMRSecret) {
|
if (!secret.isPRMRSecret) {
|
||||||
Dockerfile.push(`ARG ${secret.name} ${secret.value}`);
|
Dockerfile.push(`ARG ${secret.name}=${secret.value}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ frontend http
|
|||||||
bind :80
|
bind :80
|
||||||
bind :443 ssl crt /usr/local/etc/haproxy/ssl/ alpn h2,http/1.1
|
bind :443 ssl crt /usr/local/etc/haproxy/ssl/ alpn h2,http/1.1
|
||||||
acl is_certbot path_beg /.well-known/acme-challenge/
|
acl is_certbot path_beg /.well-known/acme-challenge/
|
||||||
|
|
||||||
{{#applications}}
|
{{#applications}}
|
||||||
{{#isHttps}}
|
{{#isHttps}}
|
||||||
http-request redirect scheme https code ${
|
http-request redirect scheme https code ${
|
||||||
@@ -43,6 +44,7 @@ frontend http
|
|||||||
dev ? 302 : 301
|
dev ? 302 : 301
|
||||||
} if { req.hdr(host) -i {{redirectTo}} }
|
} if { req.hdr(host) -i {{redirectTo}} }
|
||||||
{{/applications}}
|
{{/applications}}
|
||||||
|
|
||||||
{{#services}}
|
{{#services}}
|
||||||
{{#isHttps}}
|
{{#isHttps}}
|
||||||
http-request redirect scheme https code ${
|
http-request redirect scheme https code ${
|
||||||
@@ -53,6 +55,7 @@ frontend http
|
|||||||
dev ? 302 : 301
|
dev ? 302 : 301
|
||||||
} if { req.hdr(host) -i {{redirectTo}} }
|
} if { req.hdr(host) -i {{redirectTo}} }
|
||||||
{{/services}}
|
{{/services}}
|
||||||
|
|
||||||
{{#coolify}}
|
{{#coolify}}
|
||||||
{{#isHttps}}
|
{{#isHttps}}
|
||||||
http-request redirect scheme https code ${
|
http-request redirect scheme https code ${
|
||||||
@@ -63,6 +66,7 @@ frontend http
|
|||||||
dev ? 302 : 301
|
dev ? 302 : 301
|
||||||
} if { req.hdr(host) -i {{redirectTo}} }
|
} if { req.hdr(host) -i {{redirectTo}} }
|
||||||
{{/coolify}}
|
{{/coolify}}
|
||||||
|
|
||||||
use_backend backend-certbot if is_certbot
|
use_backend backend-certbot if is_certbot
|
||||||
use_backend %[req.hdr(host),lower]
|
use_backend %[req.hdr(host),lower]
|
||||||
|
|
||||||
@@ -82,6 +86,13 @@ backend backend-certbot
|
|||||||
# updatedAt={{updatedAt}}
|
# updatedAt={{updatedAt}}
|
||||||
backend {{domain}}
|
backend {{domain}}
|
||||||
option forwardfor
|
option forwardfor
|
||||||
|
{{#isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Proto https
|
||||||
|
{{/isHttps}}
|
||||||
|
{{^isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Proto http
|
||||||
|
{{/isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Host %[req.hdr(host),lower]
|
||||||
server {{id}} {{id}}:{{port}}
|
server {{id}} {{id}}:{{port}}
|
||||||
{{/isRunning}}
|
{{/isRunning}}
|
||||||
{{/applications}}
|
{{/applications}}
|
||||||
@@ -91,6 +102,13 @@ backend {{domain}}
|
|||||||
# updatedAt={{updatedAt}}
|
# updatedAt={{updatedAt}}
|
||||||
backend {{domain}}
|
backend {{domain}}
|
||||||
option forwardfor
|
option forwardfor
|
||||||
|
{{#isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Proto https
|
||||||
|
{{/isHttps}}
|
||||||
|
{{^isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Proto http
|
||||||
|
{{/isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Host %[req.hdr(host),lower]
|
||||||
server {{id}} {{id}}:{{port}}
|
server {{id}} {{id}}:{{port}}
|
||||||
{{/isRunning}}
|
{{/isRunning}}
|
||||||
{{/services}}
|
{{/services}}
|
||||||
@@ -99,6 +117,13 @@ backend {{domain}}
|
|||||||
backend {{domain}}
|
backend {{domain}}
|
||||||
option forwardfor
|
option forwardfor
|
||||||
option httpchk GET /undead.json
|
option httpchk GET /undead.json
|
||||||
|
{{#isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Proto https
|
||||||
|
{{/isHttps}}
|
||||||
|
{{^isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Proto http
|
||||||
|
{{/isHttps}}
|
||||||
|
http-request add-header X-Forwarded-Host %[req.hdr(host),lower]
|
||||||
server {{id}} {{id}}:{{port}} check fall 10
|
server {{id}} {{id}}:{{port}} check fall 10
|
||||||
{{/coolify}}
|
{{/coolify}}
|
||||||
`;
|
`;
|
||||||
@@ -113,12 +138,7 @@ export async function haproxyInstance() {
|
|||||||
|
|
||||||
export async function configureHAProxy() {
|
export async function configureHAProxy() {
|
||||||
const haproxy = await haproxyInstance();
|
const haproxy = await haproxyInstance();
|
||||||
|
await checkHAProxy(haproxy);
|
||||||
try {
|
|
||||||
await checkHAProxy(haproxy);
|
|
||||||
} catch (error) {
|
|
||||||
return 'Error: HAProxy is not running';
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const data = {
|
const data = {
|
||||||
|
|||||||
@@ -49,11 +49,7 @@ export async function completeTransaction(transactionId) {
|
|||||||
}
|
}
|
||||||
export async function deleteProxy({ id }) {
|
export async function deleteProxy({ id }) {
|
||||||
const haproxy = await haproxyInstance();
|
const haproxy = await haproxyInstance();
|
||||||
try {
|
await checkHAProxy(haproxy);
|
||||||
await checkHAProxy(haproxy);
|
|
||||||
} catch (error) {
|
|
||||||
return 'Error: HAProxy is not running';
|
|
||||||
}
|
|
||||||
|
|
||||||
let transactionId;
|
let transactionId;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ export default async function () {
|
|||||||
try {
|
try {
|
||||||
return await configureHAProxy();
|
return await configureHAProxy();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(error.response?.body || error);
|
|
||||||
return ErrorHandler(error.response?.body || error);
|
return ErrorHandler(error.response?.body || error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -243,9 +243,7 @@
|
|||||||
|
|
||||||
const url = `/applications/${id}/configuration/repository.json`;
|
const url = `/applications/${id}/configuration/repository.json`;
|
||||||
try {
|
try {
|
||||||
const repository = `${selected.group.full_path.replace('-personal', '')}/${
|
const repository = selected.project.path_with_namespace;
|
||||||
selected.project.name
|
|
||||||
}`;
|
|
||||||
await post(url, {
|
await post(url, {
|
||||||
repository,
|
repository,
|
||||||
branch: selected.branch.name,
|
branch: selected.branch.name,
|
||||||
|
|||||||
@@ -66,15 +66,10 @@ export const post: RequestHandler = async (event) => {
|
|||||||
const { fqdn, isRegistrationEnabled, dualCerts, minPort, maxPort } = await event.request.json();
|
const { fqdn, isRegistrationEnabled, dualCerts, minPort, maxPort } = await event.request.json();
|
||||||
try {
|
try {
|
||||||
const { id } = await db.listSettings();
|
const { id } = await db.listSettings();
|
||||||
if (isRegistrationEnabled) {
|
await db.prisma.setting.update({ where: { id }, data: { isRegistrationEnabled, dualCerts } });
|
||||||
await db.prisma.setting.update({ where: { id }, data: { isRegistrationEnabled } });
|
|
||||||
}
|
|
||||||
if (fqdn) {
|
if (fqdn) {
|
||||||
await db.prisma.setting.update({ where: { id }, data: { fqdn } });
|
await db.prisma.setting.update({ where: { id }, data: { fqdn } });
|
||||||
}
|
}
|
||||||
if (dualCerts) {
|
|
||||||
await db.prisma.setting.update({ where: { id }, data: { dualCerts } });
|
|
||||||
}
|
|
||||||
if (minPort && maxPort) {
|
if (minPort && maxPort) {
|
||||||
await db.prisma.setting.update({ where: { id }, data: { minPort, maxPort } });
|
await db.prisma.setting.update({ where: { id }, data: { minPort, maxPort } });
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user