ألعاب

كيفية إنشاء النشرة الإخبارية الخاصة بك مع Listmonk


Listmonk عبارة عن حل بسيط للرسائل الإخبارية والقوائم البريدية ذاتية الاستضافة لنظام التشغيل Linux. على عكس برامج القوائم البريدية التقليدية، فهو يتفوق في توفير منصة بسيطة خفيفة الوزن وسريعة. نعرض لك هنا كيفية تثبيت Listmonk باستخدام Docker على Ubuntu، وكيفية البدء في استخدامه لإرسال الرسائل الإخبارية.

مزايا استخدام Listmonk

واحدة من أكبر نقاط البيع في Listmonk هي أنه يمكنه العمل مع أي خادم تسليم بريد خارجي تقريبًا على الإنترنت. وهذا يعني أنه يمكنك إرسال رسائلك الإخبارية مع مزود بريد مستضاف مثل Gmail أو إعداد البريد المستضاف ذاتيًا الخاص بك.

يأتي Listmonk أيضًا مع القدرة على إنشاء قوالب بريد إلكتروني قابلة للبرمجة. يتيح ذلك إنشاء رسائل بريد إلكتروني مخصصة يمكنها ضبط نفسها وفقًا للسياق الذي يتلقى المستخدم الرسالة من خلاله.

وأخيرًا، يأتي Listmonk مزودًا بوحدة تحليلية سهلة الاستخدام لتتمكن من تتبع كل رسالة إخبارية يتم تشغيلها داخل البرنامج. يمكنه تتبع مقدار النقرات التي تحصل عليها كل رسالة بالإضافة إلى المشاهدات الإجمالية التي تحققها القائمة البريدية بأكملها في فترة زمنية.

تركيب ليستمونك

الحصول على Docker وDocker Compose

افتراض: تفترض هذه المقالة أنك تقوم بتشغيل Listmonk على VPS الذي يعمل دائمًا. علاوة على ذلك، يفترض أيضًا أن لديك بالفعل اسم نطاق يحتوي على سجل A وPTR يشير إلى VPS الخاص بك.

للبدء، قم باسترداد مفتاح المستودع الخاص بحزمتي Docker وDocker Compose:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

أنشئ ملف المستودع الجديد لحزمتي Docker وDocker Compose:

sudo nano /etc/apt/sources.list.d/docker.list

اكتب السطر التالي من التعليمات البرمجية داخل ملف المستودع الجديد الخاص بك:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable

قم بتحديث وترقية نظام Ubuntu بالكامل عن طريق تشغيل الأمر التالي:

sudo apt update && sudo apt upgrade

قم بتثبيت Docker Engine مع Docker Compose وتبعيات مكوناته:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx git curl

تأكد من أن المستخدم الحالي لديه الأذونات الصحيحة للوصول إلى ثنائيات Docker:

sudo usermod -aG docker ramces

إعداد ونشر Listmonk

قم بإنشاء مجلد جديد لملفات Docker الخاصة بك داخل الدليل الرئيسي للمستخدم الحالي:

mkdir ~/listmonk && cd ~/listmonk

قم بإنشاء ملف تكوين جديد لمثيل Listmonk الخاص بك:

الصق الكود التالي داخل ملف التكوين الجديد الخاص بك:

[app]
address = "0.0.0.0:9000"
admin_username = "listmonk"
admin_password = "listmonk"
 
[db]
host = "listmonk_db"
port = 5432
user = "listmonk"
password = "INSERT_RANDOM_PASSWORD_HERE"
 
database = "listmonk"
 
ssl_mode = "disable"
max_open = 25
max_idle = 25
max_lifetime = "300s"
 
params = ""

ملحوظة: يمكنك بسهولة إنشاء كلمة مرور عشوائية باستخدام الأمر: cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1

احفظ ملف التكوين الجديد، ثم أنشئ ملف docker-compose.yml الخاص بمثيل Listmonk:

nano ./docker-compose.yml

الصق كتلة التعليمات البرمجية التالية داخل ملف .yml الجديد. هذا هو ملف docker-compose.yml الافتراضي لـ Listmonk والذي قمت بتعديله ليعمل مع المنطقة الزمنية الخاصة بي:

---
version: "3.7"
x-app-defaults:
  restart: unless-stopped
  image: listmonk/listmonk:latest
  ports:
    - 9000:9000
  networks:
    - listmonk
  environment:
    - TZ=Asia/Manila
x-db-defaults:
  image: postgres:13
  ports:
    - 9432:5432
  networks:
    - listmonk
  environment:
    - POSTGRES_PASSWORD=INSERT_RANDOM_PASSWORD_HERE
    - POSTGRES_USER=listmonk
    - POSTGRES_DB=listmonk
  restart: unless-stopped
  healthcheck:
    test:
      - CMD-SHELL
      - pg_isready -U listmonk
    interval: 10s
    timeout: 5s
    retries: 6
