如何创建在子域上运行Caddy服务器和其他服务器的Docker文件?

如何创建在子域上运行Caddy服务器和其他服务器的Docker文件?,docker,self-hosting,caddy,Docker,Self Hosting,Caddy,我想运行以下服务/docker映像(在它们各自的子域上) 我如何做到这一点?我对Docker没有什么经验,但了解它在模块化和沙箱方面的好处。我发现了,但这是nginx和Nextcloud特有的。我更喜欢使用Caddy,因为它支持自动HTTPS注册和HTTP/2 不建议在路径而不是子域上运行,但这是可以接受的。我对Caddy本身不是很有经验,但听起来您希望设置代理服务器。您要做的是将助手端口(我假设为80和443)映射到主机(),然后在助手配置中设置必要的代理转发 例如,要将所有请求转发到plex

我想运行以下服务/docker映像(在它们各自的子域上)

我如何做到这一点?我对Docker没有什么经验,但了解它在模块化和沙箱方面的好处。我发现了,但这是nginx和Nextcloud特有的。我更喜欢使用Caddy,因为它支持自动HTTPS注册和HTTP/2


不建议在路径而不是子域上运行,但这是可以接受的。

我对Caddy本身不是很有经验,但听起来您希望设置代理服务器。您要做的是将助手端口(我假设为80和443)映射到主机(),然后在助手配置中设置必要的代理转发


例如,要将所有请求转发到plex.example.com,您只需将plex.example.com域指向您的服务器,在服务器中,您将让docker compose(我假设)项目运行,80和443个端口映射到Caddy服务。然后,当请求传入时,您的助手可以根据域名转发请求。因此,在本例中,您将检查到plex.example.com的传入请求,并将其转发到plex服务(使用docker时,您可以使用plex服务名称作为主机名。在docker compose命令创建的网络中,服务名称解析为相应的IP地址)

我对Caddy本身并没有太多经验,但听起来你想设置一个代理服务器。您要做的是将助手端口(我假设为80和443)映射到主机(),然后在助手配置中设置必要的代理转发


例如,要将所有请求转发到plex.example.com,您只需将plex.example.com域指向您的服务器,在服务器中,您将让docker compose(我假设)项目运行,80和443个端口映射到Caddy服务。然后,当请求传入时,您的助手可以根据域名转发请求。因此,在本例中,您将检查到plex.example.com的传入请求,并将其转发到plex服务(使用docker时,您可以使用plex服务名称作为主机名。在docker compose命令创建的网络中,服务名称解析为相应的IP地址)

根据您的描述,所有服务都在同一台机器上运行,但具有不同的端口,如下所示:

╔═══════════╦═════════════════════╦═════════════════════════╦═════════════════╗
║  Service  ║         URL         ║         Docker          ║      Address    ║ 
╠═══════════╬═════════════════════╬═════════════════════════╬═════════════════╣
║ Plex      ║    plex.example.com ║ plexinc/pms-docker      ║ localhost:10001 ║
║ Calibre   ║ calibre.example.com ║ linuxserver/calibre-web ║ localhost:10002 ║
║ NextCloud ║   cloud.example.com ║ nextcloud               ║ localhost:10003 ║
║ Gitea     ║     git.example.com ║ gitea/gitea             ║ localhost:10004 ║
║ Caddy     ║         example.com ║ abiosoft/caddy          ║ localhost:10000 ║
╚═══════════╩═════════════════════╩═════════════════════════╩═════════════════╝
example.com {
    proxy / localhost:10000 {
        transparent
    }
}

plex.example.com {
    proxy / localhost:10001 {
        transparent
    }
}

calibre.example.com {
    proxy / localhost:10002 {
        transparent
    }
}

cloud.example.com {
    proxy / localhost:10003 {
        transparent
    }
}

git.example.com {
    proxy / localhost:10004 {
        transparent
    }
}
然后,您的
Caddyfile
可能如下所示:

