feat(poste-io): instructions and customization (#754)
* feat(poste-io): instructions and customization * fix(poste-io): change URL scheme in instructions * fix(poste-io): wording in instructions * fix(poste-io): remove port customization
This commit is contained in:
parent
1b9b9db16f
commit
fe963d9176
|
|
@ -1,52 +1,103 @@
|
||||||
captainVersion: 4
|
captainVersion: 4
|
||||||
services:
|
services:
|
||||||
$$cap_appname:
|
$$cap_appname:
|
||||||
image: analogic/poste.io:$$cap_poste_version
|
image: analogic/poste.io:$$cap_POSTE_VERSION
|
||||||
ports:
|
hostname: $$cap_POSTE_HOSTNAME
|
||||||
- 25:25
|
|
||||||
- 110:110
|
|
||||||
- 143:143
|
|
||||||
- 465:465
|
|
||||||
- 587:587
|
|
||||||
- 993:993
|
|
||||||
- 995:995
|
|
||||||
- 4190:4190
|
|
||||||
volumes:
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
- $$cap_appname-data:/data
|
|
||||||
restart: always
|
|
||||||
environment:
|
environment:
|
||||||
HTTPS: OFF
|
TZ: $$cap_POSTE_TZ
|
||||||
LETSENCRYPT_EMAIL: $$cap_email
|
HTTPS: $$cap_POSTE_HTTPS
|
||||||
LETSENCRYPT_HOST: $$cap_host
|
DISABLE_CLAMAV: $$cap_POSTE_DISABLE_CLAMAV
|
||||||
VIRTUAL_HOST: $$cap_host
|
DISABLE_RSPAMD: $$cap_POSTE_DISABLE_RSPAMD
|
||||||
|
DISABLE_ROUNDCUBE: $$cap_POSTE_DISABLE_ROUNDCUBE
|
||||||
|
VIRTUAL_HOST: $$cap_POSTE_HOSTNAME
|
||||||
|
ports:
|
||||||
|
- '25:25'
|
||||||
|
- '110:110'
|
||||||
|
- '143:143'
|
||||||
|
- '465:465'
|
||||||
|
- '587:587'
|
||||||
|
- '993:993'
|
||||||
|
- '995:995'
|
||||||
|
- '4190:4190'
|
||||||
|
volumes:
|
||||||
|
- $$cap_appname:/data
|
||||||
caproverOneClickApp:
|
caproverOneClickApp:
|
||||||
variables:
|
|
||||||
- id: $$cap_poste_version
|
|
||||||
label: Poste.io version tag
|
|
||||||
description: Check out their Docker page for the valid tags https://hub.docker.com/r/analogic/poste.io/tags
|
|
||||||
defaultValue: '2'
|
|
||||||
- id: $$cap_email
|
|
||||||
label: Email Address
|
|
||||||
description: The email address used for Lets Encrypt certificates.
|
|
||||||
- id: $$cap_host
|
|
||||||
label: Hostname
|
|
||||||
description: The full hostname for this captain app. (usually mail.mydomain.com)
|
|
||||||
instructions:
|
|
||||||
start: >-
|
|
||||||
SMTP + IMAP + POP3 + Antispam + Antivirus + Web administration + Web email on your server in ~5 minutes
|
|
||||||
|
|
||||||
|
|
||||||
Recommended: Use "mail" as the App Name.
|
|
||||||
end: >-
|
|
||||||
Please paste the preDeployFunction from https://github.com/caprover/caprover/issues/479#issuecomment-520902309 to the App Config > Pre-Deploy section of your created poste.io instance $$cap_appname.
|
|
||||||
|
|
||||||
|
|
||||||
Also ensure that you've set up the reverse DNS (PTR record) for your server and DKIM, SPF (DNS TXT) records.
|
|
||||||
|
|
||||||
|
|
||||||
The deployment can take up to 2 minutes.
|
|
||||||
displayName: Poste.io
|
displayName: Poste.io
|
||||||
isOfficial: true
|
isOfficial: true
|
||||||
description: Poste.io - complete mailserver built in one container
|
description: Complete mail server built in one container
|
||||||
documentation: Read the poste.io documentation @ https://poste.io/doc
|
documentation: https://poste.io/doc
|
||||||
|
instructions:
|
||||||
|
start: |-
|
||||||
|
SMTP + IMAP + POP3 + Antispam + Antivirus + Web Administration + Web Mail on your server in ca. 5 minutes.
|
||||||
|
|
||||||
|
**Important notes:**
|
||||||
|
- You may need to open the ports `25`, `110`, `143`, `465`, `587`, `993`, `995` and `4190` on your firewall
|
||||||
|
- You will need access to DNS configuration after deployment
|
||||||
|
- It's recommended to use `mail` as the app name
|
||||||
|
end: |-
|
||||||
|
Poste.io has been successfully deployed!
|
||||||
|
|
||||||
|
Before you can start using it, you need to perform some steps.
|
||||||
|
You only need to do this once.
|
||||||
|
**Please screenshot/copy the following instructions before proceeding:**
|
||||||
|
|
||||||
|
1. Go to the **App Configs** of your deployment `$$cap_appname` here in CapRover
|
||||||
|
2. Insert the following snippet into **Pre-Deploy Script**: `var preDeployFunction = function (captainAppObj, dockerUpdateObject) {var ports = dockerUpdateObject.EndpointSpec.Ports || [];ports.forEach(function (port) {port.PublishMode = "host";});return Promise.resolve(dockerUpdateObject);};`
|
||||||
|
3. Go to the **HTTP Settings** and **Edit Default Nginx Configurations**
|
||||||
|
4. Search for **last occurrence** of `location /.well-known/acme-challenge/` and replace `root <%-s.staticWebRoot%>;` with `proxy_pass $upstream;`
|
||||||
|
5. **Save settings** and wait a minute
|
||||||
|
6. Access your mail server at `http://$$cap_appname.$$cap_root_domain`
|
||||||
|
7. Enter `$$cap_POSTE_HOSTNAME` in **Mailserver hostname**
|
||||||
|
8. Enter an email address for the admin (you can also use `admin@$$cap_POSTE_HOSTNAME`) and create a password
|
||||||
|
9. Navigate to **System Settings** > **TLS Certificate** and **Issue Free Letsencrypt.org Certificate**
|
||||||
|
10. Check **Enabled** and **Save Changes**
|
||||||
|
|
||||||
|
The following steps guide you though the DNS configuration. Please **consult the documentation** (`https://poste.io/doc/configuring-dns`).
|
||||||
|
|
||||||
|
1. Enter the admin panel of the server hosting or if you are self-hosting locally make sure you have access to the DNS configuration
|
||||||
|
2. Create **PTR record** (also known as **Reverse DNS**) pointing to `$$cap_POSTE_HOSTNAME`
|
||||||
|
3. Create **A** record for `$$cap_POSTE_HOSTNAME` pointing to the IP address of the server
|
||||||
|
4. Create **MX** record pointing to `$$cap_POSTE_HOSTNAME`
|
||||||
|
5. Create **TXT** record with value `v=spf1 mx ~all`
|
||||||
|
6. Create **TXT** record with value `v=DMARC1; p=none; rua=mailto:dmarc-reports@$$cap_POSTE_HOSTNAME ruf=dmarc-reports@$$cap_POSTE_HOSTNAME; sp=none; ri=86400` (you may need to change the mail addresses)
|
||||||
|
7. Go to your application navigating to `http://$$cap_appname.$$cap_root_domain/admin/domain`
|
||||||
|
8. Click **Show** on `$$cap_POSTE_HOSTNAME`
|
||||||
|
9. In the line **DKIM Key** click on **Create New Key** and copy the generated value
|
||||||
|
10. Go back to the DNS settings
|
||||||
|
11. Create **TXT** record and insert copied value (starting with `k=rsa...`)
|
||||||
|
12. Verify the DNS configuration using tools like MXToolbox (`https://mxtoolbox.com`)
|
||||||
|
|
||||||
|
If all your checks are green you are ready to create mailboxes.
|
||||||
|
|
||||||
|
Enjoy your self-hosted mail server!
|
||||||
|
variables:
|
||||||
|
- id: $$cap_POSTE_VERSION
|
||||||
|
label: General | Version
|
||||||
|
description: Check out their Docker page for the valid tags https://hub.docker.com/r/analogic/poste.io/tags
|
||||||
|
defaultValue: '2'
|
||||||
|
validRegex: /.{1,}/
|
||||||
|
- id: $$cap_POSTE_TZ
|
||||||
|
label: General | Timezone
|
||||||
|
description: Timezone for the application, find yours at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||||
|
defaultValue: UTC
|
||||||
|
validRegex: /.{1,}/
|
||||||
|
- id: $$cap_POSTE_DISABLE_CLAMAV
|
||||||
|
label: Features | Disable ClamAV
|
||||||
|
description: Whether to disable ClamAV anti-virus. Useful for low memory usage. Set value `TRUE` to disable.
|
||||||
|
- id: $$cap_POSTE_DISABLE_RSPAMD
|
||||||
|
label: Features | Disable Rspamd
|
||||||
|
description: Whether to disable Rspamd spam filter. Useful for low memory usage. Set value `TRUE` to disable.
|
||||||
|
- id: $$cap_POSTE_DISABLE_ROUNDCUBE
|
||||||
|
label: Features | Disable Roundcube
|
||||||
|
description: Whether to disable Roundcube webmail. Set value `TRUE` to disable.
|
||||||
|
- id: $$cap_POSTE_HOSTNAME
|
||||||
|
label: Networking | Hostname
|
||||||
|
description: Hostname of your mail server. **This is required**. It is usually `mail.mydomain.com`.
|
||||||
|
validRegex: /.{1,}/
|
||||||
|
- id: $$cap_POSTE_HTTPS
|
||||||
|
label: Networking | Use HTTPS
|
||||||
|
description: >-
|
||||||
|
Whether to redirect to encrypted HTTP.
|
||||||
|
It's recommended to leave it to `OFF` since CapRover acts as reverse proxy and handles HTTPS.
|
||||||
|
If you want to enable it, remove the value and leave it blank and then to change the configuration and ports accordingly.
|
||||||
|
defaultValue: 'OFF'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue