diff --git a/install/fs/config.yml b/install/fs/config.yml index d3809433..21a8c0ff 100644 --- a/install/fs/config.yml +++ b/install/fs/config.yml @@ -21,7 +21,7 @@ traefik: gerbil: start_port: 51820 - base_endpoint: {{.Domain}} + base_endpoint: {{.DashboardDomain}} use_subdomain: false block_size: 24 site_block_size: 30 diff --git a/install/fs/traefik/dynamic_config.yml b/install/fs/traefik/dynamic_config.yml index cb21242d..770c30ba 100644 --- a/install/fs/traefik/dynamic_config.yml +++ b/install/fs/traefik/dynamic_config.yml @@ -8,7 +8,7 @@ http: routers: # HTTP to HTTPS redirect router main-app-router-redirect: - rule: "Host(`{{.Domain}}`)" + rule: "Host(`{{.DashboardDomain}}`)" service: next-service entryPoints: - web @@ -17,7 +17,7 @@ http: # Next.js router (handles everything except API and WebSocket paths) next-router: - rule: "Host(`{{.Domain}}`) && !PathPrefix(`/api/v1`)" + rule: "Host(`{{.DashboardDomain}}`) && !PathPrefix(`/api/v1`)" service: next-service entryPoints: - websecure @@ -26,7 +26,7 @@ http: # API router (handles /api/v1 paths) api-router: - rule: "Host(`{{.Domain}}`) && PathPrefix(`/api/v1`)" + rule: "Host(`{{.DashboardDomain}}`) && PathPrefix(`/api/v1`)" service: api-service entryPoints: - websecure @@ -35,7 +35,7 @@ http: # WebSocket router ws-router: - rule: "Host(`{{.Domain}}`)" + rule: "Host(`{{.DashboardDomain}}`)" service: api-service entryPoints: - websecure diff --git a/install/main.go b/install/main.go index e1a363a9..480ff934 100644 --- a/install/main.go +++ b/install/main.go @@ -45,7 +45,10 @@ func main() { // check if there is already a config file if _, err := os.Stat("config/config.yml"); err != nil { config := collectUserInput(reader) - createConfigFiles(config) + if err := createConfigFiles(config); err != nil { + fmt.Printf("Error creating config files: %v\n", err) + os.Exit(1) + } if !isDockerInstalled() && runtime.GOOS == "linux" { if shouldInstallDocker() { @@ -104,7 +107,7 @@ func collectUserInput(reader *bufio.Reader) Config { // Basic configuration fmt.Println("\n=== Basic Configuration ===") config.BaseDomain = readString(reader, "Enter your base domain (no subdomain e.g. example.com)", "") - config.DashboardDomain = readString(reader, "Enter the domain for the Pangolin dashboard (e.g. example.com OR proxy.example.com)", config.BaseDomain) + config.DashboardDomain = readString(reader, "Enter the domain for the Pangolin dashboard", "pangolin."+config.BaseDomain) config.LetsEncryptEmail = readString(reader, "Enter email for Let's Encrypt certificates", "") // Admin user configuration @@ -275,8 +278,26 @@ func createConfigFiles(config Config) error { return fmt.Errorf("error walking config files: %v", err) } - // move the docker-compose.yml file to the root directory - os.Rename("config/docker-compose.yml", "docker-compose.yml") + // get the current directory + dir, err := os.Getwd() + if err != nil { + return fmt.Errorf("failed to get current directory: %v", err) + } + + sourcePath := filepath.Join(dir, "config/docker-compose.yml") + destPath := filepath.Join(dir, "docker-compose.yml") + + // Check if source file exists + if _, err := os.Stat(sourcePath); err != nil { + return fmt.Errorf("source docker-compose.yml not found: %v", err) + } + + // Try to move the file + err = os.Rename(sourcePath, destPath) + if err != nil { + return fmt.Errorf("failed to move docker-compose.yml from %s to %s: %v", + sourcePath, destPath, err) + } return nil }