╔═══════════╦═════════════════════╦═════════════════════════╦═════════════════╗
║  Service  ║         URL         ║         Docker          ║      Address    ║ 
╠═══════════╬═════════════════════╬═════════════════════════╬═════════════════╣
║ Plex      ║    plex.example.com ║ plexinc/pms-docker      ║ localhost:10001 ║
║ Calibre   ║ calibre.example.com ║ linuxserver/calibre-web ║ localhost:10002 ║
║ NextCloud ║   cloud.example.com ║ nextcloud               ║ localhost:10003 ║
║ Gitea     ║     git.example.com ║ gitea/gitea             ║ localhost:10004 ║
║ Caddy     ║         example.com ║ abiosoft/caddy          ║ localhost:10000 ║
╚═══════════╩═════════════════════╩═════════════════════════╩═════════════════╝
example.com {
    proxy / localhost:10000 {
        transparent
    }
}

plex.example.com {
    proxy / localhost:10001 {
        transparent
    }
}

calibre.example.com {
    proxy / localhost:10002 {
        transparent
    }
}

cloud.example.com {
    proxy / localhost:10003 {
        transparent
    }
}

git.example.com {
    proxy / localhost:10004 {
        transparent
    }
}

如果您的所有服务都在Docker中运行,您可能还需要考虑.

基于您的描述,所有的服务在同一台机器上运行,但有不同的端口,例如:

╔═══════════╦═════════════════════╦═════════════════════════╦═════════════════╗
║  Service  ║         URL         ║         Docker          ║      Address    ║ 
╠═══════════╬═════════════════════╬═════════════════════════╬═════════════════╣
║ Plex      ║    plex.example.com ║ plexinc/pms-docker      ║ localhost:10001 ║
║ Calibre   ║ calibre.example.com ║ linuxserver/calibre-web ║ localhost:10002 ║
║ NextCloud ║   cloud.example.com ║ nextcloud               ║ localhost:10003 ║
║ Gitea     ║     git.example.com ║ gitea/gitea             ║ localhost:10004 ║
║ Caddy     ║         example.com ║ abiosoft/caddy          ║ localhost:10000 ║
╚═══════════╩═════════════════════╩═════════════════════════╩═════════════════╝
example.com {
    proxy / localhost:10000 {
        transparent
    }
}

plex.example.com {
    proxy / localhost:10001 {
        transparent
    }
}

calibre.example.com {
    proxy / localhost:10002 {
        transparent
    }
}

cloud.example.com {
    proxy / localhost:10003 {
        transparent
    }
}

git.example.com {
    proxy / localhost:10004 {
        transparent
    }
}
然后,您的
Caddyfile
可能如下所示:

╔═══════════╦═════════════════════╦═════════════════════════╦═════════════════╗
║  Service  ║         URL         ║         Docker          ║      Address    ║ 
╠═══════════╬═════════════════════╬═════════════════════════╬═════════════════╣
║ Plex      ║    plex.example.com ║ plexinc/pms-docker      ║ localhost:10001 ║
║ Calibre   ║ calibre.example.com ║ linuxserver/calibre-web ║ localhost:10002 ║
║ NextCloud ║   cloud.example.com ║ nextcloud               ║ localhost:10003 ║
║ Gitea     ║     git.example.com ║ gitea/gitea             ║ localhost:10004 ║
║ Caddy     ║         example.com ║ abiosoft/caddy          ║ localhost:10000 ║
╚═══════════╩═════════════════════╩═════════════════════════╩═════════════════╝
example.com {
    proxy / localhost:10000 {
        transparent
    }
}

plex.example.com {
    proxy / localhost:10001 {
        transparent
    }
}

calibre.example.com {
    proxy / localhost:10002 {
        transparent
    }
}

cloud.example.com {
    proxy / localhost:10003 {
        transparent
    }
}

git.example.com {
    proxy / localhost:10004 {
        transparent
    }
}

如果您的所有服务都在Docker中运行,您可能还需要考虑。