feat: Prepare Zemailnator for Dokploy deployment

- Add highly optimized Dockerfile with Nginx and PHP-FPM 8.4
- Add docker-compose.yml configured with Redis and MariaDB 10.11
- Implement entrypoint.sh and supervisord.conf for background workers
- Refactor legacy IMAP scripts into scheduled Artisan Commands
- Secure app by removing old routes with hardcoded basic auth credentials
- Configure email attachments to use Laravel Storage instead of insecure public/tmp
This commit is contained in:
idevakk
2026-02-28 23:17:39 +05:30
parent bf5b797cd8
commit c312ec3325
78 changed files with 750 additions and 360 deletions

View File

@@ -81,7 +81,7 @@ class AppServiceProvider extends ServiceProvider
$this->appConfig = [
'website_settings' => [],
'imap_settings' => [],
'configuration_settings' => []
'configuration_settings' => [],
];
Log::error($e->getMessage());
}
@@ -114,40 +114,40 @@ class AppServiceProvider extends ServiceProvider
private function loadLegacySettings(): array
{
return [
"app_name" => $this->getConfig('website_settings.app_name'),
"app_version" => $this->getConfig('website_settings.app_version'),
"app_base_url" => $this->getConfig('website_settings.app_base_url'),
"app_admin" => $this->getConfig('website_settings.app_admin'),
"app_title" => $this->getConfig('website_settings.app_title'),
"app_description" => $this->getConfig('website_settings.app_description'),
"app_keywords" => $this->getConfig('website_settings.app_keywords'),
"app_contact" => $this->getConfig('website_settings.app_contact'),
"app_meta" => ArrayHelper::jsonEncodeSafe($this->getConfig('website_settings.app_meta')),
"app_social" => ArrayHelper::jsonEncodeSafe($this->getConfig('website_settings.app_social')),
"app_header" => $this->getConfig('website_settings.app_header'),
"app_footer" => $this->getConfig('website_settings.app_footer'),
"imap_settings" => ArrayHelper::jsonEncodeSafe([
"host" => $this->getConfig('imap_settings.public.host'),
"port" => $this->getConfig('imap_settings.public.port'),
"username" => $this->getConfig('imap_settings.public.username'),
"password" => $this->getConfig('imap_settings.public.password'),
"encryption" => $this->getConfig('imap_settings.public.encryption'),
"validate_cert" => $this->getConfig('imap_settings.public.validate_cert'),
"default_account" => $this->getConfig('imap_settings.public.default_account'),
"protocol" => $this->getConfig('imap_settings.public.protocol'),
"cc_check" => $this->getConfig('imap_settings.public.cc_check'),
"premium_host" => $this->getConfig('imap_settings.premium.host'),
"premium_port" => $this->getConfig('imap_settings.premium.port'),
"premium_username" => $this->getConfig('imap_settings.premium.username'),
"premium_password" => $this->getConfig('imap_settings.premium.password'),
"premium_encryption" => $this->getConfig('imap_settings.premium.premium_encryption'),
"premium_validate_cert" => $this->getConfig('imap_settings.premium.validate_cert'),
"premium_default_account" => $this->getConfig('imap_settings.premium.default_account'),
"premium_protocol" => $this->getConfig('imap_settings.premium.protocol'),
"premium_cc_check" => $this->getConfig('imap_settings.premium.cc_check'),
'app_name' => $this->getConfig('website_settings.app_name'),
'app_version' => $this->getConfig('website_settings.app_version'),
'app_base_url' => $this->getConfig('website_settings.app_base_url'),
'app_admin' => $this->getConfig('website_settings.app_admin'),
'app_title' => $this->getConfig('website_settings.app_title'),
'app_description' => $this->getConfig('website_settings.app_description'),
'app_keywords' => $this->getConfig('website_settings.app_keywords'),
'app_contact' => $this->getConfig('website_settings.app_contact'),
'app_meta' => ArrayHelper::jsonEncodeSafe($this->getConfig('website_settings.app_meta')),
'app_social' => ArrayHelper::jsonEncodeSafe($this->getConfig('website_settings.app_social')),
'app_header' => $this->getConfig('website_settings.app_header'),
'app_footer' => $this->getConfig('website_settings.app_footer'),
'imap_settings' => ArrayHelper::jsonEncodeSafe([
'host' => $this->getConfig('imap_settings.public.host'),
'port' => $this->getConfig('imap_settings.public.port'),
'username' => $this->getConfig('imap_settings.public.username'),
'password' => $this->getConfig('imap_settings.public.password'),
'encryption' => $this->getConfig('imap_settings.public.encryption'),
'validate_cert' => $this->getConfig('imap_settings.public.validate_cert'),
'default_account' => $this->getConfig('imap_settings.public.default_account'),
'protocol' => $this->getConfig('imap_settings.public.protocol'),
'cc_check' => $this->getConfig('imap_settings.public.cc_check'),
'premium_host' => $this->getConfig('imap_settings.premium.host'),
'premium_port' => $this->getConfig('imap_settings.premium.port'),
'premium_username' => $this->getConfig('imap_settings.premium.username'),
'premium_password' => $this->getConfig('imap_settings.premium.password'),
'premium_encryption' => $this->getConfig('imap_settings.premium.premium_encryption'),
'premium_validate_cert' => $this->getConfig('imap_settings.premium.validate_cert'),
'premium_default_account' => $this->getConfig('imap_settings.premium.default_account'),
'premium_protocol' => $this->getConfig('imap_settings.premium.protocol'),
'premium_cc_check' => $this->getConfig('imap_settings.premium.cc_check'),
]),
"configuration_settings" => ArrayHelper::jsonEncodeSafe($this->appConfig['configuration_settings']),
"ads_settings" => ArrayHelper::jsonEncodeSafe($this->getConfig('website_settings.ads_settings')),
'configuration_settings' => ArrayHelper::jsonEncodeSafe($this->appConfig['configuration_settings']),
'ads_settings' => ArrayHelper::jsonEncodeSafe($this->getConfig('website_settings.ads_settings')),
];
}