{
  services.caddy.virtualHosts = {
    # "ryot.foo" = {
    #   useACMEHost = "ryot.foo";
    #   extraConfig = ''
    #     reverse_proxy 104.40.3.44:80
    #   '';
    # };

    "auth.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:9000 {
          header_up Host {host}
          header_up X-Forwarded-For {remote}
          header_up X-Forwarded-Proto {scheme}
          header_up X-Forwarded-Protocol {scheme}
          header_up X-Forwarded-Port {server_port}
        }
      '';
    };

    "frp.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:4041
      '';
    };

    "grafana.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:3001
      '';
    };

    "git.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:3003
      '';
    };

    "influx.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:8086
      '';
    };

    "home.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:7475
      '';
    };

    "komodo.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:9120
      '';
    };

    "mail.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:9002
      '';
    };

    "map.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:25566
      '';
    };

    "outline.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:3480 
      '';
    };

    "plane.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:3000 
      '';
    };

    "upsnap.ryot.foo" = {
      useACMEHost = "ryot.foo";
      extraConfig = ''
        reverse_proxy localhost:8090
      '';
    };
  };
}
