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

@@ -2,10 +2,10 @@
namespace App\Livewire;
use Illuminate\Support\Facades\Session;
use App\Models\ZEmail;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use App\Models\ZEmail;
use Illuminate\Support\Facades\Session;
use Livewire\Component;
class AddOn extends Component
@@ -31,6 +31,7 @@ class AddOn extends Component
if (count($messages['data']) > 0) {
return to_route('mailbox');
}
return null;
}
@@ -48,7 +49,7 @@ class AddOn extends Component
$this->faqSchema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => collect($this->faqs)->map(fn(array $faq): array => [
'mainEntity' => collect($this->faqs)->map(fn (array $faq): array => [
'@type' => 'Question',
'name' => $faq['title'],
'acceptedAnswer' => [
@@ -66,7 +67,7 @@ class AddOn extends Component
$this->faqSchema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => collect($this->faqs)->map(fn(array $faq): array => [
'mainEntity' => collect($this->faqs)->map(fn (array $faq): array => [
'@type' => 'Question',
'name' => $faq['title'],
'acceptedAnswer' => [
@@ -85,7 +86,7 @@ class AddOn extends Component
$this->faqSchema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => collect($this->faqs)->map(fn(array $faq): array => [
'mainEntity' => collect($this->faqs)->map(fn (array $faq): array => [
'@type' => 'Question',
'name' => $faq['title'],
'acceptedAnswer' => [
@@ -103,7 +104,7 @@ class AddOn extends Component
$this->faqSchema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => collect($this->faqs)->map(fn(array $faq): array => [
'mainEntity' => collect($this->faqs)->map(fn (array $faq): array => [
'@type' => 'Question',
'name' => $faq['title'],
'acceptedAnswer' => [
@@ -121,7 +122,7 @@ class AddOn extends Component
$this->faqSchema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => collect($this->faqs)->map(fn(array $faq): array => [
'mainEntity' => collect($this->faqs)->map(fn (array $faq): array => [
'@type' => 'Question',
'name' => $faq['title'],
'acceptedAnswer' => [
@@ -139,7 +140,7 @@ class AddOn extends Component
$this->faqSchema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => collect($this->faqs)->map(fn(array $faq): array => [
'mainEntity' => collect($this->faqs)->map(fn (array $faq): array => [
'@type' => 'Question',
'name' => $faq['title'],
'acceptedAnswer' => [
@@ -157,7 +158,7 @@ class AddOn extends Component
$this->faqSchema = [
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'mainEntity' => collect($this->faqs)->map(fn(array $faq): array => [
'mainEntity' => collect($this->faqs)->map(fn (array $faq): array => [
'@type' => 'Question',
'name' => $faq['title'],
'acceptedAnswer' => [