Ubuntu 24.04 पर Listmonk कैसे इंस्टॉल करें
Ubuntu 24.04 पर Listmonk v6.2.0 को Postgres, config.toml और systemd के साथ सेटअप करें। इस गाइड में SMTP कनेक्शन और ईमेल डिलीवरेबिलिटी की वास्तविक लागत के बारे में जानें।
Listmonk पर आधारित सेल्फ-होस्टेड न्यूज़लेटर के लिए आवश्यक चीज़ें
Listmonk एक सेल्फ-होस्टेड न्यूज़लेटर और मेलिंग लिस्ट मैनेजर है: इसमें एक Go बाइनरी, एक PostgreSQL डेटाबेस, एक कॉन्फ़िगरेशन फ़ाइल और एक systemd यूनिट होती है। एक छोटा VPS इसे आसानी से चला सकता है, क्योंकि Listmonk सब्सक्राइबर्स को स्टोर करता है और कैंपेन को कतार में रखता है, लेकिन यह स्वयं मेल डिलीवर नहीं करता है। यह प्रत्येक संदेश को एक SMTP (simple mail transfer protocol) सर्वर को सौंप देता है, इसलिए आपकी डिलीवरी दर उस सर्वर की प्रतिष्ठा (reputation) द्वारा तय होती है, न कि इस सॉफ़्टवेयर द्वारा।
यह गाइड Ubuntu 24.04 पर Listmonk v6.2.0 को इंस्टॉल करती है, जो जुलाई 2026 तक का वर्तमान रिलीज़ है। आपको एक सार्वजनिक IP एड्रेस वाले VPS, आपके नियंत्रण वाले एक डोमेन नाम, और PostgreSQL 12 या उससे नए वर्ज़न की आवश्यकता होगी। इंस्टॉलेशन में लगभग एक घंटा लगता है। भेजने की प्रतिष्ठा (sending reputation) बनाने में हफ़्तों का समय लगता है, और उस हिस्से को अंत के पास कवर किया गया है।
PostgreSQL इंस्टॉल करें और डेटाबेस बनाएं
Ubuntu 24.04 अपने रिपॉजिटरी में PostgreSQL 16 प्रदान करता है, जो Listmonk की आवश्यकताओं से काफी आगे है।
sudo apt update
sudo apt install -y postgresql curl
sudo systemctl enable --now postgresqlएक ही psql सत्र में रोल और डेटाबेस बनाएं। -v ON_ERROR_STOP=1 यह सुनिश्चित करता है कि किसी भी स्टेटमेंट के विफल होने पर psql तुरंत बंद हो जाए, ताकि टाइपिंग की गलती के कारण अधूरा सेटअप न रह जाए।
sudo -u postgres psql -v ON_ERROR_STOP=1 <<'SQL'
CREATE USER listmonk WITH PASSWORD 'pick-a-long-random-password';
CREATE DATABASE listmonk OWNER listmonk;
SQLOWNER listmonk केवल दिखावट नहीं है। स्कीमा इंस्टॉलेशन टेबल, टाइप, इंडेक्स और फंक्शन बनाता है, इसलिए रोल का डेटाबेस का स्वामी (owner) होना आवश्यक है। यदि आप Listmonk को किसी अन्य रोल के स्वामित्व वाले डेटाबेस से जोड़ते हैं, तो इंस्टॉलेशन permission denied के साथ रुक जाएगा, भले ही आपने GRANT CONNECT चला लिया हो।
आगे बढ़ने से पहले पुष्टि करें कि डेटाबेस मौजूद है।
sudo -u postgres psql -tAc "SELECT datname FROM pg_database WHERE datname='listmonk';"यह listmonk प्रिंट करता है। यदि कोई खाली लाइन दिखाई देती है, तो इसका मतलब है कि CREATE स्टेटमेंट कभी नहीं चला, इसलिए psql आउटपुट को दोबारा पढ़ें।
Listmonk बाइनरी इंस्टॉल करें
Listmonk प्रत्येक आर्किटेक्चर के लिए एक स्टेटिक बाइनरी जारी करता है। सबसे पहले अपने आर्किटेक्चर की जांच करें, क्योंकि ARM VPS पर amd64 बाइनरी एक ऐसी फाइल है जिसे कर्नल निष्पादित (execute) करने से मना कर देगा।
dpkg --print-architecture
cd /tmp
curl -fsSLO https://github.com/knadh/listmonk/releases/download/v6.2.0/listmonk_6.2.0_linux_amd64.tar.gz
tar -xzf listmonk_6.2.0_linux_amd64.tar.gz
sudo install -m 755 listmonk /usr/bin/listmonk
listmonk --versionARM VPS पर फाइल नाम में amd64 को arm64 से बदलें। listmonk --version वर्ज़न स्ट्रिंग को प्रिंट करना इस बात का पहला प्रमाण है कि बाइनरी मशीन के अनुकूल है।
config.toml जनरेट करें और उसे सुरक्षित करें
--new-config, config.toml को वर्तमान वर्किंग डायरेक्टरी में लिखता है। इसीलिए cd, sh -c के अंदर स्थित है, न कि sudo से पहले।
sudo install -d -m 750 /etc/listmonk
sudo sh -c 'cd /etc/listmonk && listmonk --new-config'जनरेट की गई फ़ाइल छोटी है। [app] के अंतर्गत, address = "localhost:9000" HTTP सर्वर को केवल लूपबैक पर बाइंड करता है, इसलिए एडमिन पैनल तब तक इंटरनेट से एक्सेस नहीं किया जा सकता जब तक आप इसके सामने रिवर्स प्रॉक्सी न लगा दें। उस लाइन को न बदलें। [db] के अंतर्गत आपको host = "localhost", port = 5432, user = "listmonk", database = "listmonk" और ssl_mode = "disable" मिलते हैं। ये डिफ़ॉल्ट मान आपके द्वारा बनाए गए डेटाबेस से पहले ही मेल खाते हैं, इसलिए एकमात्र लाइन जिसे आपको बदलना है वह पासवर्ड है।
ssl_mode = "disable" सही है क्योंकि Postgres उसी मशीन पर लूपबैक पर लिसन कर रहा है, क्योंकि वह ट्रैफ़िक मशीन से बाहर नहीं जाता है। डेटाबेस को किसी अन्य होस्ट पर ले जाएं और इसे require पर सेट करें, अन्यथा पासवर्ड नेटवर्क पर क्लियरटेक्स्ट में चला जाएगा।
[db] के अंतर्गत पासवर्ड लाइन को एडिट करें ताकि वह रोल से मेल खाए, फिर सर्विस अकाउंट बनाएं और फ़ाइल को अन्य सभी लॉगिन से दूर कर दें।
sudo useradd --system --home-dir /var/lib/listmonk --create-home --shell /usr/sbin/nologin listmonk
sudo chown -R root:listmonk /etc/listmonk
sudo chmod 640 /etc/listmonk/config.tomlअब सर्विस अकाउंट फ़ाइल को पढ़ सकता है और कोई अन्य नहीं।
sudo -u listmonk cat /etc/listmonk/config.toml > /dev/null && echo readable
stat -c '%U:%G %a' /etc/listmonk/config.tomlपहला कमांड readable प्रिंट करता है। दूसरा root:listmonk 640 प्रिंट करता है। कोई भी अन्य अनप्रिविलेज्ड अकाउंट जो समान cat का प्रयास करता है, उसे Permission denied मिलता है, और यही इसका उद्देश्य है: इस फ़ाइल में आपका डेटाबेस पासवर्ड क्लियरटेक्स्ट में होता है, और एक सर्वर पर आमतौर पर एक से अधिक लॉगिन होते हैं। यही तर्क आपके द्वारा चलाई जाने वाली हर सर्विस पर लागू होता है, इसलिए लीस्ट प्रिविलेज सर्विस यूजर्स को एक बार पढ़ें और इसे हर जगह लागू करें।
--install के साथ स्कीमा बनाएँ
--install टेबल बनाता है और डिफ़ॉल्ट सेटिंग्स को सीड करता है। पहले एडमिन लॉगिन को एनवायरनमेंट वेरिएबल्स के साथ सेट करें, ताकि पैनल के एक्सेस होने से पहले ही अकाउंट मौजूद हो।
sudo -u listmonk env LISTMONK_ADMIN_USER=admin \
LISTMONK_ADMIN_PASSWORD='another-long-random-password' \
listmonk --config /etc/listmonk/config.toml --install --yes--yes कन्फर्मेशन प्रॉम्प्ट का उत्तर देता है। इसे ऑटोमेट करने से पहले उस प्रॉम्प्ट को एक बार पढ़ लें, क्योंकि --install पहली बार इंस्टालर है और यह मौजूदा Listmonk स्कीमा को हटा देता है। लाइव डेटाबेस पर इसे दूसरी बार चलाने से आपके सब्सक्राइबर्स डिलीट हो जाएंगे। किसी भी ऐसी स्क्रिप्ट में जो दो बार चल सकती है, --install --idempotent --yes का उपयोग करें, जो टेबल पहले से मौजूद होने पर कुछ नहीं करता है। नए रिलीज़ में आए स्कीमा बदलावों को --upgrade के साथ लागू किया जाता है, न कि --install के साथ।
ब्राउज़र के बजाय डेटाबेस साइड से परिणाम की जाँच करें।
sudo -u postgres psql -d listmonk -c '\dt'
sudo -u postgres psql -d listmonk -tAc "SELECT username FROM users;"पहला कमांड Listmonk टेबल को लिस्ट करता है, जिनमें subscribers, lists, campaigns, templates और bounces शामिल हैं। दूसरा कमांड admin प्रिंट करता है। दूसरे कमांड से खाली परिणाम मिलने का मतलब है कि एनवायरनमेंट वेरिएबल्स प्रोसेस तक नहीं पहुँचे, इसलिए पैनल आपसे ब्राउज़र में पहला यूज़र बनाने के लिए कहेगा।
systemd के अंतर्गत Listmonk चलाना
/etc/systemd/system/listmonk.service लिखें।
[Unit]
Description=Listmonk newsletter and mailing list manager
After=network-online.target postgresql.service
Wants=network-online.target
[Service]
Type=simple
User=listmonk
Group=listmonk
WorkingDirectory=/var/lib/listmonk
ExecStart=/usr/bin/listmonk --config /etc/listmonk/config.toml
Restart=on-failure
RestartSec=5
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
[Install]
WantedBy=multi-user.targetWorkingDirectory महत्वपूर्ण है क्योंकि Listmonk सापेक्ष पथों (relative paths) को, जिसमें फाइलसिस्टम मीडिया अपलोड पथ भी शामिल है, इसके सापेक्ष हल करता है। After=postgresql.service केवल स्टार्ट होने के क्रम को निर्धारित करता है, यह इस बात की प्रतीक्षा नहीं करता कि Postgres कनेक्शन स्वीकार करने के लिए तैयार है या नहीं, इसलिए Restart=on-failure उस स्थिति को संभालता है जहाँ Listmonk बहुत जल्दी शुरू हो जाता है और कनेक्ट नहीं हो पाता है।
sudo systemctl daemon-reload
sudo systemctl enable --now listmonk
ss -ltnp | grep 9000
curl -sI http://127.0.0.1:9000/ss को LISTEN अवस्था में 127.0.0.1:9000 दिखाना चाहिए। curl द्वारा कोई भी HTTP स्टेटस लाइन लौटाने का अर्थ है कि सर्वर उत्तर दे रहा है। curl के Connection refused के साथ विफल होने का अर्थ है कि स्टार्टअप के दौरान प्रक्रिया समाप्त हो गई, और journalctl -u listmonk -n 50 --no-pager इसका कारण बताएगा। ध्यान दें कि enable --now वह हिस्सा है जो रीबूट के बाद भी बना रहता है: मैन्युअल रूप से शुरू की गई प्रक्रिया अगले kernel अपग्रेड के बाद समाप्त हो जाती है।
nginx और TLS को आगे रखें
Listmonk लूपबैक पर plain HTTP का उपयोग करता है, इसलिए nginx TLS (transport layer security) को समाप्त करता है और अनुरोध को आगे भेजता है।
server {
listen 443 ssl;
server_name lists.example.com;
client_max_body_size 25m;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}client_max_body_size को बढ़ाना आवश्यक है क्योंकि सब्सक्राइबर इम्पोर्ट और मीडिया अपलोड फाइल पोस्ट होते हैं, और nginx डिफ़ॉल्ट रूप से 413 Request Entity Too Large के साथ 1 MB से अधिक की किसी भी चीज़ को अस्वीकार कर देता है। certbot के साथ सर्टिफिकेट जारी करें, जो आपके लिए listen 443 ssl लाइनें और पोर्ट 80 से रीडायरेक्ट भी लिखता है: इसके चरण nginx के लिए Let's Encrypt सर्टिफिकेट गाइड में दिए गए हैं। पोर्ट 80 और 443 खोलें, और 9000 को बंद रखें, क्योंकि प्रॉक्सी लूपबैक के माध्यम से उस तक पहुँचता है। यदि फ़ायरवॉल अभी तक कॉन्फ़िगर नहीं किया गया है, तो ufw फ़ायरवॉल बेसिक्स से शुरुआत करें।
फिर एडमिन पैनल खोलें और Settings के अंतर्गत रूट URL को https://lists.example.com पर सेट करें। एक फ्रेश इंस्टॉलेशन में http://localhost:9000 होता है, और Listmonk उस मान को हर उस अनसब्सक्राइब लिंक और मीडिया URL में लिखता है जिसे वह ईमेल में डालता है। यदि आप इसे बदलने से पहले कोई कैंपेन भेजते हैं, तो प्रत्येक प्राप्तकर्ता को ऐसे लिंक मिलेंगे जो उनकी अपनी मशीन की ओर इशारा करते हैं। वे रीडर के लिए काम नहीं करेंगे, और स्पैम फ़िल्टर के लिए वे ऐसे प्रेषक की तरह दिखेंगे जो अपना डोमेन कॉन्फ़िगर नहीं कर सकता है।
SMTP को कनेक्ट करना, जो config.toml में नहीं है
config.toml में SMTP सेक्शन खोजें, आपको वह नहीं मिलेगा। मेल सेटिंग्स डेटाबेस में settings टेबल के भीतर रहती हैं, और आप उन्हें एडमिन पैनल में Settings और SMTP के अंतर्गत संपादित करते हैं। यही कारण है कि जेनरेट की गई फ़ाइल इतनी छोटी रहती है, और यही कारण है कि SMTP में बदलाव के लिए किसी रीस्टार्ट की आवश्यकता नहीं होती है।
स्वयं SMTP सर्वर के लिए दो ईमानदार विकल्प हैं। अपना स्वयं का सर्वर चलाएं, जो प्रतिष्ठा की पूरी जिम्मेदारी आपके हाथों में सौंप देता है और अपने आप में एक बड़ा प्रोजेक्ट है: Mailcow के साथ अपना स्वयं का मेल सर्वर चलाना इसमें शामिल प्रक्रियाओं को कवर करता है। या Listmonk को एक ट्रांजेक्शनल रिले की ओर निर्देशित करें और IP प्रतिष्ठा की जिम्मेदारी किसी और को लेने दें।
किसी भी स्थिति में, STARTTLS के साथ पोर्ट 587, या इम्प्लिसिट TLS के साथ पोर्ट 465 का उपयोग करें। आउटबाउंड पोर्ट 25 पर निर्भर न रहें। अधिकांश VPS प्रदाता नए खातों पर इसे डिफ़ॉल्ट रूप से ब्लॉक कर देते हैं, और एक ब्लॉक किया गया पोर्ट 25 बिल्कुल हैंग हुए कनेक्शन जैसा दिखता है, क्योंकि पैकेट को अस्वीकार करने के बजाय ड्रॉप कर दिया जाता है, इसलिए क्लाइंट विफल होने के बजाय टाइमआउट की प्रतीक्षा करता है।
उस पर भरोसा करने से पहले उसका परीक्षण करें। एक लिस्ट बनाएं, अपना स्वयं का पता एक सब्सक्राइबर के रूप में जोड़ें, और एक प्राप्तकर्ता वाला कैंपेन भेजें। प्राप्त संदेश को खोलें और पूर्ण हेडर पढ़ें। प्राप्त करने वाली साइड द्वारा जोड़ा गया Authentication-Results हेडर आपको बताता है कि क्या SPF और DKIM पास हुए हैं।
Deliverability ही मुख्य कार्य है
Listmonk संदेश तैयार करता है, लिस्ट को ट्रैक करता है, और मेल को आगे भेजता है। मेल इनबॉक्स तक पहुँचेगा या नहीं, इसका हर निर्णय प्राप्तकर्ता प्रदाता (receiving provider) द्वारा लिया जाता है। यह निर्णय भेजने वाले के IP address और domain के आधार पर होता है। एक नए VPS IP का कोई पिछला इतिहास नहीं होता है, और किसी भी बड़े मेलबॉक्स प्रदाता द्वारा बिना इतिहास वाले IP को थोड़ा संदिग्ध माना जाता है।
चार चीजें अनिवार्य हैं:
- एक SPF (sender policy framework) TXT record, जो आपके domain की ओर से मेल भेजने के लिए अधिकृत host का नाम बताता है।
- एक DKIM (domainkeys identified mail) key, जिसे TXT record के रूप में प्रकाशित किया जाता है, जहाँ signing का कार्य Listmonk के बजाय mail server द्वारा किया जाता है।
- एक DMARC (domain based message authentication, reporting and conformance) record, जो प्राप्तकर्ताओं को यह बताता है कि यदि पहले दो विफल हो जाएँ तो क्या करना है।
- एक bounce mailbox जिसे Listmonk पढ़ता है, ताकि जो पते मेल को अस्वीकार करते हैं, वे लिस्ट से हट जाएँ और उन्हें बार-बार भेजने का प्रयास न किया जाए।
शुरुआत में धीरे-धीरे मेल भेजें। जिस domain ने कभी मेल नहीं भेजा, यदि वह अचानक एक घंटे में दस हजार संदेश भेजता है, तो यह एक compromised account जैसा दिखता है, इसलिए इसे उसी तरह filter कर दिया जाता है। अपने सबसे सक्रिय subscribers के साथ शुरुआत करें और दिनों के दौरान भेजने की मात्रा बढ़ाएँ।
हर template में एक कार्यशील unsubscribe link होना भी आवश्यक है। Listmonk template में वह {{ UnsubscribeURL }} है, और campaign body वहाँ आती है जहाँ {{ template "content" . }} स्थित होता है, जिसे प्रति template ठीक एक बार आना चाहिए। बिना unsubscribe link वाली campaign में unsubscribe के बजाय spam complaints मिलती हैं, और complaints उस sending reputation को खोने का सबसे तेज़ तरीका हैं जिसे बनाने में आपने हफ़्तों का समय लगाया है।
बैकअप, और रिस्टोर के लिए वास्तव में क्या आवश्यक है
सर्वर से दो चीजें बाहर जानी चाहिए: डेटाबेस डंप और config.toml। यदि आप अभियानों (campaigns) में चित्र अपलोड करते हैं, तो मीडिया डायरेक्टरी को भी शामिल करें।
sudo -u postgres pg_dump -Fc listmonk > listmonk-$(date +%F).dumpउस डंप में सब्सक्राइबर, अभियान, टेम्प्लेट और प्रत्येक सेटिंग होती है, जिसमें SMTP क्रेडेंशियल्स भी शामिल हैं, इसलिए इसे एन्क्रिप्ट करें और इस सर्वर से दूर रखें। इसे शेड्यूल करना एक हल की गई समस्या है: रिमोट स्टोरेज पर एन्क्रिप्टेड restic बैकअप देखें। config.toml कुछ ही लाइनों की फाइल है लेकिन इसमें डेटाबेस पासवर्ड होता है, इसलिए इसके साथ भी वैसा ही व्यवहार करें।
अपग्रेड एक निश्चित क्रम का पालन करते हैं। सर्विस को रोकें, डंप लें, /usr/bin में बाइनरी को बदलें, listmonk --config /etc/listmonk/config.toml --upgrade चलाएं, और फिर सर्विस शुरू करें। स्कीमा माइग्रेशन केवल आगे की ओर चलते हैं, इसलिए वह डंप ही वापस जाने का आपका एकमात्र रास्ता है।
Listmonk शुरू होने में विफल क्यों होता है?
सबसे पहले journalctl -u listmonk -n 50 --no-pager के साथ जर्नल पढ़ें। स्टार्टअप की लगभग हर विफलता [db] ब्लॉक की एक पंक्ति में होती है।
pq: password authentication failed for user "listmonk" का अर्थ है कि [db] में दिया गया पासवर्ड Postgres रोल से मेल नहीं खाता है। pq उपसर्ग Postgres ड्राइवर है जो सर्वर द्वारा अस्वीकृति की रिपोर्ट कर रहा है, इसलिए कॉन्फ़िगरेशन सही ढंग से पढ़ा गया था लेकिन क्रेडेंशियल गलत थे। sudo -u postgres psql -c "ALTER USER listmonk WITH PASSWORD 'new-password';" के साथ रोल को रीसेट करें और फ़ाइल में वही स्ट्रिंग डालें।
pq: database "listmonk" does not exist का अर्थ है कि [db] में database मान किसी वास्तविक डेटाबेस का नाम नहीं है। sudo -u postgres psql -l सर्वर पर मौजूद डेटाबेस की सूची दिखाता है, जिसमें वह स्पेलिंग भी शामिल है जिसे आपने गलती से इस्तेमाल किया था।
--install के दौरान permission denied का अर्थ है कि रोल कनेक्ट तो हो सकता है लेकिन वह डेटाबेस का स्वामी नहीं है, इसलिए वह इसमें टेबल नहीं बना सकता। इसे sudo -u postgres psql -c "ALTER DATABASE listmonk OWNER TO listmonk;" के साथ ठीक करें और इंस्टॉलेशन को दोबारा चलाएं।
सर्विस कभी शुरू नहीं होती और जर्नल कॉन्फ़िगरेशन फ़ाइल का नाम बताता है। listmonk के रूप में चलने वाली प्रक्रिया 600 मोड के साथ root:root के रूप में छोड़ी गई config.toml को नहीं खोल सकती है। stat -c '%U:%G %a' /etc/listmonk/config.toml को root:listmonk 640 प्रिंट करना चाहिए, और इसके ऊपर की डायरेक्टरी root:listmonk 750 होनी चाहिए।
पैनल काम करता है लेकिन कोई मेल नहीं आता है। यह स्टार्टअप की समस्या नहीं है। पहले Settings और SMTP की जांच करें, फिर एडमिन पैनल में कैंपेन का अपना लॉग देखें, जो प्रत्येक प्रयास के लिए मेल सर्वर द्वारा लौटाई गई त्रुटि को रिकॉर्ड करता है।
FAQ
क्या Listmonk का उपयोग करने के लिए मुझे अपने स्वयं के मेल सर्वर की आवश्यकता है?
नहीं। Listmonk एक मेल सर्वर नहीं है। इसे ऐसे सर्वर के लिए SMTP क्रेडेंशियल्स की आवश्यकता होती है जो आपके मेल को स्वीकार करे और उसे डिलीवर करे। यह कोई ट्रांसेक्शनल रिले या आपका अपना मेल सर्वर हो सकता है। इन क्रेडेंशियल्स को एडमिन पैनल में Settings और SMTP के अंतर्गत सेट करें, न कि config.toml में, क्योंकि मेल सेटिंग्स डेटाबेस में रहती हैं। STARTTLS के साथ पोर्ट 587 या इम्प्लिसिट TLS के साथ पोर्ट 465 का उपयोग करें, क्योंकि अधिकांश VPS प्रदाता नए खातों पर आउटबाउंड पोर्ट 25 को ब्लॉक कर देते हैं।
मेरे कैंपेन के लिंक localhost:9000 पर क्यों पॉइंट कर रहे हैं?
रूट URL सेटिंग अभी भी अपने इंस्टॉलेशन डिफॉल्ट http://localhost:9000 पर है। Listmonk कैंपेन भेजे जाने के समय उस मान को अनसब्सक्राइब लिंक और मीडिया URL में लिखता है। एडमिन पैनल में Settings खोलें, रूट URL को अपने वास्तविक HTTPS पते पर सेट करें और सेव करें। जो संदेश पहले ही डिलीवर हो चुके हैं उन्हें सुधारा नहीं जा सकता है, इसलिए वास्तविक लिस्ट को मेल करने से पहले खुद को एक टेस्ट कैंपेन भेजें और उसमें अनसब्सक्राइब लिंक पर क्लिक करें।
क्या --install को दोबारा चलाने से मेरे सब्सक्राइबर्स हट जाएंगे?
हाँ। --install पहली बार का इंस्टॉलर है और यह मौजूदा Listmonk स्कीमा को हटा देता है, और --yes उस प्रॉम्प्ट को हटा देता है जो आपको चेतावनी देता। किसी भी ऐसी स्क्रिप्ट में जो दो बार चल सकती है, --install --idempotent --yes का उपयोग करें, जो टेबल पहले से मौजूद होने पर कुछ नहीं करता है। नए रिलीज में स्कीमा परिवर्तनों को लागू करने के लिए, सर्विस को रोकें, pg_dump लें, फिर --upgrade चलाएं।
Listmonk यह क्यों कहता है कि उपयोगकर्ता listmonk के लिए पासवर्ड प्रमाणीकरण विफल रहा?
/etc/listmonk/config.toml के [db] ब्लॉक में मौजूद पासवर्ड उसी नाम के Postgres रोल से मेल नहीं खाता है। जर्नल लाइन pq: password authentication failed for user "listmonk" है, और pq वह Postgres ड्राइवर है जो सर्वर के रिजेक्शन को आगे बढ़ा रहा है, जिसका अर्थ है कि कॉन्फ़िगरेशन फ़ाइल मिल गई थी और उसे पढ़ लिया गया था। sudo -u postgres psql -c "ALTER USER listmonk WITH PASSWORD 'new-password';" के साथ रोल का पासवर्ड रीसेट करें, समान स्ट्रिंग को कॉन्फ़िगरेशन फ़ाइल में लिखें, फिर sudo systemctl restart listmonk चलाएं।