diff --git a/package.json b/package.json index ac2396dab..5bfd9fa40 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "coolify", "description": "An open-source & self-hostable Heroku / Netlify alternative.", - "version": "2.4.0", + "version": "2.4.1", "license": "AGPL-3.0", "scripts": { "dev": "docker-compose -f docker-compose-dev.yaml up -d && cross-env NODE_ENV=development & svelte-kit dev", diff --git a/src/lib/database/common.ts b/src/lib/database/common.ts index 287dcd834..9d588fcc4 100644 --- a/src/lib/database/common.ts +++ b/src/lib/database/common.ts @@ -159,6 +159,7 @@ export function generateDatabaseConfiguration(database) { // url: `psql://${dbUser}:${dbUserPassword}@${id}:${isPublic ? port : 5432}/${defaultDatabase}`, privatePort: 5432, environmentVariables: { + POSTGRESQL_POSTGRES_PASSWORD: rootUserPassword, POSTGRESQL_PASSWORD: dbUserPassword, POSTGRESQL_USERNAME: dbUser, POSTGRESQL_DATABASE: defaultDatabase diff --git a/src/lib/database/databases.ts b/src/lib/database/databases.ts index 2179b5479..9132fc2b2 100644 --- a/src/lib/database/databases.ts +++ b/src/lib/database/databases.ts @@ -138,7 +138,7 @@ export async function stopDatabase(database) { return everStarted; } -export async function updatePasswordInDb(database, user, newPassword) { +export async function updatePasswordInDb(database, user, newPassword, isRoot) { const { id, type, @@ -157,9 +157,15 @@ export async function updatePasswordInDb(database, user, newPassword) { `DOCKER_HOST=${host} docker exec ${id} mysql -u ${rootUser} -p${rootUserPassword} -e \"ALTER USER '${user}'@'%' IDENTIFIED WITH caching_sha2_password BY '${newPassword}';\"` ); } else if (type === 'postgresql') { - await asyncExecShell( - `DOCKER_HOST=${host} docker exec ${id} psql postgresql://${dbUser}:${dbUserPassword}@${id}:5432/${defaultDatabase} -c "ALTER role ${user} WITH PASSWORD '${newPassword}'"` - ); + if (isRoot) { + await asyncExecShell( + `DOCKER_HOST=${host} docker exec ${id} psql postgresql://postgres:${rootUserPassword}@${id}:5432/${defaultDatabase} -c "ALTER role postgres WITH PASSWORD '${newPassword}'"` + ); + } else { + await asyncExecShell( + `DOCKER_HOST=${host} docker exec ${id} psql postgresql://${dbUser}:${dbUserPassword}@${id}:5432/${defaultDatabase} -c "ALTER role ${user} WITH PASSWORD '${newPassword}'"` + ); + } } else if (type === 'mongodb') { await asyncExecShell( `DOCKER_HOST=${host} docker exec ${id} mongo 'mongodb://${rootUser}:${rootUserPassword}@${id}:27017/admin?readPreference=primary&ssl=false' --eval "db.changeUserPassword('${user}','${newPassword}')"` diff --git a/src/lib/database/services.ts b/src/lib/database/services.ts index b4d355946..0aec569b6 100644 --- a/src/lib/database/services.ts +++ b/src/lib/database/services.ts @@ -165,7 +165,7 @@ export async function configureServiceType({ id, type }) { } }); } else if (type === 'ghost') { - const defaultEmail = `${cuid()}@coolify.io`; + const defaultEmail = `${cuid()}@example.com`; const defaultPassword = encrypt(generatePassword()); const mariadbUser = cuid(); const mariadbPassword = encrypt(generatePassword()); diff --git a/src/routes/databases/[id]/_Databases/_Databases.svelte b/src/routes/databases/[id]/_Databases/_Databases.svelte index 731dcd80e..c441534e4 100644 --- a/src/routes/databases/[id]/_Databases/_Databases.svelte +++ b/src/routes/databases/[id]/_Databases/_Databases.svelte @@ -49,7 +49,7 @@ $: databaseUrl = generateUrl(); function generateUrl() { - return browser + return (databaseUrl = browser ? `${database.type}://${ databaseDbUser ? databaseDbUser + ':' : '' }${databaseDbUserPassword}@${ @@ -59,7 +59,7 @@ : window.location.hostname : database.id }:${isPublic ? database.publicPort : privatePort}/${databaseDefault}` - : 'Loading...'; + : 'Loading...'); } async function changeSettings(name) { @@ -200,7 +200,7 @@ name="url" readonly disabled - value={publicLoading || loading ? 'Loading...' : databaseUrl} + value={publicLoading || loading ? 'Loading...' : generateUrl()} /> diff --git a/src/routes/databases/[id]/_Databases/_PostgreSQL.svelte b/src/routes/databases/[id]/_Databases/_PostgreSQL.svelte index d59f6bbbc..343ad74d6 100644 --- a/src/routes/databases/[id]/_Databases/_PostgreSQL.svelte +++ b/src/routes/databases/[id]/_Databases/_PostgreSQL.svelte @@ -21,6 +21,19 @@ bind:value={database.defaultDatabase} /> +
+ + +
{ const database = await db.getDatabase({ id, teamId }); if (isRunning) { if (database.dbUserPassword !== dbUserPassword) { - await updatePasswordInDb(database, dbUser, dbUserPassword); + await updatePasswordInDb(database, dbUser, dbUserPassword, false); } else if (database.rootUserPassword !== rootUserPassword) { - await updatePasswordInDb(database, rootUser, rootUserPassword); + await updatePasswordInDb(database, rootUser, rootUserPassword, true); } } await db.updateDatabase({ diff --git a/src/routes/services/[id]/ghost/start.json.ts b/src/routes/services/[id]/ghost/start.json.ts index 9e0b4ba11..41c5e95d4 100644 --- a/src/routes/services/[id]/ghost/start.json.ts +++ b/src/routes/services/[id]/ghost/start.json.ts @@ -44,12 +44,15 @@ export const post: RequestHandler = async (event) => { const { workdir } = await createDirectories({ repository: type, buildId: id }); const image = getServiceImage(type); const domain = getDomain(fqdn); + const isHttps = fqdn.startsWith('https://'); const config = { ghost: { image: `${image}:${version}`, volume: `${id}-ghost:/bitnami/ghost`, environmentVariables: { + url: fqdn, GHOST_HOST: domain, + GHOST_ENABLE_HTTPS: isHttps ? 'yes' : 'no', GHOST_EMAIL: defaultEmail, GHOST_PASSWORD: defaultPassword, GHOST_DATABASE_HOST: `${id}-mariadb`,