fix: new resource selection view
fix: new services
This commit is contained in:
@@ -78,7 +78,7 @@ class ServicesGenerate extends Command
|
|||||||
if ($logo->count() > 0) {
|
if ($logo->count() > 0) {
|
||||||
$logo = str($logo[0])->after('# logo:')->trim()->value();
|
$logo = str($logo[0])->after('# logo:')->trim()->value();
|
||||||
} else {
|
} else {
|
||||||
$logo = 'svgs/unknown.svg';
|
$logo = 'svgs/coolify.png';
|
||||||
}
|
}
|
||||||
$minversion = collect(preg_grep('/^# minversion:/', explode("\n", $content)))->values();
|
$minversion = collect(preg_grep('/^# minversion:/', explode("\n", $content)))->values();
|
||||||
if ($minversion->count() > 0) {
|
if ($minversion->count() > 0) {
|
||||||
|
|||||||
@@ -94,10 +94,10 @@ class Select extends Component
|
|||||||
{
|
{
|
||||||
$services = get_service_templates(true);
|
$services = get_service_templates(true);
|
||||||
$services = collect($services)->map(function ($service, $key) {
|
$services = collect($services)->map(function ($service, $key) {
|
||||||
return array_merge($service, [
|
return [
|
||||||
'name' => str($key)->headline(),
|
'name' => str($key)->headline(),
|
||||||
'logo' => asset($service['logo']),
|
'logo' => asset(data_get($service, 'logo', 'svgs/unknown.svg')),
|
||||||
]);
|
] + (array) $service;
|
||||||
})->all();
|
})->all();
|
||||||
$gitBasedApplications = [
|
$gitBasedApplications = [
|
||||||
[
|
[
|
||||||
@@ -256,6 +256,7 @@ class Select extends Component
|
|||||||
|
|
||||||
public function setType(string $type)
|
public function setType(string $type)
|
||||||
{
|
{
|
||||||
|
$type = str($type)->lower()->value();
|
||||||
if ($this->loading) {
|
if ($this->loading) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -283,9 +283,63 @@ class Service extends BaseModel
|
|||||||
$fields = collect([]);
|
$fields = collect([]);
|
||||||
$applications = $this->applications()->get();
|
$applications = $this->applications()->get();
|
||||||
foreach ($applications as $application) {
|
foreach ($applications as $application) {
|
||||||
$image = str($application->image)->before(':')->value();
|
$image = str($application->image)->before(':');
|
||||||
|
if ($image->isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
switch ($image) {
|
switch ($image) {
|
||||||
case str($image)?->contains('invoiceninja'):
|
case $image->contains('litellm'):
|
||||||
|
$data = collect([]);
|
||||||
|
$username = $this->environment_variables()->where('key', 'SERVICE_USER_UI')->first();
|
||||||
|
$password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_UI')->first();
|
||||||
|
if ($username) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Username' => [
|
||||||
|
'key' => data_get($username, 'key'),
|
||||||
|
'value' => data_get($username, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($password) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Password' => [
|
||||||
|
'key' => data_get($password, 'key'),
|
||||||
|
'value' => data_get($password, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
'isPassword' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$fields->put('Litellm', $data->toArray());
|
||||||
|
break;
|
||||||
|
case $image->contains('langfuse'):
|
||||||
|
$data = collect([]);
|
||||||
|
$email = $this->environment_variables()->where('key', 'LANGFUSE_INIT_USER_EMAIL')->first();
|
||||||
|
if ($email) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Admin Email' => [
|
||||||
|
'key' => 'LANGFUSE_INIT_USER_EMAIL',
|
||||||
|
'value' => data_get($email, 'value'),
|
||||||
|
'rules' => 'required|email',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_LANGFUSE')->first();
|
||||||
|
ray('password', $password);
|
||||||
|
if ($password) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Admin Password' => [
|
||||||
|
'key' => 'LANGFUSE_INIT_USER_PASSWORD',
|
||||||
|
'value' => data_get($password, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
'isPassword' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$fields->put('Langfuse', $data->toArray());
|
||||||
|
break;
|
||||||
|
case $image->contains('invoiceninja'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$email = $this->environment_variables()->where('key', 'IN_USER_EMAIL')->first();
|
$email = $this->environment_variables()->where('key', 'IN_USER_EMAIL')->first();
|
||||||
$data = $data->merge([
|
$data = $data->merge([
|
||||||
@@ -306,7 +360,7 @@ class Service extends BaseModel
|
|||||||
]);
|
]);
|
||||||
$fields->put('Invoice Ninja', $data->toArray());
|
$fields->put('Invoice Ninja', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('argilla'):
|
case $image->contains('argilla'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$api_key = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_APIKEY')->first();
|
$api_key = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_APIKEY')->first();
|
||||||
$data = $data->merge([
|
$data = $data->merge([
|
||||||
@@ -344,7 +398,7 @@ class Service extends BaseModel
|
|||||||
]);
|
]);
|
||||||
$fields->put('Argilla', $data->toArray());
|
$fields->put('Argilla', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('rabbitmq'):
|
case $image->contains('rabbitmq'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$host_port = $this->environment_variables()->where('key', 'PORT')->first();
|
$host_port = $this->environment_variables()->where('key', 'PORT')->first();
|
||||||
$username = $this->environment_variables()->where('key', 'SERVICE_USER_RABBITMQ')->first();
|
$username = $this->environment_variables()->where('key', 'SERVICE_USER_RABBITMQ')->first();
|
||||||
@@ -379,7 +433,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('RabbitMQ', $data->toArray());
|
$fields->put('RabbitMQ', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('tolgee'):
|
case $image->contains('tolgee'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_TOLGEE')->first();
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_TOLGEE')->first();
|
||||||
$data = $data->merge([
|
$data = $data->merge([
|
||||||
@@ -402,7 +456,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('Tolgee', $data->toArray());
|
$fields->put('Tolgee', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('logto'):
|
case $image->contains('logto'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$logto_endpoint = $this->environment_variables()->where('key', 'LOGTO_ENDPOINT')->first();
|
$logto_endpoint = $this->environment_variables()->where('key', 'LOGTO_ENDPOINT')->first();
|
||||||
$logto_admin_endpoint = $this->environment_variables()->where('key', 'LOGTO_ADMIN_ENDPOINT')->first();
|
$logto_admin_endpoint = $this->environment_variables()->where('key', 'LOGTO_ADMIN_ENDPOINT')->first();
|
||||||
@@ -426,7 +480,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('Logto', $data->toArray());
|
$fields->put('Logto', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('unleash-server'):
|
case $image->contains('unleash-server'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_UNLEASH')->first();
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_UNLEASH')->first();
|
||||||
$data = $data->merge([
|
$data = $data->merge([
|
||||||
@@ -449,7 +503,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('Unleash', $data->toArray());
|
$fields->put('Unleash', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('grafana'):
|
case $image->contains('grafana'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_GRAFANA')->first();
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_GRAFANA')->first();
|
||||||
$data = $data->merge([
|
$data = $data->merge([
|
||||||
@@ -472,7 +526,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('Grafana', $data->toArray());
|
$fields->put('Grafana', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('directus'):
|
case $image->contains('directus'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$admin_email = $this->environment_variables()->where('key', 'ADMIN_EMAIL')->first();
|
$admin_email = $this->environment_variables()->where('key', 'ADMIN_EMAIL')->first();
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_ADMIN')->first();
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_ADMIN')->first();
|
||||||
@@ -498,7 +552,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('Directus', $data->toArray());
|
$fields->put('Directus', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('kong'):
|
case $image->contains('kong'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$dashboard_user = $this->environment_variables()->where('key', 'SERVICE_USER_ADMIN')->first();
|
$dashboard_user = $this->environment_variables()->where('key', 'SERVICE_USER_ADMIN')->first();
|
||||||
$dashboard_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_ADMIN')->first();
|
$dashboard_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_ADMIN')->first();
|
||||||
@@ -522,7 +576,7 @@ class Service extends BaseModel
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
$fields->put('Supabase', $data->toArray());
|
$fields->put('Supabase', $data->toArray());
|
||||||
case str($image)?->contains('minio'):
|
case $image->contains('minio'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$console_url = $this->environment_variables()->where('key', 'MINIO_BROWSER_REDIRECT_URL')->first();
|
$console_url = $this->environment_variables()->where('key', 'MINIO_BROWSER_REDIRECT_URL')->first();
|
||||||
$s3_api_url = $this->environment_variables()->where('key', 'MINIO_SERVER_URL')->first();
|
$s3_api_url = $this->environment_variables()->where('key', 'MINIO_SERVER_URL')->first();
|
||||||
@@ -575,7 +629,7 @@ class Service extends BaseModel
|
|||||||
|
|
||||||
$fields->put('MinIO', $data->toArray());
|
$fields->put('MinIO', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('weblate'):
|
case $image->contains('weblate'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$admin_email = $this->environment_variables()->where('key', 'WEBLATE_ADMIN_EMAIL')->first();
|
$admin_email = $this->environment_variables()->where('key', 'WEBLATE_ADMIN_EMAIL')->first();
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_WEBLATE')->first();
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_WEBLATE')->first();
|
||||||
@@ -601,7 +655,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('Weblate', $data->toArray());
|
$fields->put('Weblate', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('meilisearch'):
|
case $image->contains('meilisearch'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$SERVICE_PASSWORD_MEILISEARCH = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_MEILISEARCH')->first();
|
$SERVICE_PASSWORD_MEILISEARCH = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_MEILISEARCH')->first();
|
||||||
if ($SERVICE_PASSWORD_MEILISEARCH) {
|
if ($SERVICE_PASSWORD_MEILISEARCH) {
|
||||||
@@ -615,7 +669,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('Meilisearch', $data->toArray());
|
$fields->put('Meilisearch', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)?->contains('ghost'):
|
case $image->contains('ghost'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$MAIL_OPTIONS_AUTH_PASS = $this->environment_variables()->where('key', 'MAIL_OPTIONS_AUTH_PASS')->first();
|
$MAIL_OPTIONS_AUTH_PASS = $this->environment_variables()->where('key', 'MAIL_OPTIONS_AUTH_PASS')->first();
|
||||||
$MAIL_OPTIONS_AUTH_USER = $this->environment_variables()->where('key', 'MAIL_OPTIONS_AUTH_USER')->first();
|
$MAIL_OPTIONS_AUTH_USER = $this->environment_variables()->where('key', 'MAIL_OPTIONS_AUTH_USER')->first();
|
||||||
@@ -675,45 +729,8 @@ class Service extends BaseModel
|
|||||||
|
|
||||||
$fields->put('Ghost', $data->toArray());
|
$fields->put('Ghost', $data->toArray());
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
$data = collect([]);
|
|
||||||
$admin_user = $this->environment_variables()->where('key', 'SERVICE_USER_ADMIN')->first();
|
|
||||||
// Chaskiq
|
|
||||||
$admin_email = $this->environment_variables()->where('key', 'ADMIN_EMAIL')->first();
|
|
||||||
|
|
||||||
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_ADMIN')->first();
|
case $image->contains('vaultwarden'):
|
||||||
if ($admin_user) {
|
|
||||||
$data = $data->merge([
|
|
||||||
'User' => [
|
|
||||||
'key' => 'SERVICE_USER_ADMIN',
|
|
||||||
'value' => data_get($admin_user, 'value', 'admin'),
|
|
||||||
'readonly' => true,
|
|
||||||
'rules' => 'required',
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
if ($admin_password) {
|
|
||||||
$data = $data->merge([
|
|
||||||
'Password' => [
|
|
||||||
'key' => 'SERVICE_PASSWORD_ADMIN',
|
|
||||||
'value' => data_get($admin_password, 'value'),
|
|
||||||
'rules' => 'required',
|
|
||||||
'isPassword' => true,
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
if ($admin_email) {
|
|
||||||
$data = $data->merge([
|
|
||||||
'Email' => [
|
|
||||||
'key' => 'ADMIN_EMAIL',
|
|
||||||
'value' => data_get($admin_email, 'value'),
|
|
||||||
'rules' => 'required|email',
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
$fields->put('Admin', $data->toArray());
|
|
||||||
break;
|
|
||||||
case str($image)?->contains('vaultwarden'):
|
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
|
|
||||||
$DATABASE_URL = $this->environment_variables()->where('key', 'DATABASE_URL')->first();
|
$DATABASE_URL = $this->environment_variables()->where('key', 'DATABASE_URL')->first();
|
||||||
@@ -779,7 +796,7 @@ class Service extends BaseModel
|
|||||||
|
|
||||||
$fields->put('Vaultwarden', $data);
|
$fields->put('Vaultwarden', $data);
|
||||||
break;
|
break;
|
||||||
case str($image)->contains('gitlab/gitlab'):
|
case $image->contains('gitlab/gitlab'):
|
||||||
$password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_GITLAB')->first();
|
$password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_GITLAB')->first();
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
if ($password) {
|
if ($password) {
|
||||||
@@ -803,7 +820,7 @@ class Service extends BaseModel
|
|||||||
|
|
||||||
$fields->put('GitLab', $data->toArray());
|
$fields->put('GitLab', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)->contains('code-server'):
|
case $image->contains('code-server'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_64_PASSWORDCODESERVER')->first();
|
$password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_64_PASSWORDCODESERVER')->first();
|
||||||
if ($password) {
|
if ($password) {
|
||||||
@@ -829,7 +846,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('Code Server', $data->toArray());
|
$fields->put('Code Server', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)->contains('elestio/strapi'):
|
case $image->contains('elestio/strapi'):
|
||||||
$data = collect([]);
|
$data = collect([]);
|
||||||
$license = $this->environment_variables()->where('key', 'STRAPI_LICENSE')->first();
|
$license = $this->environment_variables()->where('key', 'STRAPI_LICENSE')->first();
|
||||||
if ($license) {
|
if ($license) {
|
||||||
@@ -852,15 +869,55 @@ class Service extends BaseModel
|
|||||||
|
|
||||||
$fields->put('Strapi', $data->toArray());
|
$fields->put('Strapi', $data->toArray());
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
$data = collect([]);
|
||||||
|
$admin_user = $this->environment_variables()->where('key', 'SERVICE_USER_ADMIN')->first();
|
||||||
|
// Chaskiq
|
||||||
|
$admin_email = $this->environment_variables()->where('key', 'ADMIN_EMAIL')->first();
|
||||||
|
|
||||||
|
$admin_password = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_ADMIN')->first();
|
||||||
|
if ($admin_user) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'User' => [
|
||||||
|
'key' => 'SERVICE_USER_ADMIN',
|
||||||
|
'value' => data_get($admin_user, 'value', 'admin'),
|
||||||
|
'readonly' => true,
|
||||||
|
'rules' => 'required',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($admin_password) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Password' => [
|
||||||
|
'key' => 'SERVICE_PASSWORD_ADMIN',
|
||||||
|
'value' => data_get($admin_password, 'value'),
|
||||||
|
'rules' => 'required',
|
||||||
|
'isPassword' => true,
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
if ($admin_email) {
|
||||||
|
$data = $data->merge([
|
||||||
|
'Email' => [
|
||||||
|
'key' => 'ADMIN_EMAIL',
|
||||||
|
'value' => data_get($admin_email, 'value'),
|
||||||
|
'rules' => 'required|email',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
$fields->put('Admin', $data->toArray());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$databases = $this->databases()->get();
|
$databases = $this->databases()->get();
|
||||||
|
|
||||||
foreach ($databases as $database) {
|
foreach ($databases as $database) {
|
||||||
$image = str($database->image)->before(':')->value();
|
$image = str($database->image)->before(':');
|
||||||
|
if ($image->isEmpty()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
switch ($image) {
|
switch ($image) {
|
||||||
case str($image)->contains('postgres'):
|
case $image->contains('postgres'):
|
||||||
$userVariables = ['SERVICE_USER_POSTGRES', 'SERVICE_USER_POSTGRESQL'];
|
$userVariables = ['SERVICE_USER_POSTGRES', 'SERVICE_USER_POSTGRESQL'];
|
||||||
$passwordVariables = ['SERVICE_PASSWORD_POSTGRES', 'SERVICE_PASSWORD_POSTGRESQL'];
|
$passwordVariables = ['SERVICE_PASSWORD_POSTGRES', 'SERVICE_PASSWORD_POSTGRESQL'];
|
||||||
$dbNameVariables = ['POSTGRESQL_DATABASE', 'POSTGRES_DB'];
|
$dbNameVariables = ['POSTGRESQL_DATABASE', 'POSTGRES_DB'];
|
||||||
@@ -898,7 +955,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('PostgreSQL', $data->toArray());
|
$fields->put('PostgreSQL', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)->contains('mysql'):
|
case $image->contains('mysql'):
|
||||||
$userVariables = ['SERVICE_USER_MYSQL', 'SERVICE_USER_WORDPRESS', 'MYSQL_USER'];
|
$userVariables = ['SERVICE_USER_MYSQL', 'SERVICE_USER_WORDPRESS', 'MYSQL_USER'];
|
||||||
$passwordVariables = ['SERVICE_PASSWORD_MYSQL', 'SERVICE_PASSWORD_WORDPRESS', 'MYSQL_PASSWORD'];
|
$passwordVariables = ['SERVICE_PASSWORD_MYSQL', 'SERVICE_PASSWORD_WORDPRESS', 'MYSQL_PASSWORD'];
|
||||||
$rootPasswordVariables = ['SERVICE_PASSWORD_MYSQLROOT', 'SERVICE_PASSWORD_ROOT'];
|
$rootPasswordVariables = ['SERVICE_PASSWORD_MYSQLROOT', 'SERVICE_PASSWORD_ROOT'];
|
||||||
@@ -948,7 +1005,7 @@ class Service extends BaseModel
|
|||||||
}
|
}
|
||||||
$fields->put('MySQL', $data->toArray());
|
$fields->put('MySQL', $data->toArray());
|
||||||
break;
|
break;
|
||||||
case str($image)->contains('mariadb'):
|
case $image->contains('mariadb'):
|
||||||
$userVariables = ['SERVICE_USER_MARIADB', 'SERVICE_USER_WORDPRESS', '_APP_DB_USER', 'SERVICE_USER_MYSQL', 'MYSQL_USER'];
|
$userVariables = ['SERVICE_USER_MARIADB', 'SERVICE_USER_WORDPRESS', '_APP_DB_USER', 'SERVICE_USER_MYSQL', 'MYSQL_USER'];
|
||||||
$passwordVariables = ['SERVICE_PASSWORD_MARIADB', 'SERVICE_PASSWORD_WORDPRESS', '_APP_DB_PASS', 'MYSQL_PASSWORD'];
|
$passwordVariables = ['SERVICE_PASSWORD_MARIADB', 'SERVICE_PASSWORD_WORDPRESS', '_APP_DB_PASS', 'MYSQL_PASSWORD'];
|
||||||
$rootPasswordVariables = ['SERVICE_PASSWORD_MARIADBROOT', 'SERVICE_PASSWORD_ROOT', '_APP_DB_ROOT_PASS', 'MYSQL_ROOT_PASSWORD'];
|
$rootPasswordVariables = ['SERVICE_PASSWORD_MARIADBROOT', 'SERVICE_PASSWORD_ROOT', '_APP_DB_ROOT_PASS', 'MYSQL_ROOT_PASSWORD'];
|
||||||
|
|||||||
BIN
public/svgs/coolify.png
Normal file
BIN
public/svgs/coolify.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
5
public/svgs/tolgee.svg
Normal file
5
public/svgs/tolgee.svg
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 200 200" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
style="fill:#EC407A;fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||||
|
<path d="M97.16,7.27a16.94,16.94,0,0,0-1.9,24.47,16.36,16.36,0,0,0,5,3.83,3.23,3.23,0,0,1-2.9,5.77,23.14,23.14,0,0,1-11.41-13C73.83,31.1,63.46,37.09,52.82,46.51c-27.44,24.3-34.35,61.74-16.38,85.26-4.57,5.79-8,12.22-8.9,18.69a20.88,20.88,0,0,0,5.62,18c9.18,9.61,21.42,7.13,31.26,5.14,6.58-1.34,12.8-2.6,16.5-.23,3.22,2.07,3.47,3.87,3.61,4.45,2.1,9.32-5.79,13.89-7.67,16.27a1.48,1.48,0,0,0,1.13,2.4c3.48,0,9-1.18,12.34-4.08s7.16-7.9,5.89-16.32c-.08-.5-.18-1-.32-1.58-.86-3.35-3.1-7.57-8.61-11.09-7.72-4.95-17-3.07-25.22-1.41-9.76,2-16,2.85-20.37-1.71a9.13,9.13,0,0,1-2.46-8.19c.54-3.77,2.65-7.89,5.62-11.86,21.71,16.89,56.87,13.47,82.67-9.39a75.34,75.34,0,0,0,20.81-28.09A23.14,23.14,0,0,1,134.8,89a3.23,3.23,0,0,1,6.08-2.19,16.37,16.37,0,0,0,3.2,5.39,16.85,16.85,0,1,0,11.48-28,3.23,3.23,0,0,1-.51-6.44,23.41,23.41,0,0,1,12.88,2.69c2.6-14.08,3.34-31.41-2.06-37.51-4.08-4.61-20.62-8-35.18-7.76A23.48,23.48,0,0,1,130.8,25a3.23,3.23,0,0,1-6.33-1.28A16.94,16.94,0,0,0,97.16,7.27Zm63.25,21a5.29,5.29,0,0,1-.57,6.19c-1.29,1.14-2.72-.51-4.1-2.06s-3.1-3.42-1.81-4.56A5.74,5.74,0,0,1,160.41,28.27Z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -4,7 +4,6 @@
|
|||||||
'hover:border-l-red-500 cursor-not-allowed' => $upgrade,
|
'hover:border-l-red-500 cursor-not-allowed' => $upgrade,
|
||||||
])>
|
])>
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
|
|
||||||
{{ $logo }}
|
{{ $logo }}
|
||||||
<div class="flex flex-col pl-2 ">
|
<div class="flex flex-col pl-2 ">
|
||||||
<div class="dark:text-white text-md">
|
<div class="dark:text-white text-md">
|
||||||
@@ -19,4 +18,8 @@
|
|||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@isset($documentation)
|
||||||
|
<div class="flex-1"></div>
|
||||||
|
{{ $documentation }}
|
||||||
|
@endisset
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -48,7 +48,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h2 x-show="filteredDatabases.length > 0" class="py-4"> Databases </h2>
|
<h2 x-show="filteredDatabases.length > 0" class="py-4"> Databases </h2>
|
||||||
<div class="grid justify-start grid-cols-1 gap-4 text-left xl:grid-cols-2">
|
<div class="grid justify-start grid-cols-1 gap-4 text-left xl:grid-cols-2">
|
||||||
<template x-for="database in filteredDatabases" :key="database.id">
|
<template x-for="database in filteredDatabases" :key="database.id">
|
||||||
@@ -78,41 +77,44 @@
|
|||||||
|
|
||||||
<div class="grid justify-start grid-cols-1 gap-4 text-left xl:grid-cols-2">
|
<div class="grid justify-start grid-cols-1 gap-4 text-left xl:grid-cols-2">
|
||||||
<template x-for="service in filteredServices" :key="service.name">
|
<template x-for="service in filteredServices" :key="service.name">
|
||||||
<x-resource-view @click="setType('one-click-service-' + service.name)">
|
<div x-on:click="setType('one-click-service-' + service.name)">
|
||||||
<x-slot:title>
|
<x-resource-view>
|
||||||
<template x-if="service.name">
|
<x-slot:title>
|
||||||
<span x-text="service.name"></span>
|
<template x-if="service.name">
|
||||||
</template>
|
<span x-text="service.name"></span>
|
||||||
</x-slot>
|
</template>
|
||||||
<x-slot:description>
|
</x-slot>
|
||||||
<template x-if="service.slogan">
|
<x-slot:description>
|
||||||
<span x-text="service.slogan"></span>
|
<template x-if="service.slogan">
|
||||||
</template>
|
<span x-text="service.slogan"></span>
|
||||||
</x-slot>
|
</template>
|
||||||
<x-slot:logo>
|
</x-slot>
|
||||||
<template x-if="service.logo">
|
<x-slot:logo>
|
||||||
<img class="w-[4.5rem] aspect-square h-[4.5rem] p-2 transition-all duration-200 opacity-30 grayscale group-hover:grayscale-0 group-hover:opacity-100"
|
<template x-if="service.logo">
|
||||||
:src='service.logo'>
|
<img class="w-[4.5rem] aspect-square h-[4.5rem] p-2 transition-all duration-200 opacity-30 grayscale group-hover:grayscale-0 group-hover:opacity-100"
|
||||||
</template>
|
:src='service.logo'>
|
||||||
</x-slot:logo>
|
</template>
|
||||||
<x-slot:documentation>
|
</x-slot:logo>
|
||||||
<template x-show="service.documentation">
|
<x-slot:documentation>
|
||||||
<div>
|
<template x-if="service.documentation">
|
||||||
<div class="flex-1"></div>
|
<div class="flex items-center px-2" title="Read the documentation.">
|
||||||
<div class="flex items-center px-2 " title="Read the documentation.">
|
|
||||||
<a class="p-2 rounded hover:bg-coolgray-200 hover:no-underline group-hover:dark:text-white text-neutral-600"
|
<a class="p-2 rounded hover:bg-coolgray-200 hover:no-underline group-hover:dark:text-white text-neutral-600"
|
||||||
onclick="event.stopPropagation()" :href="service.documentation"
|
onclick="event.stopPropagation()" :href="service.documentation"
|
||||||
target="_blank">
|
target="_blank">
|
||||||
Docs
|
Docs
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</template>
|
||||||
</template>
|
</x-slot:documentation>
|
||||||
</x-slot:documentation>
|
</x-resource-view>
|
||||||
</x-resource-view>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div
|
||||||
|
x-show="filteredGitBasedApplications.length === 0 && filteredDockerBasedApplications.length === 0 && filteredDatabases.length === 0 && filteredServices.length === 0 && loading === false">
|
||||||
|
<div>No resources found.</div>
|
||||||
|
</div>
|
||||||
<script>
|
<script>
|
||||||
function sortFn(a, b) {
|
function sortFn(a, b) {
|
||||||
return a.name.localeCompare(b.name)
|
return a.name.localeCompare(b.name)
|
||||||
|
|||||||
@@ -4,15 +4,9 @@
|
|||||||
# logo: svgs/langfuse.png
|
# logo: svgs/langfuse.png
|
||||||
# port: 3000
|
# port: 3000
|
||||||
|
|
||||||
version: "3"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
pg_data: null
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
langfuse:
|
langfuse:
|
||||||
image: langfuse/langfuse:2
|
image: langfuse/langfuse:2
|
||||||
restart: always
|
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_LANGFUSE_3000
|
- SERVICE_FQDN_LANGFUSE_3000
|
||||||
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse}
|
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse}
|
||||||
@@ -23,7 +17,14 @@ services:
|
|||||||
- NEXTAUTH_SECRET=${SERVICE_BASE64_64_NEXTAUTHSECRET}
|
- NEXTAUTH_SECRET=${SERVICE_BASE64_64_NEXTAUTHSECRET}
|
||||||
- TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false}
|
- TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false}
|
||||||
- LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false}
|
- LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false}
|
||||||
- HOSTNAME=0.0.0.0
|
- HOSTNAME=${HOSTNAME:-0.0.0.0}
|
||||||
|
- LANGFUSE_INIT_USER_NAME=${LANGFUSE_INIT_USER_NAME:-Admin}
|
||||||
|
- LANGFUSE_INIT_USER_EMAIL=${LANGFUSE_INIT_USER_EMAIL:-admin@example.com}
|
||||||
|
- LANGFUSE_INIT_USER_PASSWORD=${SERVICE_PASSWORD_LANGFUSE}
|
||||||
|
- LANGFUSE_INIT_ORG_ID=${LANGFUSE_INIT_ORG_ID:-my-org}
|
||||||
|
- LANGFUSE_INIT_ORG_NAME=${LANGFUSE_INIT_ORG_NAME:-My Org}
|
||||||
|
- LANGFUSE_INIT_PROJECT_ID=${LANGFUSE_INIT_PROJECT_ID:-my-project}
|
||||||
|
- LANGFUSE_INIT_PROJECT_NAME=${LANGFUSE_INIT_PROJECT_NAME:-My Project}
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
- CMD
|
- CMD
|
||||||
@@ -44,7 +45,7 @@ services:
|
|||||||
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
||||||
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
||||||
volumes:
|
volumes:
|
||||||
- "pg_data:/var/lib/postgresql/data"
|
- "pg-data:/var/lib/postgresql/data"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
- CMD-SHELL
|
- CMD-SHELL
|
||||||
|
|||||||
@@ -4,16 +4,9 @@
|
|||||||
# logo: svgs/litellm.svg
|
# logo: svgs/litellm.svg
|
||||||
# port: 4000
|
# port: 4000
|
||||||
|
|
||||||
version: "3"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
pg_data: null
|
|
||||||
redis_data: null
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
litellm:
|
litellm:
|
||||||
image: "ghcr.io/berriai/litellm-database:main-stable"
|
image: "ghcr.io/berriai/litellm-database:main-stable"
|
||||||
restart: always
|
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
postgres:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -21,23 +14,23 @@ services:
|
|||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_LITELLM_4000
|
- SERVICE_FQDN_LITELLM_4000
|
||||||
- LITELLM_LOG=ERROR
|
- LITELLM_LOG=${LITELLM_LOG:-ERROR}
|
||||||
- LITELLM_MODE=PRODUCTION
|
- LITELLM_MODE=${LITELLM_MODE:-PRODUCTION}
|
||||||
- "LITELLM_MASTER_KEY=${SERVICE_PASSWORD_MASTERKEY}"
|
- LITELLM_MASTER_KEY=${SERVICE_PASSWORD_MASTERKEY}
|
||||||
- "UI_USERNAME=${SERVICE_USER_UI}"
|
- UI_USERNAME=${SERVICE_USER_UI}
|
||||||
- "UI_PASSWORD=${SERVICE_PASSWORD_UI}"
|
- UI_PASSWORD=${SERVICE_PASSWORD_UI}
|
||||||
- "DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-litellm}"
|
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-litellm}
|
||||||
- REDIS_HOST=redis
|
- REDIS_HOST=${REDIS_HOST:-redis}
|
||||||
- REDIS_PORT=6379
|
- REDIS_PORT=${REDIS_PORT:-6379}
|
||||||
- "POSTGRES_USER=${SERVICE_USER_POSTGRES}"
|
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||||
- "POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}"
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
||||||
- "POSTGRES_DB=${POSTGRES_DB:-litellm}"
|
- POSTGRES_DB=${POSTGRES_DB:-litellm}
|
||||||
- "OPENAI_API_KEY=${OPENAI_API_KEY}"
|
- OPENAI_API_KEY=${OPENAI_API_KEY}
|
||||||
- "OPENAI_API_BASE=${OPENAI_API_BASE}"
|
- OPENAI_API_BASE=${OPENAI_API_BASE}
|
||||||
- "ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}"
|
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
|
||||||
- "ANTHROPIC_API_BASE=${ANTHROPIC_API_BASE}"
|
- ANTHROPIC_API_BASE=${ANTHROPIC_API_BASE}
|
||||||
- "VOYAGE_API_KEY=${VOYAGE_API_KEY}"
|
- VOYAGE_API_KEY=${VOYAGE_API_KEY}
|
||||||
- "VOYAGE_API_BASE=${VOYAGE_API_BASE}"
|
- VOYAGE_API_BASE=${VOYAGE_API_BASE}
|
||||||
volumes:
|
volumes:
|
||||||
- type: bind
|
- type: bind
|
||||||
source: ./litellm-config.yaml
|
source: ./litellm-config.yaml
|
||||||
@@ -154,7 +147,7 @@ services:
|
|||||||
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
||||||
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
||||||
volumes:
|
volumes:
|
||||||
- "pg_data:/var/lib/postgresql/data"
|
- "pg-data:/var/lib/postgresql/data"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
- CMD-SHELL
|
- CMD-SHELL
|
||||||
@@ -166,7 +159,7 @@ services:
|
|||||||
image: redis:7-alpine
|
image: redis:7-alpine
|
||||||
command: redis-server --appendonly yes
|
command: redis-server --appendonly yes
|
||||||
volumes:
|
volumes:
|
||||||
- redis_data:/data
|
- redis-data:/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "redis-cli", "ping"]
|
test: ["CMD", "redis-cli", "ping"]
|
||||||
interval: 5s
|
interval: 5s
|
||||||
|
|||||||
@@ -4,15 +4,9 @@
|
|||||||
# logo: svgs/prefect.png
|
# logo: svgs/prefect.png
|
||||||
# port: 4200
|
# port: 4200
|
||||||
|
|
||||||
version: "3"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
pg_data:
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
prefect:
|
prefect:
|
||||||
image: "prefecthq/prefect:3-latest"
|
image: "prefecthq/prefect:3-latest"
|
||||||
restart: always
|
|
||||||
depends_on:
|
depends_on:
|
||||||
postgresql:
|
postgresql:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -20,9 +14,9 @@ services:
|
|||||||
- SERVICE_FQDN_PREFECT_4200
|
- SERVICE_FQDN_PREFECT_4200
|
||||||
- PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-prefect}
|
- PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-prefect}
|
||||||
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
|
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
|
||||||
- PREFECT_EXPERIMENTAL_WARN=true
|
- PREFECT_EXPERIMENTAL_WARN=${PREFECT_EXPERIMENTAL_WARN:-false}
|
||||||
- PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY=true
|
- PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY=${PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY:-false}
|
||||||
- PREFECT_RUNNER_SERVER_ENABLE=true
|
- PREFECT_RUNNER_SERVER_ENABLE=${PREFECT_RUNNER_SERVER_ENABLE:-false}
|
||||||
- PREFECT_DEFAULT_WORK_POOL_NAME=${DEFAULT_POOL_NAME:-default}
|
- PREFECT_DEFAULT_WORK_POOL_NAME=${DEFAULT_POOL_NAME:-default}
|
||||||
command:
|
command:
|
||||||
- prefect
|
- prefect
|
||||||
@@ -43,9 +37,8 @@ services:
|
|||||||
retries: 3
|
retries: 3
|
||||||
postgresql:
|
postgresql:
|
||||||
image: "postgres:16-alpine"
|
image: "postgres:16-alpine"
|
||||||
restart: always
|
|
||||||
volumes:
|
volumes:
|
||||||
- "pg_data:/var/lib/postgresql/data"
|
- "pg-data:/var/lib/postgresql/data"
|
||||||
environment:
|
environment:
|
||||||
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
||||||
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
||||||
@@ -59,7 +52,6 @@ services:
|
|||||||
retries: 3
|
retries: 3
|
||||||
agent:
|
agent:
|
||||||
image: "prefecthq/prefect:3-python3.12"
|
image: "prefecthq/prefect:3-python3.12"
|
||||||
restart: always
|
|
||||||
depends_on:
|
depends_on:
|
||||||
prefect:
|
prefect:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
@@ -68,10 +60,10 @@ services:
|
|||||||
- prefect
|
- prefect
|
||||||
- worker
|
- worker
|
||||||
- start
|
- start
|
||||||
- "--pool=$${DEFAULT_POOL_NAME}"
|
- --pool=${DEFAULT_POOL_NAME}
|
||||||
- "--with-healthcheck"
|
- --with-healthcheck
|
||||||
- "--name=$${DEFAULT_WORKER_NAME}"
|
- --name=${DEFAULT_WORKER_NAME}
|
||||||
- "--limit=$${DEFAULT_POOL_LIMIT}"
|
- --limit=${DEFAULT_POOL_LIMIT}
|
||||||
environment:
|
environment:
|
||||||
- PREFECT_API_URL=http://prefect:4200/api
|
- PREFECT_API_URL=http://prefect:4200/api
|
||||||
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
|
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
|
||||||
|
|||||||
@@ -4,20 +4,14 @@
|
|||||||
# logo: svgs/qdrant.png
|
# logo: svgs/qdrant.png
|
||||||
# port: 6333
|
# port: 6333
|
||||||
|
|
||||||
version: "3"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
qdrant_storage: null
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
qdrant:
|
qdrant:
|
||||||
image: "qdrant/qdrant:latest"
|
image: "qdrant/qdrant:latest"
|
||||||
restart: always
|
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_QDRANT_6333
|
- SERVICE_FQDN_QDRANT_6333
|
||||||
- QDRANT__SERVICE__API_KEY=${SERVICE_PASSWORD_QDRANTAPIKEY}
|
- QDRANT__SERVICE__API_KEY=${SERVICE_PASSWORD_QDRANTAPIKEY}
|
||||||
volumes:
|
volumes:
|
||||||
- "qdrant_storage:/qdrant/storage"
|
- "qdrant-storage:/qdrant/storage"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
- CMD-SHELL
|
- CMD-SHELL
|
||||||
|
|||||||
@@ -4,24 +4,18 @@
|
|||||||
# logo: svgs/searxng.svg
|
# logo: svgs/searxng.svg
|
||||||
# port: 8080
|
# port: 8080
|
||||||
|
|
||||||
version: "3"
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
redis_data: null
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
searxng:
|
searxng:
|
||||||
image: searxng/searxng
|
image: searxng/searxng
|
||||||
restart: always
|
|
||||||
depends_on:
|
depends_on:
|
||||||
redis:
|
redis:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_SEARXNG_8080
|
- SERVICE_FQDN_SEARXNG_8080
|
||||||
- INSTANCE_NAME=coolify
|
- INSTANCE_NAME=${INSTANCE_NAME:-coolify}
|
||||||
- BASE_URL=${SERVICE_FQDN_SEARXNG_8080}
|
- BASE_URL=${SERVICE_FQDN_SEARXNG_8080}
|
||||||
- SEARXNG_URL=${SERVICE_FQDN_SEARXNG_8080}
|
- SEARXNG_URL=${SERVICE_FQDN_SEARXNG_8080}
|
||||||
- SEARXNG_BIND_ADDRESS=0.0.0.0
|
- SEARXNG_BIND_ADDRESS=${SEARXNG_BIND_ADDRESS:-0.0.0.0}
|
||||||
- SEARXNG_SECRET=${SERVICE_PASSWORD_SEARXNGSECRET}
|
- SEARXNG_SECRET=${SERVICE_PASSWORD_SEARXNGSECRET}
|
||||||
- SEARXNG_REDIS_URL=redis://redis:6379/0
|
- SEARXNG_REDIS_URL=redis://redis:6379/0
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -67,7 +61,7 @@ services:
|
|||||||
image: "redis:7"
|
image: "redis:7"
|
||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- "redis_data:/data"
|
- "redis-data:/data"
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test:
|
test:
|
||||||
- CMD
|
- CMD
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user