iredmail-doc/en_US/howto/subdomains.md

3.2 KiB

Move SOGO, Roundcube and iRedAdmin to subdomains with Nginx

[TOC]

Introduction

iRedMail create different templates for different needs. By default, SOGO, Roundcube and iRedAdmin are located at /iredadmin, /mail and /sogo (if you install SOGo, then /mail redirect to this too). For example, we have:

  • domain example.com
  • server (hosting, etc.) with installed iRedMail
  • correctly configured DNS zone example.com

If we visit example.com/iredadmin, then we will be redirected to the iRedAdmin (usually login page of the iRedAdmin)

Let's to see to default config at /etc/nginx/sites-available/00-default-ssl.conf:

#
# Note: This file must be loaded before other virtual host config files,
#
# HTTPS
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name _;

    root /var/www/html;
    index index.php index.html;

    include /etc/nginx/templates/misc.tmpl;
    include /etc/nginx/templates/ssl.tmpl;
    include /etc/nginx/templates/iredadmin.tmpl;
    include /etc/nginx/templates/roundcube.tmpl;
    include /etc/nginx/templates/sogo.tmpl;
    include /etc/nginx/templates/netdata.tmpl;
    include /etc/nginx/templates/php-catchall.tmpl;
    include /etc/nginx/templates/stub_status.tmpl;

	location /{
	try_files $uri $uri/ /index.php$is_args$args;
	}
}

Wee can see following:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name _;
    ...
    include /etc/nginx/templates/iredadmin.tmpl;
    include /etc/nginx/templates/roundcube.tmpl;
    include /etc/nginx/templates/sogo.tmpl;
    ...
}

That means that SOGO, Roundcube and iRedAdmin are located at host "_" (see (Nginx Documentation)[https://nginx.org/en/docs/http/server_names.html] ).

Move SOGO, Roundcube and iRedAdmin to subdomain.

We can move 1, 2 or 3 services to any subdomain (ex. Roundcube, iRedAdmin, but SOGO leave at "_" host)

To do this, we need:

  1. Delete wanted line(s) from
    include /etc/nginx/templates/iredadmin.tmpl;
    include /etc/nginx/templates/roundcube.tmpl;
    include /etc/nginx/templates/sogo.tmpl;
    ...
    include /etc/nginx/templates/example_service.tmpl;

As example, wee deleted

    include /etc/nginx/templates/example_service.tmpl;
  1. Create new site config at /etc/nginx/sites-available/ As example, wee create example_service.example.com.conf
  2. Write config to file We need server{} context with
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example_service.example.com;

Then, add line

    include /etc/nginx/templates/example_service-subdomain.tmpl;

We can also add SSL support: Create /etc/nginx/templates/ssl-subdomain.tmpl (you may use ssl.tmpl as template), then add line

    include /etc/nginx/templates/ssl-subdomain.tmpl;

As result, we have

server{
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example_service.example.com;

    include /etc/nginx/templates/example_service-subdomain.tmpl;
    include /etc/nginx/templates/ssl-subdomain.tmpl;
}

!!! note I recommend - create request wildcard SSL certificate (that works for any subdomain, ex name1.example.com ... 1000name.example.com) - create wildcard DNS records, ex. "CNAME *.example.com example.com"

That's all we need