mirror of
https://github.com/m1k1o/neko-rooms.git
synced 2026-11-02 22:51:34 -06:00
add INSTANCE_URL.
This commit is contained in:
@@ -31,10 +31,10 @@ You only need `.env.example`, `docker-compose.yml` and `traefik/`.
|
||||
#### Do I need to use traefik?
|
||||
|
||||
- Traefik needs to be used to forward traffic to the rooms. You can put nginx in front of it, but not replace it.
|
||||
- Your domain name specified for traefik must match domain name, that your proxy connects to.
|
||||
- Currently, there is no support for custom paths. You cannot host your `neko-rooms` on `example.com/neko-rooms/` but it needs own subdomain e.g. `neko-rooms.example.com`.
|
||||
- Your domain name specified for traefik must match domain name, that your proxy connects to. In docker-compose it is service name.
|
||||
- See example configuration for [nginx](docs/nginx).
|
||||
|
||||
You can use `docker-compose.http.yml` that will expose this service to `APP_PORT`. See example configuration for [nginx](docs/nginx).
|
||||
You can use `docker-compose.http.yml` that will expose this service to `8080` or any port.
|
||||
|
||||
### Step 1
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ services:
|
||||
- "--providers.docker.watch=true"
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--providers.docker.network=${NEKO_ROOMS_TRAEFIK_NETWORK}"
|
||||
- "--entrypoints.${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}.address=:${APP_PORT-8080}"
|
||||
- "--entrypoints.${NEKO_ROOMS_TRAEFIK_ENTRYPOINT}.address=:80"
|
||||
ports:
|
||||
- "${APP_PORT-8080}:${APP_PORT-8080}"
|
||||
- "8080:80"
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
||||
|
||||
@@ -32,7 +32,7 @@ services:
|
||||
- "NEKO_ROOMS_TRAEFIK_DOMAIN"
|
||||
- "NEKO_ROOMS_TRAEFIK_ENTRYPOINT"
|
||||
- "NEKO_ROOMS_TRAEFIK_NETWORK"
|
||||
- "NEKO_ROOMS_TRAEFIK_PORT=${APP_PORT-8080}"
|
||||
- "NEKO_ROOMS_INSTANCE_URL=http://${NEKO_ROOMS_TRAEFIK_DOMAIN}:8080/" # external URL
|
||||
volumes:
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
labels:
|
||||
|
||||
+19
-2
@@ -4,6 +4,7 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
|
||||
@@ -17,12 +18,13 @@ type Room struct {
|
||||
|
||||
NekoImages []string
|
||||
InstanceName string
|
||||
InstanceUrl string
|
||||
|
||||
TraefikDomain string
|
||||
TraefikEntrypoint string
|
||||
TraefikCertresolver string
|
||||
TraefikNetwork string
|
||||
TraefikPort string
|
||||
TraefikPort string // deprecated
|
||||
}
|
||||
|
||||
func (Room) Init(cmd *cobra.Command) error {
|
||||
@@ -46,6 +48,11 @@ func (Room) Init(cmd *cobra.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd.PersistentFlags().String("instance_url", "", "instance url that is prefixing room names (if different from `http(s)://{traefik_domain}/`)")
|
||||
if err := viper.BindPFlag("instance_url", cmd.PersistentFlags().Lookup("instance_url")); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd.PersistentFlags().String("traefik_domain", "neko.lan", "traefik: domain on which will be container hosted")
|
||||
if err := viper.BindPFlag("traefik_domain", cmd.PersistentFlags().Lookup("traefik_domain")); err != nil {
|
||||
return err
|
||||
@@ -66,7 +73,7 @@ func (Room) Init(cmd *cobra.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
cmd.PersistentFlags().String("traefik_port", "", "traefik: external port (if different than 80 or 443)")
|
||||
cmd.PersistentFlags().String("traefik_port", "", "traefik: external port (deprecated)")
|
||||
if err := viper.BindPFlag("traefik_port", cmd.PersistentFlags().Lookup("traefik_port")); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -111,10 +118,20 @@ func (s *Room) Set() {
|
||||
|
||||
s.NekoImages = viper.GetStringSlice("neko_images")
|
||||
s.InstanceName = viper.GetString("instance_name")
|
||||
s.InstanceUrl = viper.GetString("instance_url")
|
||||
|
||||
s.TraefikDomain = viper.GetString("traefik_domain")
|
||||
s.TraefikEntrypoint = viper.GetString("traefik_entrypoint")
|
||||
s.TraefikCertresolver = viper.GetString("traefik_certresolver")
|
||||
s.TraefikNetwork = viper.GetString("traefik_network")
|
||||
|
||||
// deprecated
|
||||
s.TraefikPort = viper.GetString("traefik_port")
|
||||
if s.TraefikPort != "" {
|
||||
if s.InstanceUrl != "" {
|
||||
log.Warn().Msg("deprecated `traefik_port` config item is ignored when `instance_url` is set")
|
||||
} else {
|
||||
log.Warn().Msg("you are using deprecated `traefik_port` config item, you should consider moving to `instance_url`")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,20 +122,28 @@ func (manager *RoomManagerCtx) Create(settings types.RoomSettings) (string, erro
|
||||
|
||||
containerName := manager.config.InstanceName + "-" + roomName
|
||||
|
||||
urlProto := "http"
|
||||
if manager.config.TraefikCertresolver != "" {
|
||||
urlProto = "https"
|
||||
}
|
||||
instanceUrl := manager.config.InstanceUrl
|
||||
if instanceUrl == "" {
|
||||
urlProto := "http"
|
||||
if manager.config.TraefikCertresolver != "" {
|
||||
urlProto = "https"
|
||||
}
|
||||
|
||||
port := ""
|
||||
if manager.config.TraefikPort != "" {
|
||||
port = ":" + manager.config.TraefikPort
|
||||
// deprecated
|
||||
port := ""
|
||||
if manager.config.TraefikPort != "" {
|
||||
port = ":" + manager.config.TraefikPort
|
||||
}
|
||||
|
||||
instanceUrl = urlProto + "://" + manager.config.TraefikDomain + port + "/"
|
||||
} else if !strings.HasSuffix(instanceUrl, "/") {
|
||||
instanceUrl = instanceUrl + "/"
|
||||
}
|
||||
|
||||
labels := map[string]string{
|
||||
// Set internal labels
|
||||
"m1k1o.neko_rooms.name": roomName,
|
||||
"m1k1o.neko_rooms.url": urlProto + "://" + manager.config.TraefikDomain + port + "/" + roomName + "/",
|
||||
"m1k1o.neko_rooms.url": instanceUrl + roomName + "/",
|
||||
"m1k1o.neko_rooms.instance": manager.config.InstanceName,
|
||||
"m1k1o.neko_rooms.epr.min": fmt.Sprintf("%d", epr.Min),
|
||||
"m1k1o.neko_rooms.epr.max": fmt.Sprintf("%d", epr.Max),
|
||||
|
||||
Reference in New Issue
Block a user