From 7134b46cdc2b4581d3e8cfc63682576be637d43b Mon Sep 17 00:00:00 2001 From: iamEvan Date: Mon, 27 May 2024 08:51:32 +0100 Subject: [PATCH 1/5] Fix Vaultwarden + Add Configs --- app/Models/Service.php | 96 ++++++++++++++++++++++++++++++ templates/compose/vaultwarden.yaml | 12 ++++ 2 files changed, 108 insertions(+) diff --git a/app/Models/Service.php b/app/Models/Service.php index 5de1a9745..41e61cbb8 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -446,6 +446,102 @@ class Service extends BaseModel $fields->put('Ghost', $data); break; + case str($image)?->contains('vaultwarden'): + $data = collect([]); + + $DATABASE_URL = $this->environment_variables()->where('key', 'DATABASE_URL')->first(); + $ADMIN_TOKEN = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_64_ADMIN')->first(); + + $SMTP_HOST = $this->environment_variables()->where('key', 'SMTP_HOST')->first(); + $SMTP_FROM_EMAIL = $this->environment_variables()->where('key', 'SMTP_FROM_EMAIL')->first(); + $SMTP_FROM_NAME = $this->environment_variables()->where('key', 'SMTP_FROM_NAME')->first(); + $SMTP_USERNAME = $this->environment_variables()->where('key', 'SMTP_USERNAME')->first(); + $SMTP_PASSWORD = $this->environment_variables()->where('key', 'SMTP_PASS')->first(); + $SMTP_SECURITY = $this->environment_variables()->where('key', 'SMTP_SECURITY')->first(); + $SMTP_PORT = $this->environment_variables()->where('key', 'SMTP_PORT')->first(); + + if ($DATABASE_URL) { + $data = $data->merge([ + 'Database URL' => [ + 'key' => data_get($DATABASE_URL, 'key'), + 'value' => data_get($DATABASE_URL, 'value'), + ], + ]); + } + if ($ADMIN_TOKEN) { + $data = $data->merge([ + 'Admin Password' => [ + 'key' => data_get($ADMIN_TOKEN, 'key'), + 'value' => data_get($ADMIN_TOKEN, 'value'), + 'isPassword' => true, + ], + ]); + } + + if ($SMTP_HOST) { + $data = $data->merge([ + 'Mail Host' => [ + 'key' => data_get($SMTP_HOST, 'key'), + 'value' => data_get($SMTP_HOST, 'value'), + 'rules' => 'nullable|url', + ], + ]); + } + if ($SMTP_FROM_EMAIL) { + $data = $data->merge([ + 'From Email' => [ + 'key' => data_get($SMTP_FROM_EMAIL, 'key'), + 'value' => data_get($SMTP_FROM_EMAIL, 'value'), + 'rules' => 'nullable|email', + ], + ]); + } + if ($SMTP_FROM_NAME) { + $data = $data->merge([ + 'From Name' => [ + 'key' => data_get($SMTP_FROM_NAME, 'key'), + 'value' => data_get($SMTP_FROM_NAME, 'value'), + ], + ]); + } + if ($SMTP_USERNAME) { + $data = $data->merge([ + 'Mail User' => [ + 'key' => data_get($SMTP_USERNAME, 'key'), + 'value' => data_get($SMTP_USERNAME, 'value'), + ], + ]); + } + if ($SMTP_PASSWORD) { + $data = $data->merge([ + 'Maill Password' => [ + 'key' => data_get($SMTP_PASSWORD, 'key'), + 'value' => data_get($SMTP_PASSWORD, 'value'), + 'isPassword' => true, + ], + ]); + } + if ($SMTP_SECURITY) { + $data = $data->merge([ + 'Mail Security' => [ + 'key' => data_get($SMTP_SECURITY, 'key'), + 'value' => data_get($SMTP_SECURITY, 'value'), + 'rules' => 'nullable|string|in:starttls,force_tls,off', + ], + ]); + } + if ($SMTP_PORT) { + $data = $data->merge([ + 'Mail Port' => [ + 'key' => data_get($SMTP_PORT, 'key'), + 'value' => data_get($SMTP_PORT, 'value'), + 'rules' => 'nullable|integer', + ], + ]); + } + + $fields->put('Vaultwarden', $data); + break; } } $databases = $this->databases()->get(); diff --git a/templates/compose/vaultwarden.yaml b/templates/compose/vaultwarden.yaml index 75e9f64e9..55230e18f 100644 --- a/templates/compose/vaultwarden.yaml +++ b/templates/compose/vaultwarden.yaml @@ -8,6 +8,18 @@ services: image: vaultwarden/server:latest environment: - SERVICE_FQDN_VAULTWARDEN + - DOMAIN=${SERVICE_FQDN_VAULTWARDEN} + - DATABASE_URL=${VAULTWARDEN_DB_URL:-data/db.sqlite3} + - SIGNUPS_ALLOWED=${SIGNUP_ALLOWED:-true} + - ADMIN_TOKEN=${SERVICE_PASSWORD_64_ADMIN} + - SMTP_HOST=${SMTP_HOST} + - SMTP_FROM=${SMTP_FROM_EMAIL} + - SMTP_FROM_NAME=${SMTP_FROM_NAME:-Vaultwarden} + - SMTP_USERNAME=${SMTP_USER} + - SMTP_PASSWORD=${SMTP_PASS} + - SMTP_SECURITY=${SMTP_SECURITY:-starttls} + - SMTP_PORT=${SMTP_PORT} + - SMTP_TIMEOUT=15 volumes: - vaultwarden-data:/data healthcheck: From 424437446d39ef8444d820fe7008f66e175c79e8 Mon Sep 17 00:00:00 2001 From: iamEvan Date: Mon, 27 May 2024 23:40:35 +0100 Subject: [PATCH 2/5] Added Push Notification Variables --- app/Models/Service.php | 31 ++++++++++++++++++++++++++++++ templates/compose/vaultwarden.yaml | 3 +++ 2 files changed, 34 insertions(+) diff --git a/app/Models/Service.php b/app/Models/Service.php index ffab20d98..69869a2a6 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -486,6 +486,10 @@ class Service extends BaseModel $SMTP_SECURITY = $this->environment_variables()->where('key', 'SMTP_SECURITY')->first(); $SMTP_PORT = $this->environment_variables()->where('key', 'SMTP_PORT')->first(); + $PUSH_ENABLED = $this->environment_variables()->where('key', 'PUSH_ENABLED')->first(); + $PUSH_INSTALLATION_ID = $this->environment_variables()->where('key', 'PUSH_SERVICE_ID')->first(); + $PUSH_INSTALLATION_KEY = $this->environment_variables()->where('key', 'PUSH_SERVICE_KEY')->first(); + if ($DATABASE_URL) { $data = $data->merge([ 'Database URL' => [ @@ -566,6 +570,33 @@ class Service extends BaseModel ]); } + if ($PUSH_ENABLED) { + $data = $data->merge([ + 'Push Enabled' => [ + 'key' => data_get($PUSH_ENABLED, 'key'), + 'value' => data_get($PUSH_ENABLED, 'value'), + 'rules' => 'required|string|in:true,false', + ], + ]); + } + if ($PUSH_INSTALLATION_ID) { + $data = $data->merge([ + 'Push Installation ID' => [ + 'key' => data_get($PUSH_INSTALLATION_ID, 'key'), + 'value' => data_get($PUSH_INSTALLATION_ID, 'value'), + ], + ]); + } + if ($PUSH_INSTALLATION_KEY) { + $data = $data->merge([ + 'Push Installation Key' => [ + 'key' => data_get($PUSH_INSTALLATION_KEY, 'key'), + 'value' => data_get($PUSH_INSTALLATION_KEY, 'value'), + 'isPassword' => true, + ], + ]); + } + $fields->put('Vaultwarden', $data); break; } diff --git a/templates/compose/vaultwarden.yaml b/templates/compose/vaultwarden.yaml index a0a12e977..763e6dfdd 100644 --- a/templates/compose/vaultwarden.yaml +++ b/templates/compose/vaultwarden.yaml @@ -20,6 +20,9 @@ services: - SMTP_SECURITY=${SMTP_SECURITY:-starttls} - SMTP_PORT=${SMTP_PORT} - SMTP_TIMEOUT=15 + - PUSH_ENABLED=${PUSH_ENABLED:-false} + - PUSH_INSTALLATION_ID=${PUSH_SERVICE_ID} + - PUSH_INSTALLATION_KEY=${PUSH_SERVICE_KEY} volumes: - vaultwarden-data:/data healthcheck: From 39f787b7dbc1564a8f5f2a03232ccdb2cc66bf53 Mon Sep 17 00:00:00 2001 From: iamEvan Date: Mon, 27 May 2024 23:41:42 +0100 Subject: [PATCH 3/5] fix: sort by defined order + fixed typo --- app/Livewire/Project/Service/StackForm.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Livewire/Project/Service/StackForm.php b/app/Livewire/Project/Service/StackForm.php index 03bf99245..232e0ee3f 100644 --- a/app/Livewire/Project/Service/StackForm.php +++ b/app/Livewire/Project/Service/StackForm.php @@ -42,7 +42,7 @@ class StackForm extends Component $this->validationAttributes["fields.$key.value"] = $fieldKey; } } - $this->fields = $this->fields->sortDesc(); + //$this->fields = $this->fields->sortDesc(); } public function saveCompose($raw) { @@ -52,7 +52,7 @@ class StackForm extends Component public function instantSave() { $this->service->save(); - $this->dispatch('success', 'Service settings saved.'); + $this->dispatch('success', 'Service settings saved.'); } public function submit() From 7c0c1e6cf8d4e81741b15ac1f53edfe645121c7c Mon Sep 17 00:00:00 2001 From: iamEvan Date: Tue, 28 May 2024 01:12:59 +0100 Subject: [PATCH 4/5] Add Real IP support for Reverse Proxies --- templates/compose/vaultwarden.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/compose/vaultwarden.yaml b/templates/compose/vaultwarden.yaml index 763e6dfdd..b7ac1fd1b 100644 --- a/templates/compose/vaultwarden.yaml +++ b/templates/compose/vaultwarden.yaml @@ -20,6 +20,7 @@ services: - SMTP_SECURITY=${SMTP_SECURITY:-starttls} - SMTP_PORT=${SMTP_PORT} - SMTP_TIMEOUT=15 + - IP_HEADER=X-Forwarded-For - PUSH_ENABLED=${PUSH_ENABLED:-false} - PUSH_INSTALLATION_ID=${PUSH_SERVICE_ID} - PUSH_INSTALLATION_KEY=${PUSH_SERVICE_KEY} From d4f6a86a57d166d0ace93346e390719be37eb4ed Mon Sep 17 00:00:00 2001 From: iamEvan Date: Tue, 28 May 2024 12:39:40 +0100 Subject: [PATCH 5/5] Remove SMTP Env Variables --- app/Models/Service.php | 70 ------------------------------ templates/compose/vaultwarden.yaml | 8 ---- 2 files changed, 78 deletions(-) diff --git a/app/Models/Service.php b/app/Models/Service.php index 69869a2a6..6a54729ae 100644 --- a/app/Models/Service.php +++ b/app/Models/Service.php @@ -477,14 +477,6 @@ class Service extends BaseModel $DATABASE_URL = $this->environment_variables()->where('key', 'DATABASE_URL')->first(); $ADMIN_TOKEN = $this->environment_variables()->where('key', 'SERVICE_PASSWORD_64_ADMIN')->first(); - - $SMTP_HOST = $this->environment_variables()->where('key', 'SMTP_HOST')->first(); - $SMTP_FROM_EMAIL = $this->environment_variables()->where('key', 'SMTP_FROM_EMAIL')->first(); - $SMTP_FROM_NAME = $this->environment_variables()->where('key', 'SMTP_FROM_NAME')->first(); - $SMTP_USERNAME = $this->environment_variables()->where('key', 'SMTP_USERNAME')->first(); - $SMTP_PASSWORD = $this->environment_variables()->where('key', 'SMTP_PASS')->first(); - $SMTP_SECURITY = $this->environment_variables()->where('key', 'SMTP_SECURITY')->first(); - $SMTP_PORT = $this->environment_variables()->where('key', 'SMTP_PORT')->first(); $PUSH_ENABLED = $this->environment_variables()->where('key', 'PUSH_ENABLED')->first(); $PUSH_INSTALLATION_ID = $this->environment_variables()->where('key', 'PUSH_SERVICE_ID')->first(); @@ -508,68 +500,6 @@ class Service extends BaseModel ]); } - if ($SMTP_HOST) { - $data = $data->merge([ - 'Mail Host' => [ - 'key' => data_get($SMTP_HOST, 'key'), - 'value' => data_get($SMTP_HOST, 'value'), - 'rules' => 'nullable|url', - ], - ]); - } - if ($SMTP_FROM_EMAIL) { - $data = $data->merge([ - 'From Email' => [ - 'key' => data_get($SMTP_FROM_EMAIL, 'key'), - 'value' => data_get($SMTP_FROM_EMAIL, 'value'), - 'rules' => 'nullable|email', - ], - ]); - } - if ($SMTP_FROM_NAME) { - $data = $data->merge([ - 'From Name' => [ - 'key' => data_get($SMTP_FROM_NAME, 'key'), - 'value' => data_get($SMTP_FROM_NAME, 'value'), - ], - ]); - } - if ($SMTP_USERNAME) { - $data = $data->merge([ - 'Mail User' => [ - 'key' => data_get($SMTP_USERNAME, 'key'), - 'value' => data_get($SMTP_USERNAME, 'value'), - ], - ]); - } - if ($SMTP_PASSWORD) { - $data = $data->merge([ - 'Maill Password' => [ - 'key' => data_get($SMTP_PASSWORD, 'key'), - 'value' => data_get($SMTP_PASSWORD, 'value'), - 'isPassword' => true, - ], - ]); - } - if ($SMTP_SECURITY) { - $data = $data->merge([ - 'Mail Security' => [ - 'key' => data_get($SMTP_SECURITY, 'key'), - 'value' => data_get($SMTP_SECURITY, 'value'), - 'rules' => 'nullable|string|in:starttls,force_tls,off', - ], - ]); - } - if ($SMTP_PORT) { - $data = $data->merge([ - 'Mail Port' => [ - 'key' => data_get($SMTP_PORT, 'key'), - 'value' => data_get($SMTP_PORT, 'value'), - 'rules' => 'nullable|integer', - ], - ]); - } - if ($PUSH_ENABLED) { $data = $data->merge([ 'Push Enabled' => [ diff --git a/templates/compose/vaultwarden.yaml b/templates/compose/vaultwarden.yaml index b7ac1fd1b..e2f8281d8 100644 --- a/templates/compose/vaultwarden.yaml +++ b/templates/compose/vaultwarden.yaml @@ -12,14 +12,6 @@ services: - DATABASE_URL=${VAULTWARDEN_DB_URL:-data/db.sqlite3} - SIGNUPS_ALLOWED=${SIGNUP_ALLOWED:-true} - ADMIN_TOKEN=${SERVICE_PASSWORD_64_ADMIN} - - SMTP_HOST=${SMTP_HOST} - - SMTP_FROM=${SMTP_FROM_EMAIL} - - SMTP_FROM_NAME=${SMTP_FROM_NAME:-Vaultwarden} - - SMTP_USERNAME=${SMTP_USER} - - SMTP_PASSWORD=${SMTP_PASS} - - SMTP_SECURITY=${SMTP_SECURITY:-starttls} - - SMTP_PORT=${SMTP_PORT} - - SMTP_TIMEOUT=15 - IP_HEADER=X-Forwarded-For - PUSH_ENABLED=${PUSH_ENABLED:-false} - PUSH_INSTALLATION_ID=${PUSH_SERVICE_ID}