| 546 | return True, resolved_ssl_config |
| 547 | |
| 548 | def run(self): |
| 549 | ip_addr = [] |
| 550 | dashboard_config = self.core_lifecycle.astrbot_config.get("dashboard", {}) |
| 551 | port = ( |
| 552 | os.environ.get("DASHBOARD_PORT") |
| 553 | or os.environ.get("ASTRBOT_DASHBOARD_PORT") |
| 554 | or dashboard_config.get("port", 6185) |
| 555 | ) |
| 556 | host = ( |
| 557 | os.environ.get("DASHBOARD_HOST") |
| 558 | or os.environ.get("ASTRBOT_DASHBOARD_HOST") |
| 559 | or dashboard_config.get("host", "0.0.0.0") |
| 560 | ) |
| 561 | enable = dashboard_config.get("enable", True) |
| 562 | ssl_config = dashboard_config.get("ssl", {}) |
| 563 | if not isinstance(ssl_config, dict): |
| 564 | ssl_config = {} |
| 565 | ssl_enable = _parse_env_bool( |
| 566 | os.environ.get("DASHBOARD_SSL_ENABLE") |
| 567 | or os.environ.get("ASTRBOT_DASHBOARD_SSL_ENABLE"), |
| 568 | bool(ssl_config.get("enable", False)), |
| 569 | ) |
| 570 | resolved_ssl_config: dict[str, str] = {} |
| 571 | if ssl_enable: |
| 572 | ssl_enable, resolved_ssl_config = self._resolve_dashboard_ssl_config( |
| 573 | ssl_config, |
| 574 | ) |
| 575 | scheme = "https" if ssl_enable else "http" |
| 576 | |
| 577 | if not enable: |
| 578 | logger.info("WebUI disabled.") |
| 579 | return None |
| 580 | |
| 581 | logger.info("Starting WebUI at %s://%s:%s", scheme, host, port) |
| 582 | if host == "0.0.0.0": |
| 583 | logger.info( |
| 584 | "WebUI listens on all interfaces. Check security. Set dashboard.host in data/cmd_config.json to change it.", |
| 585 | ) |
| 586 | |
| 587 | if host not in ["localhost", "127.0.0.1"]: |
| 588 | try: |
| 589 | ip_addr = get_local_ip_addresses() |
| 590 | except Exception as _: |
| 591 | pass |
| 592 | if isinstance(port, str): |
| 593 | port = int(port) |
| 594 | |
| 595 | if self.check_port_in_use(port): |
| 596 | process_info = self.get_process_using_port(port) |
| 597 | logger.error( |
| 598 | f"错误:端口 {port} 已被占用\n" |
| 599 | f"占用信息: \n {process_info}\n" |
| 600 | f"请确保:\n" |
| 601 | f"1. 没有其他 AstrBot 实例正在运行\n" |
| 602 | f"2. 端口 {port} 没有被其他程序占用\n" |
| 603 | f"3. 如需使用其他端口,请修改配置文件", |
| 604 | ) |
| 605 | |