메인 콘텐츠로 건너뛰기
ipmideck가 설치되면 실행 방식은 크게 두 가지로 나뉩니다. ipmideck 명령으로 시작하는 호스트 설치와, 웹 서버를 직접 실행하는 Docker 컨테이너입니다. 둘은 다르게 동작합니다. 호스트 명령은 대화형 운영자 콘솔을 제공하는 반면, 컨테이너는 일반 로그만 스트리밍합니다. 이 페이지는 둘 다 다룹니다.

호스트 설치: ipmideck start

호스트 설치 (pip)에서는 서버가 ipmideck 명령으로 시작됩니다. 기본 명령은 start입니다.
ipmideck start
서브 명령이 없는 단순한 ipmideckipmideck start와 동일하게 동작합니다.
ipmideck
기본적으로 서버는 0.0.0.0:3000에 바인드되므로, 가동되면 브라우저에서 http://<your-ip>:3000을 엽니다.
ipmilink는 동일한 명령의 하위 호환 별칭입니다. ipmilink startipmideck start와 정확히 동일하게 동작합니다. 모든 새로운 것에는 ipmideck를 사용하세요.
실제 터미널 (TTY)에서 ipmideck start는 대화형 운영자 콘솔을 엽니다. 동일한 명령이 터미널 없이 실행될 때, 예를 들어 파일로 파이프되거나 프로세스 관리자 아래에서는, 콘솔을 건너뛰고 대신 일반 로그로 서비스합니다. 아래의 헤드리스 / 비 TTY 모드를 참조하세요.

Docker: 컨테이너가 서버를 직접 실행한다

Docker 컨테이너는 ipmideck 명령을 실행하지 않습니다. 그 이미지는 웹 서버 (uvicorn)를 직접 시작합니다.
docker run --network host ipmideck/ipmideck:latest
컨테이너는 ipmideck CLI를 결코 호출하지 않으므로, 서브 명령, 플래그, 대화형 콘솔 중 어느 것도 Docker 내부에는 적용되지 않습니다. 컨테이너는 일반 로그만 stdout으로 스트리밍하며, 이는 헤드리스 호스트 모드와 정확히 같습니다. 컨테이너는 0.0.0.0:3000에 바인드되며, BMC에 UDP 포트 623으로 도달할 수 있도록 --network host가 필요합니다. 네트워킹 세부 정보는 설치를 참조하세요.
컨테이너는 CLI 플래그가 아니라 IPMIDECK_ 접두사가 붙은 환경 변수와 /data의 볼륨으로 구성하세요. 구성을 참조하세요. 게시된 이미지는 곧 제공됩니다. 위 명령은 그것이 활성화되면 실행할 정확한 명령입니다.

데이터 디렉터리

ipmideck는 config.yaml, SQLite 데이터베이스, 자격 증명 암호화 키를 단일 데이터 디렉터리에 씁니다. 그 위치는 플랫폼에 따라 다릅니다.
  • Linux / Docker: /data
  • Windows: ./data (ipmideck를 실행하는 디렉터리 기준 상대 경로)
어떤 플랫폼에서도 IPMIDECK_DATA_DIR 환경 변수로 위치를 재정의할 수 있습니다.
$env:IPMIDECK_DATA_DIR = "C:\ipmideck-data"
ipmideck start
Docker에서 이미지는 이미 IPMIDECK_DATA_DIR=/data를 설정하므로, 컨테이너 재시작에 걸쳐 구성과 기록을 유지하려면 해당 경로를 볼륨으로 영속화하세요.

환경 변수 재정의

config.yaml 설정을 재정의하는 모든 IPMIDECK_ 접두사가 붙은 환경 변수는 호스트에서든 Docker에서든 동일하게 작동합니다. 전체 목록은 구성을 참조하세요. ipmideck가 바인드하는 방식을 바꾸는 두 가지는 다음과 같습니다.
환경 변수효과
IPMIDECK_SERVER_HOST바인드 호스트 (기본값 0.0.0.0).
IPMIDECK_SERVER_PORT바인드 포트 (기본값 3000).
환경 변수는 config.yaml보다 우선합니다. 호스트 설치에서는 명시적인 명령줄 바인드 플래그가 환경 변수와 파일 둘 다에 우선합니다.