services:
  db:
    image: postgres:13
    ports:
      - 9432:5432
    networks:
      - listmonk
    environment:
      - POSTGRES_PASSWORD=INSERT_RANDOM_PASSWORD_HERE
      - POSTGRES_USER=listmonk
      - POSTGRES_DB=listmonk
    restart: unless-stopped
    healthcheck:
      test:
        - CMD-SHELL
        - pg_isready -U listmonk
      interval: 10s
      timeout: 5s
      retries: 6
    container_name: listmonk_db
    volumes:
      - type: volume
        source: listmonk-data
        target: /var/lib/postgresql/data
  app:
    restart: unless-stopped
    image: listmonk/listmonk:latest
    ports:
      - 9000:9000
    networks:
      - listmonk
    environment:
      - TZ=Asia/Manila
    container_name: listmonk_app
    depends_on:
      - db
    volumes:
      - ./config.toml:/listmonk/config.toml
  networks:
  listmonk: null
volumes:
  listmonk-data: null

نشر حاوية Listmonk Docker

قم بتشغيل أمر Docker التالي لإنشاء ملف قاعدة بيانات المثيل الخاص بك:

افتح اتصال SSH جديد، ثم ابدأ عملية إنشاء Listmonk عن طريق تشغيل الملف الثنائي “listmonk” داخل حاوية Docker الخاصة به:

docker compose run --rm app ./listmonk --install

اكتب “Y”، ثم اضغط يدخل عندما يطلب منك البرنامج النصي للإنشاء مسح أي بيانات موجودة في قاعدة البيانات قيد التشغيل. سيضمن هذا أن حاوية Listmonk الخاصة بك نظيفة عند بدء التشغيل.

محطة تعرض قاعدة بيانات واضحة موجه لحاوية Listmonk Docker.

ارجع إلى جلسة SSH لقاعدة بيانات المثيل الخاص بك ثم اضغط كنترول + ج لإنهاء الجلسة بأمان.

محطة تظهر إغلاق قاعدة البيانات المؤقتة بأمان.

وأخيرًا، أعد تشغيل جميع حاويات Docker لـ Listmonk بإعداداتها الصحيحة:

docker compose up -d app db

إنشاء وكيل عكسي لـ Nginx

على الرغم من أن Listmonk بدأ تشغيله على مثيل Docker، إلا أنه لا يمكن الوصول إليه بشكل عام حتى تقوم بتكوين وكيل عكسي للارتباط به. اتبع الإرشادات أدناه لتكوين وكيل Nginx العكسي.

قم بإنشاء ملف تكوين موقع جديد لمثيل Listmonk الخاص بك:

sudo nano /etc/nginx/sites-available/listmonk

الصق كتلة التعليمات البرمجية التالية داخل ملف تكوين الموقع الجديد:

server {
 
        server_name listmonk.myvpsserver.top;
 
        location / {
                proxy_pass http://127.0.0.1:9000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
        }
}

اربط ملف التكوين الجديد الخاص بك من /etc/nginx/sites-available إلى /etc/nginx/sites-enabled:

sudo ln -s /etc/nginx/sites-available/listmonk /etc/nginx/sites-enabled/

أعد تشغيل البرنامج الخفي لخادم Nginx عن طريق تشغيل الأمر التالي:

sudo systemctl reload nginx

تثبيت شهادة SSL

بمجرد قيامك بتكوين الوكيل العكسي، سيكون موقعك متاحًا للعامة. ومع ذلك، فهو غير آمن لأنه لا توجد شهادة SSL. وبالتالي، فإن الخطوة التالية هي تثبيت شهادة SSL.

تأكد من تشغيل البرنامج الخفي الأساسي في نظامك:

قم بتثبيت حزمة certbot snap من Electronic Frontier Foundation (EFF). ستتيح لك هذه الأداة المساعدة طلب شهادة SSL التي يمكن لخادمك استخدامها لتشفير الاتصالات بين المضيفين.

sudo snap install certbot --classic

اختبر ما إذا كانت حزمة certbot الخاصة بك تعمل بشكل صحيح عن طريق تسجيلها في EFF:

sudo certbot register --agree-tos -m you@your-email.invalid

احصل على شهادة SSL جديدة لتثبيت Listmonk الخاص بك عن طريق تشغيل الأمر التالي:

sudo certbot --nginx -d listmonk.myvpsserver.top

الوصول إلى Listmonk وتكوينه

افتح متصفح الويب، ثم انتقل إلى عنوان مثيل Listmonk الخاص بك. سيؤدي هذا إلى ظهور صفحة ويب بسيطة تحتوي على زر تسجيل الدخول.

لقطة شاشة توضح شاشة تسجيل الدخول إلى Listmonk.

انقر فوق الزر “تسجيل الدخول”، ثم اكتب “listmonk” في حقلي اسم المستخدم وكلمة المرور.

