VMware NAT 환경에서 Spotfire Server, Node Manager, Web Player, Python, TERR를 순서대로 구성하고 같은 LAN에서 접속하기까지 정리한 글임.
Rocky Linux 9 / Spotfire 14.6.3 / PostgreSQL 16 기준임. 명령은 위에서 아래 순서로 실행하면 됨. IP, 사용자명, Node ID는
<...>자리에 실제 값을 넣으면 됨.
0. 구성값과 설치 파일 준비
| 항목 | 값 |
|---|---|
| Server HTTP / 등록 / TLS | 80 / 9080 / 9443 |
| Node Manager 등록 / 통신 | 9081 / 9444 |
| Web Player / Python / TERR | 9501 / 9502 / 9503 |
| DB / 사용자 | spotfire_server / spotfire |
| 외부 공개 방식 | VMware NAT 포트 포워딩 |
아래 파일을 한 폴더에 준비함.
SPOT_sfire_server_14.6.3_linux.tar
SPOT_sfire_deploy_14.6.3.zip
SPOT_sf-pysrv_1.17.12_linux24gl23_x86_64.tar.gz
SPOT_terrsrv_1.23.0_linux24gl23_x86_64.tar.gz
Node Manager 압축 파일 spotfirenodemanager-14.6.3.x86_64.tar.gz도 Server 패키지에 포함되어 있어야 함. 아래 마지막 명령에서 파일이 안 나오면 설치 미디어를 먼저 확인해야 함.
cat /etc/os-release
hostname -f
hostname -I
df -h
free -h
mkdir -p ~/spotfire-kit ~/spotfire-deploy ~/spotfire-addons
sudo dnf install -y unzip
tar -xf /srv/install/spotfire/SPOT_sfire_server_14.6.3_linux.tar -C ~/spotfire-kit
unzip -q /srv/install/spotfire/SPOT_sfire_deploy_14.6.3.zip -d ~/spotfire-deploy
tar -xzf /srv/install/spotfire/SPOT_sf-pysrv_1.17.12_linux24gl23_x86_64.tar.gz -C ~/spotfire-addons
tar -xzf /srv/install/spotfire/SPOT_terrsrv_1.23.0_linux24gl23_x86_64.tar.gz -C ~/spotfire-addons
find ~/spotfire-kit -type f -name 'spotfirenodemanager-14.6.3.x86_64.tar.gz' -print
test -f ~/spotfire-deploy/Products/'Spotfire Distribution'/prerequisites-rhel9.sh
1. PostgreSQL 16과 Spotfire DB 생성
sudo dnf module install -y postgresql:16/server
sudo postgresql-setup --initdb
sudo systemctl enable --now postgresql
sudo sed -i -E '/^host[[:space:]]+all[[:space:]]+all[[:space:]]+(127\.0\.0\.1\/32|::1\/128)[[:space:]]+ident/ s/ident/scram-sha-256/' \
/var/lib/pgsql/data/pg_hba.conf
sudo systemctl reload postgresql
cd ~/spotfire-kit/scripts/postgres_install
chmod +x create_databases.sh
./create_databases.sh
스크립트에서는 spotfire_server 데이터베이스와 spotfire 사용자를 생성함. 완료 후 접속 검증함.
psql -h 127.0.0.1 -p 5432 -U spotfire -d spotfire_server \
-c "select current_user, current_database();"
2. Spotfire Server 설치와 초기화
sudo dnf install -y glibc-langpack-en
sudo localectl set-locale LANG=en_US.UTF-8
sudo rpm -ivh ~/spotfire-kit/spotfireserver-14.6.3.x86_64.rpm
sudo /opt/spotfire/spotfireserver/14.6.3/configure -s 80 -r 9080 -b 9443
sudo /opt/spotfire/spotfireserver/14.6.3/configure-boot
Server를 DB에 연결하고 기본 구성과 관리자 계정을 생성함.
SERVER_BIN=/opt/spotfire/spotfireserver/14.6.3/tomcat/spotfire-bin/config.sh
sudo -u spotfire "$SERVER_BIN" bootstrap \
--driver-class=org.postgresql.Driver \
--database-url="jdbc:postgresql://127.0.0.1:5432/spotfire_server" \
--username=spotfire
sudo -u spotfire "$SERVER_BIN" create-default-config -f /var/tmp/spotfire-initial-configuration.xml
sudo -u spotfire "$SERVER_BIN" import-config \
--comment="Initial Spotfire Server configuration" /var/tmp/spotfire-initial-configuration.xml
sudo -u spotfire "$SERVER_BIN" create-user --username=spotfireadmin
sudo -u spotfire "$SERVER_BIN" promote-admin --username=spotfireadmin
sudo systemctl enable --now spotfireserver-14.6.3
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
curl -I http://127.0.0.1/spotfire
3. Docker와 Node Manager 설치
Docker와 Spotfire 사전 요구사항을 먼저 설치함.
sudo dnf -y install dnf-plugins-core zip
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin aspnetcore-runtime-8.0
sudo systemctl enable --now docker
sudo sh ~/spotfire-deploy/Products/'Spotfire Distribution'/prerequisites-rhel9.sh
그다음 Node Manager를 설치하고 Server에 등록함.
NODE_MANAGER_TAR="$(find ~/spotfire-kit -type f -name 'spotfirenodemanager-14.6.3.x86_64.tar.gz' -print -quit)"
test -n "$NODE_MANAGER_TAR" || { echo 'Node Manager 패키지 없음'; exit 1; }
sudo install -d -m 755 /opt/spotfire/nodemanager/14.6.3
sudo tar -xzf "$NODE_MANAGER_TAR" --strip-components=1 -C /opt/spotfire/nodemanager/14.6.3
sudo restorecon -RFv /opt/spotfire/nodemanager/14.6.3
sudo /opt/spotfire/nodemanager/14.6.3/configure \
-m 9081 -c 9444 -s <SERVER_FQDN> -r 9080 -b 9443 \
-n <NODE_FQDN>,<VM_IP>
sudo /opt/spotfire/nodemanager/14.6.3/configure-boot
sudo systemctl enable --now spotfirenodemanager-14.6.3
sudo usermod -aG docker spotfire
sudo systemctl restart spotfirenodemanager-14.6.3
sudo -u spotfire docker version
SELinux가 켜진 Rocky에서는 restorecon을 빼먹으면 Node Manager가 파일에 접근하지 못할 수 있음.
로그에서 Node ID를 확인한 뒤 Trust 처리함.
sudo grep -E 'Node Manager ID|CSR with fingerprint' \
/opt/spotfire/nodemanager/14.6.3/nm/logs/nm.log | tail -n 5
sudo -u spotfire /opt/spotfire/spotfireserver/14.6.3/tomcat/spotfire-bin/config.sh trust-node \
--id=<NODE_MANAGER_ID>
4. 분석 서비스 배포
관리 화면에서 아래 순서로 진행함.
Deployments & Packages의 Production 영역에 SDN 파일 업로드Nodes & Services에서 Web Player, Python Service, TERR Service 인스턴스를 각각 1개씩 생성- 서비스가 모두 Running 상태가 될 때까지 대기
Spotfire.Dxp.netcore-linux.sdn
Spotfire.Dxp.PythonServiceLinux.sdn
Spotfire.Dxp.TerrServiceLinux.sdn
TERR 초기 이미지 빌드에서 Debian 패키지 서명 검증 오류가 나면 VM 시간을 먼저 확인하면 됨.
sudo systemctl enable --now chronyd
sudo chronyc -a makestep
sudo systemctl restart spotfirenodemanager-14.6.3
5. VMware NAT와 Windows 방화벽 설정
VMware NAT 포트 포워딩에 아래 규칙 추가함.
TCP: Windows 18081 -> <VM_IP>:80
Windows 관리자 PowerShell에서 같은 LAN만 허용하도록 방화벽 규칙 추가함.
New-NetFirewallRule -DisplayName "Spotfire VM HTTP 18081" `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 18081 `
-RemoteAddress <LAN_SUBNET>
8081이 Windows에서 이미 사용 중이면 18081처럼 충돌 없는 포트를 사용하면 됨.
6. 최종 점검과 접속
systemctl is-active postgresql
systemctl is-active spotfireserver-14.6.3
systemctl is-active spotfirenodemanager-14.6.3
systemctl is-active docker
sudo ss -lntp | grep -E ':(80|9080|9443|9081|9444|9501|9502|9503)\b'
sudo docker ps
curl -I http://127.0.0.1/spotfire
| 용도 | 주소 |
|---|---|
| Windows 호스트에서 VM 직접 접속 | http://<VM_IP>/spotfire/ui/login |
| 같은 LAN의 다른 PC에서 접속 | http://<WINDOWS_HOST_IP>:18081/spotfire/ui/login |
Web Player의 9501은 사용자 직접 접속 포트가 아님. 사용자는 위 Spotfire Server 로그인 주소로 접근하면 됨.
Windows 로컬 경로를 참조하는 DXP 데이터는 Rocky VM의 Web Player가 읽을 수 없음. 서버에서 접근 가능한 데이터 원본을 쓰거나, Spotfire Analyst에서 데이터를 분석 파일에 포함해 저장해야 함.