포트가 이미 사용 중

바인드 포트에서 무언가 이미 수신 대기 중이면, ipmideck는 다른 인스턴스와 포트를 두고 다투는 대신 시작을 거부합니다. 이를 stderr에 출력하고 상태 1로 종료합니다.
ERROR: IPMIDeck refused to start — port 3000 is already in use on 0.0.0.0 (another instance may be running).
이는 보통 ipmideck의 두 번째 사본이 이미 실행 중이거나, 다른 서비스가 그 포트를 점유했음을 의미합니다. 다른 프로세스를 중지하거나 IPMIDECK_SERVER_PORT (또는 config.yamlserver.port)로 포트를 변경한 후 다시 시작하세요.

주소를 사용할 수 없음

다른 종류의 실패는 바인드를 요청한 호스트를 사용할 수 없을 때입니다. 예를 들어 이 머신에 존재하지 않는 주소, IPv6 전용 인터페이스, 또는 바인드 권한이 없는 특권 포트입니다. ipmideck는 이를 별도로 보고하고 마찬가지로 상태 1로 종료합니다.
ERROR: IPMIDeck cannot bind 0.0.0.0:3000 — address unavailable or not permitted.
IPMIDECK_SERVER_HOST (또는 server.host)의 값을 확인하세요. 머신에 실제로 존재하는 주소여야 하며, 포트가 바인드 권한이 있는 것인지 확인하세요.

Ctrl+C로 정상 종료

ipmideck를 중지하려면 Ctrl+C (이는 SIGINT를 보냅니다. SIGTERM도 동일하게 처리됩니다)를 누르세요. 종료는 정상적입니다. 웹 서버가 루프를 빠져나가고, 애플리케이션의 lifespan 종료가 실행되며, 팬 제어가 BMC로 반환되고, 프로세스는 트레이스백 없이 깨끗하게 종료됩니다.
종료가 팬 제어를 BMC로 복원하므로, ipmideck가 종료되는 순간 FanPilot은 팬 구동을 중지합니다. BMC 자체의 팬 정책이 인계받습니다. 이는 의도된 안전장치입니다. 팬 루프의 동작에 대해서는 기능을 참조하세요.
Docker에서 컨테이너는 SIGTERM (docker stop이 보내는 것)에서 중지되므로, 컨테이너를 중지하면 동일한 정상 종료가 실행됩니다.

재시작

재시작이 작동하는 방식은 운영 체제에 따라 다릅니다.
  • Linux (및 기타 POSIX 시스템): ipmideck는 제자리에서 재시작합니다. config.yaml을 다시 읽는 새 프로세스를 다시 시작하며, 동일한 제어 터미널을 유지합니다.
  • Windows: 제자리 재실행이 없습니다. ipmideck는 깨끗하게 종료하고 명령을 직접 다시 실행하도록 요청하는 힌트를 출력합니다.
IPMIDeck: restart required to apply the new bind.
  Run  ipmideck start  again to restart.
Windows에서는 같은 셸에서 ipmideck start를 다시 실행하기만 하면, 새 프로세스가 config.yaml을 다시 읽고 새 설정을 가져옵니다.

헤드리스 / 비 TTY 모드

ipmideck가 연결된 터미널 없이 실행될 때, 파일로 파이프되거나, 리디렉션되거나, 프로세스 관리자 아래에서는, TTY가 없음을 감지하여 대화형 콘솔을 건너뜁니다. 대시보드를 정상적으로 서비스하고 대신 일반 로그를 stdout으로 스트리밍합니다. 이는 항상 콘솔 없이 실행되는 Docker 컨테이너에서 얻는 출력과 같습니다. 이 모드는 특별한 것이 필요 없습니다. 슈퍼바이저나 파이프라인이 호출하는 방식으로 ipmideck를 시작하고 stdout에서 로그를 읽기만 하면 됩니다.

다음 단계

  • 설치: Docker와 pip 자세히.
  • 구성: config.yaml, 환경 변수 재정의, 데이터 위치.
  • 문제 해결: 연결 및 IPMI 오류.