لقطة شاشة توضح مطالبة بيانات الاعتماد.

سيؤدي القيام بذلك إلى تحميل لوحة المعلومات الرئيسية لمثيل Listmonk الخاص بك. انقر على خيار “الإعدادات” في الشريط الجانبي الأيسر للصفحة.

لقطة شاشة تسلط الضوء على

استبدل قيمة مربع النص “Root URL” بالعنوان الكامل لمثيل Listmonk الخاص بك.

لقطة شاشة تسلط الضوء على "عنوان URL الجذر" القيمة باستخدام اسم مجال VPS.

انقر على “حفظ” في الزاوية اليمنى العليا من الصفحة لحفظ الإعداد الجديد.

ملحوظة: لا تنس تغيير اسم المستخدم وكلمة المرور الافتراضية.

ربط حساب Gmail بـ Listmonk

قم بتسجيل الدخول إلى حساب Gmail الخاص بك، ثم انقر على أيقونة المستخدم الخاصة بك في الزاوية اليمنى العليا من الصفحة.

لقطة شاشة تسلط الضوء على رمز المستخدم في Gmail.

انقر على “إدارة حسابك في Google”.

لقطة شاشة تسلط الضوء على

انقر فوق فئة “الأمان” في الشريط الجانبي الأيسر للصفحة. حدد خيار “التحقق بخطوتين” داخل صفحة الأمان الفرعية.

لقطة شاشة تسلط الضوء على

قم بالتمرير لأسفل إلى أسفل الصفحة، ثم انقر فوق الزر “كلمات مرور التطبيقات”.

لقطة شاشة توضح

سيؤدي هذا إلى ظهور مطالبة تطلب منك اسم التطبيق الذي تريد ربطه. اكتب “listmonk”، ثم انقر فوق “إنشاء”.

ستظهر الصفحة بعد ذلك نافذة صغيرة تحتوي على 16 حرفًا عشوائيًا مجمعة في أربع. انسخ هذا إلى ملف نصي ثم انقر فوق “تم”.

لقطة شاشة تعرض مثالاً لكلمة مرور التطبيق.

ارجع إلى صفحة لوحة تحكم Listmonk، ثم انقر فوق خيار “الإعدادات” في الشريط الجانبي الأيسر للصفحة.

حدد علامة التبويب “SMTP” في الشريط العلوي للصفحة. انقر على الرابط “Gmail” الموجود أسفل مربع القائمة المنسدلة “Auth Protocol”.

لقطة شاشة تسلط الضوء على رابط قالب Gmail.

اكتب عنوان البريد الإلكتروني الكامل لحساب Gmail الخاص بك في حقل “اسم المستخدم”.

انقر على حقل “كلمة المرور”، ثم اكتب السلسلة المكونة من 16 حرفًا التي نسختها من موقع Gmail بدون مسافات.

لقطة شاشة تعرض رابط Gmail الكامل.

انقر فوق “حفظ” لتطبيق إعدادات SMTP الجديدة.

لقطة شاشة تسلط الضوء على

أخيرًا، انتقل إلى علامة التبويب “عام” ثم استبدل قيمة مربع النص “العنوان الافتراضي “من”” بعنوان حساب Gmail الخاص بك.

إنشاء رسالة إخبارية Listmonk جديدة

انتقل إلى صفحة Listmonk Dashboard، وانقر فوق فئة “القوائم” ثم انقر فوق خيار “جميع القوائم”.

لقطة شاشة تسلط الضوء على

حدد الزر “جديد” في الزاوية اليمنى العليا للصفحة.

لقطة شاشة تسلط الضوء على

قم بملء تفاصيل قائمتك البريدية الجديدة، ثم اضغط على “حفظ”.

لقطة شاشة تعرض قائمة الرسائل الإخبارية العامة الأساسية.

هذا كل شيء. لقد أكملت تثبيت Listmonk.

تعد استضافة رسالتك الإخبارية مجرد جزء واحد من إنشاء النظام الأساسي الرقمي الخاص بك. تعرف على كيفية توسيع نطاق ذلك من خلال استضافة مدونة في Linux باستخدام Ghost وتشغيل لوحة Kanban الخاصة بك على الويب باستخدام Kanboard.

مصدر الصورة: النشرة الإخبارية – مكتوبة على آلة كاتبة قديمة بواسطة 123RF. جميع التعديلات ولقطات الشاشة بواسطة Ramces Red.

رمسيس الأحمر

رمسيس كاتب في مجال التكنولوجيا عاش مع أجهزة الكمبيوتر طوال حياته. قارئ غزير الإنتاج وطالب في الأنثروبولوجيا، وهو شخصية غريبة الأطوار تكتب مقالات عن Linux وأي شيء لا شيء.

اشترك في نشرتنا الإخبارية!

يتم تسليم أحدث البرامج التعليمية لدينا مباشرة إلى صندوق البريد الوارد الخاص بك

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *