Самостійне розміщення

Вимоги

Перш ніж запускати сценарій встановлення, переконайтеся, що у вас є:

  • Операційна система: сервер на базі Linux (наприклад, Ubuntu 22.04+).
  • Ресурси: 1 vCPU і 2 ГБ оперативної пам’яті
  • Кореневий доступ: адміністративні привілеї для виконання команд.
  • Доменне ім'я: спеціальний домен, готовий для налаштування DNS.
  • Чистий IP: переконайтеся, що ваш сервер має чисту IP-адресу без попередньої репутації спаму, перевіривши чорні списки. Більше інформації тут.

[!ПОРАДА] Перегляньте наш список чудові постачальники поштових серверів

Cloud-init / User-data

Більшість постачальників хмарних технологій підтримують конфігурацію хмарної ініціалізації, коли надається віртуальний приватний сервер (VPS). Це чудовий спосіб завчасно встановити деякі файли та змінні середовища для використання логікою початкового налаштування сценаріїв, що дозволить уникнути необхідності запитувати додаткову інформацію під час виконання сценарію.

Опції

  • EMAIL - EMAIL змінна середовища, яка використовується для нагадувань про завершення терміну дії боту сертифіката
  • DOMAIN - спеціальний домен, який використовується для налаштування самостійного хостингу
  • AUTH_BASIC_USERNAME - ім'я користувача, використане під час першого налаштування для захисту сайту
  • AUTH_BASIC_PASSWORD - пароль, який використовується під час першого налаштування для захисту сайту
  • /root/.cloudflare.ini - (Тільки для користувачів Cloudflare)файл конфігурації cloudflare, який використовується certbot для налаштування DNS. Вам потрібно встановити маркер API через dns_cloudflare_api_token. Читати далі тут.

приклад:

#cloud-config
write_files:
  - path: /root/.cloudflare.ini
    content: |
      dns_cloudflare_api_token = "xxx"
    owner: root:root
    permissions: '0600'
  - path: /etc/profile.d/env.sh
    content: |
      export EMAIL="test@myemail.com"
      export DOMAIN="mydomain.com"

runcmd:

  • chmod +x /etc/profile.d/env.sh

встановити

Виконайте таку команду на своєму сервері, щоб завантажити та виконати сценарій встановлення:

bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Сценарій встановлення налагодження

Додайте DEBUG=true перед сценарієм встановлення для детального виведення:

DEBUG=true bash <(curl -fsSL https://raw.githubusercontent.com/forwardemail/forwardemail.net/master/self-hosting/setup.sh)

Підказки

1. Initial setup
2. Setup Backups
3. Setup Auto Upgrades
4. Renew certificates
5. Restore from Backup
6. Help
7. Exit
  • Початкове налаштування: завантажте найновіший код пересилання електронної пошти, налаштуйте середовище, запитайте свій власний домен і налаштуйте всі необхідні сертифікати, ключі та секрети.
  • Налаштувати резервне копіювання: налаштує cron для резервного копіювання mongoDB і redis за допомогою S3-сумісного сховища для безпечного віддаленого зберігання. Окремо буде створено резервну копію sqlite під час входу в систему, якщо внесено зміни щодо безпечних, зашифрованих резервних копій.
  • Оновлення налаштування: Налаштуйте cron для пошуку нічних оновлень, які безпечно перебудують і перезапустять компоненти інфраструктури.
  • Відновити сертифікати: Certbot / lets encrypt використовується для SSL-сертифікатів, а термін дії ключів закінчується кожні 3 місяці. Це оновить сертифікати для вашого домену та помістить їх у потрібну папку для споживання пов’язаними компонентами. див важливі шляхи до файлів
  • Відновити з резервної копії: запускає mongodb і redis для відновлення з даних резервної копії.

Початкове налаштування (Варіант 1)

Виберіть варіант 1. Initial setup почати.

Після завершення ви повинні побачити повідомлення про успіх. Можна навіть бігати docker ps побачити в компоненти закрутилися. Більше інформації про компоненти нижче.

Послуги

Назва службиПорт за замовчуваннямОпис
Інтернет443Веб-інтерфейс для всіх взаємодій адміністратора
API4000Рівень API для абстрактних баз даних
БріЖодногоФонове завдання та засіб запуску завдань
SMTP465/587Сервер SMTP для вихідної електронної пошти
SMTP БріЖодногоФонове завдання SMTP
MX2525Обмін поштою для вхідної електронної пошти та пересилання електронної пошти
IMAP993/2993Сервер IMAP для вхідної електронної пошти та керування поштовою скринькою
POP3995/2995Сервер POP3 для вхідної електронної пошти та керування поштовою скринькою
SQLite3456Сервер SQLite для взаємодії з базами даних sqlite
SQLite БріЖодногоФонова робота SQLite
CalDAV5000Сервер CalDAV для керування календарем
MongoDB27017База даних MongoDB для управління більшістю даних
Redis6379Redis для кешування та керування станом
SQLiteЖодногоБаза даних SQLite для зашифрованих поштових скриньок

Важливі шляхи до файлів

Примітка: Шлях хоста нижче відносно /root/forwardemail.net/self-hosting/.

компонентШлях хостаКонтейнерний шлях
MongoDB./mongo-backups/backups
Redis./redis-data/data
Sqlite./sqlite-data/mnt/{SQLITE_STORAGE_PATH}
Env файл./.env/app/.env
Сертифікати/ключі SSL./ssl/app/ssl/
Приватний ключ./ssl/privkey.pem/app/ssl/privkey.pem
Сертифікат повного ланцюга./ssl/fullchain.pem/app/ssl/fullchain.pem
сертифікати ЦС./ssl/cert.pem/app/ssl/cert.pem
Закритий ключ DKIM./ssl/dkim.key/app/ssl/dkim.key

[!ВАЖЛИВО] Зберегти .env файл безпечно. Це критично важливо для відновлення в разі збою. Ви можете знайти це в /root/forwardemail.net/self-hosting/.env.

Конфігурація

Початкове налаштування DNS

У обраному постачальнику DNS налаштуйте відповідні записи DNS. Зверніть увагу на будь-що в дужках (<>) є динамічним і потребує оновлення відповідно до вашого значення.

ТипІм'яЗмістTTL
A"@", "." або порожній<ip_address>авто
CNAMEapi<назва_домену>авто
CNAMEкальдав<назва_домену>авто
CNAMEфе-підскоки<назва_домену>авто
CNAMEimap<назва_домену>авто
CNAMEmx<назва_домену>авто
CNAMEпоп3<назва_домену>авто
CNAMEsmtp<назва_домену>авто
MX"@", "." або порожнійmx.<domain_name> (пріоритет 0)авто
TXT"@", "." або порожній"v=spf1 a -все"авто
Зворотний запис DNS / PTR

Зворотний DNS (rDNS) або записи зворотного вказівника (записи PTR) важливі для серверів електронної пошти, оскільки вони допомагають перевірити легітимність сервера, який надсилає електронний лист. Кожен хмарний постачальник робить це по-різному, тому вам потрібно буде знайти, як додати «Зворотний DNS», щоб зіставити хост та IP-адресу з відповідним іменем хоста. Швидше за все в мережевому розділі провайдера.

Порт 25 заблоковано

Деякі інтернет-провайдери та хмарні провайдери блокують 25, щоб уникнути зловмисників. Можливо, вам знадобиться подати заявку в службу підтримки, щоб відкрити порт 25 для SMTP/вихідної електронної пошти.

Онбордінг

  1. Відкрийте цільову сторінку Перейдіть до https://<domain_name>, замінивши <domain_name> на домен, налаштований у ваших налаштуваннях DNS. Ви повинні побачити цільову сторінку «Переслати електронний лист».

  2. Увійдіть і зареєструйте свій домен

  • Увійдіть за допомогою дійсної електронної пошти та пароля.
  • Введіть доменне ім’я, яке ви бажаєте налаштувати (воно повинно відповідати конфігурації DNS).
  • Дотримуйтесь підказок, щоб додати необхідне MX і TXT записи для перевірки.
  1. Повна настройка
  • Після перевірки перейдіть на сторінку псевдонімів, щоб створити свій перший псевдонім.
  • За бажанням налаштуйте SMTP для вихідної електронної пошти в Налаштування домену. Для цього потрібні додаткові записи DNS.

[!ПРИМІТКА] Жодна інформація не надсилається за межі вашого сервера. Опція самостійного розміщення та початковий обліковий запис призначені лише для входу адміністратора та веб-перегляду для керування доменами, псевдонімами та пов’язаними конфігураціями електронної пошти.

Тестування

Створення вашого першого псевдоніма

  1. Перейдіть на сторінку псевдонімів Відкрийте сторінку керування псевдонімами:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
  1. Додайте новий псевдонім
  • Натисніть Додати псевдонім (верхній правий).
  • Введіть псевдонім і за потреби налаштуйте параметри електронної пошти.
  • (Необов’язково) Увімкнути IMAP/POP3/CalDAV підтримку, встановивши прапорець.
  • Натисніть Створити псевдонім.
  1. Встановіть пароль
  • Натисніть Згенерувати пароль створити надійний пароль.
  • Цей пароль знадобиться для входу у ваш поштовий клієнт.
  1. Налаштуйте свій клієнт електронної пошти
  • Використовуйте поштовий клієнт, наприклад Thunderbird.
  • Введіть псевдонім і згенерований пароль.
  • Налаштуйте IMAP і SMTP налаштування відповідно.
Налаштування сервера електронної пошти

Ім'я користувача: <alias name>

ТипІм'я хостаПортБезпека підключенняАутентифікація
SMTPsmtp.<ім'я_домену>465SSL / TLSЗвичайний пароль
IMAPimap.<ім'я_домену>993SSL / TLSЗвичайний пароль

Надсилання/отримання вашого першого електронного листа

Після налаштування ви зможете надсилати та отримувати електронну пошту на свою щойно створену адресу електронної пошти!

Технічне обслуговування

How do I backup my data

Дотримуйтесь встановити скрипт і вибирайте option 2 у підказці.

How do I renew my certificates

Дотримуйтесь встановити скрипт і вибирайте option 3 у підказці.

How do I upgrade to the latest forward email code

Дотримуйтесь встановити скрипт і вибирайте option 4 у підказці.

How do I restore from a backup

Дотримуйтесь встановити скрипт і вибирайте option 6 у підказці.

Усунення несправностей

Why is the certbot acme challenge failing

Найбільш поширеною помилкою є те, що certbot / letsencrypt іноді запитує 2 виклики. Потрібно обов'язково додати BOTH txt записи.

приклад: Ви можете побачити два таких виклики: _acme-challenge.example.com -> "randomstring1" _acme-challenge.example.com -> "randomstring2"

Також можливо, що розповсюдження DNS не завершено. Ви можете використовувати такі інструменти, як: https://toolbox.googleapps.com/apps/dig/#TXT/_acme-challenge.<your_domain>. Це дасть вам уявлення про те, чи потрібно відображати зміни запису TXT. Також можливо, що локальний кеш DNS на вашому хості все ще використовує старе, застаріле значення або не отримав останні зміни.

Іншим варіантом є використання автоматичних змін DNS cerbot, встановивши /root/.cloudflare.ini файл із маркером API у вашому cloud-init / user-data під час початкового налаштування VPS або створіть цей файл і знову запустіть сценарій. Це автоматично керуватиме змінами DNS і оскаржуватиме оновлення.

What is the basic auth username and password

Для самостійного розміщення ми додаємо спливаюче вікно нативної автентифікації браузера з простим іменем користувача (admin) і пароль (випадково згенерований під час початкового налаштування). Ми просто додаємо це як захист на випадок, якщо автоматизація/скребки якимось чином не завадять вам спочатку зареєструватися в Інтернеті. Ви можете знайти цей пароль після початкового налаштування у своєму .env файл під AUTH_BASIC_USERNAME і AUTH_BASIC_PASSWORD.

How do I know what is running

Ви можете бігти docker ps щоб побачити всі запущені контейнери, які розкручуються з docker-compose-self-hosting.yml файл. Ви також можете бігати docker ps -a щоб побачити все (включаючи контейнери, які не запущені).

How do I know if something isn't running that should be

Ви можете бігти docker ps -a щоб побачити все (включаючи контейнери, які не запущені). Ви можете побачити журнал виходу або примітку.

How do I find logs

Ви можете отримати більше журналів через docker logs -f <container_name>. Якщо щось вийшло, це, ймовірно, пов’язано з .env файл налаштовано неправильно.

У веб-інтерфейсі ви можете переглядати /admin/emails і /admin/logs для журналів вихідної електронної пошти та журналів помилок відповідно.

Why are my outgoing emails timing out

Якщо під час підключення до MX-сервера ви бачите повідомлення на кшталт «Час очікування з’єднання минув», можливо, вам потрібно перевірити, чи не заблоковано порт 25. Інтернет-провайдери або хмарні провайдери зазвичай блокують це за замовчуванням, коли вам може знадобитися зв’язатися з підтримкою або подати заявку, щоб відкрити це.

What tool(s) should I use to test email configuration best practices and IP reputation

Подивіться на наш FAQ тут.

mxtoolbox

інструменти google postmaster

Використовуйте IP-адресу свого сервера, щоб перевірити наступні сайти на наявність їх у чорному списку. На жаль, звичайні хмарні постачальники нерідко мають проблеми з репутацією IP-адреси через спам електронною поштою. Якщо ви бачите свою IP-адресу в чорному списку, рекомендуємо запустити новий сервер і перевірити нову IP-адресу.

спамхаус

спам