Самостійне розміщення
монтаж
Вимоги
Перш ніж запускати сценарій встановлення, переконайтеся, що у вас є:
- Операційна система: сервер на базі 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 | Веб-інтерфейс для всіх взаємодій адміністратора |
API | 4000 | Рівень API для абстрактних баз даних |
Брі | Жодного | Фонове завдання та засіб запуску завдань |
SMTP | 465/587 | Сервер SMTP для вихідної електронної пошти |
SMTP Брі | Жодного | Фонове завдання SMTP |
MX | 2525 | Обмін поштою для вхідної електронної пошти та пересилання електронної пошти |
IMAP | 993/2993 | Сервер IMAP для вхідної електронної пошти та керування поштовою скринькою |
POP3 | 995/2995 | Сервер POP3 для вхідної електронної пошти та керування поштовою скринькою |
SQLite | 3456 | Сервер SQLite для взаємодії з базами даних sqlite |
SQLite Брі | Жодного | Фонова робота SQLite |
CalDAV | 5000 | Сервер CalDAV для керування календарем |
MongoDB | 27017 | База даних MongoDB для управління більшістю даних |
Redis | 6379 | Redis для кешування та керування станом |
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> | авто |
CNAME | api | <назва_домену> | авто |
CNAME | кальдав | <назва_домену> | авто |
CNAME | фе-підскоки | <назва_домену> | авто |
CNAME | imap | <назва_домену> | авто |
CNAME | mx | <назва_домену> | авто |
CNAME | поп3 | <назва_домену> | авто |
CNAME | smtp | <назва_домену> | авто |
MX | "@", "." або порожній | mx.<domain_name> (пріоритет 0) | авто |
TXT | "@", "." або порожній | "v=spf1 a -все" | авто |
Зворотний запис DNS / PTR
Зворотний DNS (rDNS) або записи зворотного вказівника (записи PTR) важливі для серверів електронної пошти, оскільки вони допомагають перевірити легітимність сервера, який надсилає електронний лист. Кожен хмарний постачальник робить це по-різному, тому вам потрібно буде знайти, як додати «Зворотний DNS», щоб зіставити хост та IP-адресу з відповідним іменем хоста. Швидше за все в мережевому розділі провайдера.
Порт 25 заблоковано
Деякі інтернет-провайдери та хмарні провайдери блокують 25, щоб уникнути зловмисників. Можливо, вам знадобиться подати заявку в службу підтримки, щоб відкрити порт 25 для SMTP/вихідної електронної пошти.
Онбордінг
-
Відкрийте цільову сторінку Перейдіть до https://<domain_name>, замінивши <domain_name> на домен, налаштований у ваших налаштуваннях DNS. Ви повинні побачити цільову сторінку «Переслати електронний лист».
-
Увійдіть і зареєструйте свій домен
- Увійдіть за допомогою дійсної електронної пошти та пароля.
- Введіть доменне ім’я, яке ви бажаєте налаштувати (воно повинно відповідати конфігурації DNS).
- Дотримуйтесь підказок, щоб додати необхідне MX і TXT записи для перевірки.
- Повна настройка
- Після перевірки перейдіть на сторінку псевдонімів, щоб створити свій перший псевдонім.
- За бажанням налаштуйте SMTP для вихідної електронної пошти в Налаштування домену. Для цього потрібні додаткові записи DNS.
[!ПРИМІТКА] Жодна інформація не надсилається за межі вашого сервера. Опція самостійного розміщення та початковий обліковий запис призначені лише для входу адміністратора та веб-перегляду для керування доменами, псевдонімами та пов’язаними конфігураціями електронної пошти.
Тестування
Створення вашого першого псевдоніма
- Перейдіть на сторінку псевдонімів Відкрийте сторінку керування псевдонімами:
https://<domain_name>/en/my-account/domains/<domain_name>/aliases
- Додайте новий псевдонім
- Натисніть Додати псевдонім (верхній правий).
- Введіть псевдонім і за потреби налаштуйте параметри електронної пошти.
- (Необов’язково) Увімкнути IMAP/POP3/CalDAV підтримку, встановивши прапорець.
- Натисніть Створити псевдонім.
- Встановіть пароль
- Натисніть Згенерувати пароль створити надійний пароль.
- Цей пароль знадобиться для входу у ваш поштовий клієнт.
- Налаштуйте свій клієнт електронної пошти
- Використовуйте поштовий клієнт, наприклад Thunderbird.
- Введіть псевдонім і згенерований пароль.
- Налаштуйте IMAP і SMTP налаштування відповідно.
Налаштування сервера електронної пошти
Ім'я користувача: <alias name>
Тип | Ім'я хоста | Порт | Безпека підключення | Аутентифікація |
---|---|---|---|---|
SMTP | smtp.<ім'я_домену> | 465 | SSL / TLS | Звичайний пароль |
IMAP | imap.<ім'я_домену> | 993 | SSL / 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 тут.
Використовуйте IP-адресу свого сервера, щоб перевірити наступні сайти на наявність їх у чорному списку. На жаль, звичайні хмарні постачальники нерідко мають проблеми з репутацією IP-адреси через спам електронною поштою. Якщо ви бачите свою IP-адресу в чорному списку, рекомендуємо запустити новий сервер і перевірити нову IP-адресу.