본문 바로가기
프로그램 활용/인공지능(AI)

폐쇄망(인터넷이 차단된 환경)의 Windows에서 PostgreSQL, pgvector, apacheAGE 설치 방법

by 3604 2026. 9. 22.
728x90
폐쇄망 윈도우에서 postgresql, pgvector, apacheAGE를 단계적으로 설치하는 방법?
 
 
폐쇄망 윈도우 환경에서 PostgreSQL, pgvector, Apache AGE를 모두 유기적으로 연동하려면, WSL2(Windows Subsystem for Linux) 환경 위에 이들을 소스 코드로 통합 빌드하는 방식이 유일하고 가장 확실한 해결책입니다.
Apache AGE가 공식적으로 윈도우 네이티브를 지원하지 않고 특정 PostgreSQL 버전(일반적으로 v11~v16)과 매칭되어야 하므로, 여기서는 호환성이 가장 좋은 PostgreSQL 16 버전을 기준으로 단계별 설치 가이드를 제공합니다.

1단계: 외부망(인터넷 PC)에서 준비 및 다운로드
인터넷이 되는 PC에서 필수 설치 파일들을 모두 다운로드하여 USB 등 이동식 저장장치에 저장합니다.
  1. WSL2 및 리눅스 환경
  2. 오프라인 Ubuntu 패키지 (.deb 파일들)
    • 컴파일 필수 도구들을 다운로드해야 합니다. 외부망 리눅스 PC가 있다면 아래 명령어로 .deb 파일들을 한 폴더에 모아서 가져옵니다.
    • apt-get download build-essential libreadline-dev zlib1g-dev bison flex libpam0g-dev libssl-dev pkg-config
  3. 오픈소스 소스코드 다운로드

2단계: 폐쇄망 윈도우에서 WSL2 환경 구축
  1. WSL2 기능 활성화 (PowerShell을 관리자 권한으로 실행)
    powershell
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
    코드를 사용할 때는 주의가 필요합니다.
     
    • 명령어 실행 후 반드시 PC를 재부팅합니다.
  2. WSL2 커널 및 Ubuntu 설치
    • wsl_update_x64.msi를 실행해 커널을 업데이트합니다.
    • Ubuntu_2204...appx 파일의 확장자를 .zip으로 바꾸고 압축을 푼 뒤, 폴더 내의 ubuntu.exe를 실행하여 초기 계정(ID/비밀번호)을 생성합니다.

3단계: 소스코드 빌드 및 통합 설치 (WSL2 내부)
USB에 담아온 모든 파일(.deb 패키지 및 .tar.gz 소스코드 파일들)을 WSL2 내부의 특정 폴더(예: /home/user/build/)로 복사한 뒤 진행합니다.
① 필수 패키지 오프라인 설치
bash
cd /home/user/build/
sudo dpkg -i *.deb
코드를 사용할 때는 주의가 필요합니다.
 
② PostgreSQL 16 빌드 및 설치
모든 확장 프로그램(pgvector, AGE)의 기준이 되는 인프라이므로 가장 먼저 설치합니다.
bash
tar -zxvf postgresql-16.*.tar.gz
cd postgresql-16.*

# /usr/local/pg16 경로에 기본 설치하도록 지정
./configure --prefix=/usr/local/pg16

make -j$(nproc)
sudo make install

# 시스템 환경변수에 PostgreSQL 명령어 경로 등록
echo 'export PATH=/usr/local/pg16/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
코드를 사용할 때는 주의가 필요합니다.
 
③ pgvector 빌드 및 설치
bash
cd /home/user/build/
tar -zxvf pgvector-*.tar.gz
cd pgvector-*

# PostgreSQL 빌드 시 생성된 pg_config를 활용하여 컴파일
make PG_CONFIG=/usr/local/pg16/bin/pg_config
sudo make PG_CONFIG=/usr/local/pg16/bin/pg_config install
코드를 사용할 때는 주의가 필요합니다.
 
④ Apache AGE 빌드 및 설치
bash
cd /home/user/build/
tar -zxvf apache-age-*.tar.gz
cd apache-age-*

# pg_config를 연동하여 AGE 컴파일 및 설치
make PG_CONFIG=/usr/local/pg16/bin/pg_config
sudo make PG_CONFIG=/usr/local/pg16/bin/pg_config install
코드를 사용할 때는 주의가 필요합니다.
 

4단계: 데이터베이스 초기화 및 확장(Extension) 활성화
  1. 데이터베이스 클러스터 초기화 및 서버 구동
    bash
    # 데이터 저장용 디렉토리 생성
    mkdir ~/pg_data
    initdb -D ~/pg_data
    
    # PostgreSQL 서버 시작
    pg_ctl -D ~/pg_data -l logfile start
    
    코드를 사용할 때는 주의가 필요합니다.
     
  2. 데이터베이스 접속 및 확장 프로그램 로드
    bash
    psql -d postgres
    
    코드를 사용할 때는 주의가 필요합니다.
     
    psql 콘솔에 진입하면 아래 SQL 명령을 순서대로 입력합니다.
    sql
    -- 1. pgvector 활성화
    CREATE EXTENSION vector;
    
    -- 2. Apache AGE 활성화
    CREATE EXTENSION age;
    
    -- 3. Apache AGE 라이브러리 세션 로드
    LOAD 'age';
    
    -- 4. AGE 탐색 경로 설정
    SET search_path = ag_catalog, "$user", public;
    
    코드를 사용할 때는 주의가 필요합니다.
     
  3. 설치 정상 여부 최종 테스트
    sql
    -- pgvector 테스트 (3차원 벡터 테이블 생성)
    CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
    
    -- Apache AGE 테스트 (그래프 생성)
    SELECT create_graph('my_graph');
    
    코드를 사용할 때는 주의가 필요합니다.
     
    두 명령어가 모두 오류 없이 정상 실행된다면, 하나의 PostgreSQL 안에서 벡터 검색(RAG/LLM 연동)과 그래프 데이터베이스를 동시에 사용할 수 있는 환경이 완성됩니다.

설치 중 특정 단계에서 에러가 발생하면 답변해 드리겠습니다. 추가로 다음 정보가 필요하신가요?
  • WSL2 내부의 PostgreSQL을 윈도우 호스트 PC(pgAdmin, DBeaver 등)에서 접속할 수 있도록 방화벽 및 설정(pg_hba.conf)을 여는 방법
  • 외부망 리눅스 PC 없이 윈도우 환경에서만 .deb 패키지 파일들을 수동으로 다운로드받는 요령
AI 대답에는 오류가 있을 수 있습니다. 자세히 알아보기
 
 
 
 
 
 
 
 
 
"WSL2 내부의 PostgreSQL을 윈도우 호스트 PC(pgAdmin, DBeaver 등)에서 접속할 수 있도록 방화벽 및 설정(pg_hba.conf)을 여는 방법"과 "외부망 리눅스 PC 없이 윈도우 환경에서만 .deb 패키지 파일들을 수동으로 다운로드받는 요령"도 알려줘
 
 
 
요청하신 두 가지 핵심 팁을 상세히 정리해 드립니다. 외부망 리눅스 PC가 없어도 윈도우 웹 브라우저만으로 필요한 패키지를 추출하고, 설치 후 윈도우 GUI 툴과 연동하는 방법입니다.

1. 윈도우 환경에서만 .deb 패키지 파일 수동 다운로드하는 요령
윈도우 PC(외부망)의 웹 브라우저에서 Ubuntu 패키지 저장소에 직접 접근하여 종속성 패키지들을 다운로드할 수 있습니다.
  1. Ubuntu 패키지 검색 사이트 접속
  2. 패키지 검색 및 버전에 맞는 페이지 선택
    • Keyword 입력창에 필요한 패키지명(예: build-essential)을 입력합니다.
    • Distribution을 앞서 설치한 Ubuntu 버전 명칭(jammy - Ubuntu 22.04 LTS 기준)으로 선택하고 Search를 누릅니다.
  3. 아키텍처 선택 및 미러 링크 다운로드
    • 검색 결과에서 해당 패키지를 클릭한 뒤, 페이지 맨 아래의 Architecture 표에서 amd64를 클릭합니다.
    • 화면에 나오는 여러 미러 사이트 링크(예: ://ubuntu.com 등) 중 하나를 클릭하면 .deb 파일이 다운로드됩니다.
  4. ⚠️ 중요: 종속성(Dependencies) 패키지 함께 받기
    • Ubuntu 패키지는 하나의 기능을 위해 다른 패키지를 요구하는 경우가 많습니다.
    • 패키지 상세 페이지의 Dependencies 항목에 붉은색 아이콘(정식 패키지)으로 표시된 하위 필수 패키지들도 동일한 방식으로 다운로드해야 폐쇄망에서 설치할 때 에러가 나지 않습니다.
    • 추천 방법: 번거롭다면 외부망 윈도우 PC에 잠시 Docker Desktop을 설치한 뒤, docker run -it ubuntu:22.04 컨테이너를 띄워 내부에서 apt-get update && apt-get download build-essential ... 명령어로 .deb를 한 번에 수집해 추출하는 것이 훨씬 간편합니다.

2. WSL2 내부 PostgreSQL ↔ 윈도우 호스트 GUI 툴 연동 설정
WSL2는 가상 네트워크(NAT)를 사용하므로, 윈도우 호스트 PC(pgAdmin, DBeaver 등)에서 접속하려면 PostgreSQL 내부 설정과 윈도우 방화벽을 모두 허용해 주어야 합니다.
① PostgreSQL 설정 파일 수정 (WSL2 내부)
PostgreSQL 데이터 폴더(예: ~/pg_data)로 이동하여 두 설정을 바꿉니다.
  1. postgresql.conf 수정 (모든 IP 대역 접속 허용)
    bash
    nano ~/pg_data/postgresql.conf
    
    코드를 사용할 때는 주의가 필요합니다.
     
    • #listen_addresses = 'localhost' 주석을 풀고 아래와 같이 수정합니다.
    text
    listen_addresses = '*'
    
    코드를 사용할 때는 주의가 필요합니다.
     
  2. pg_hba.conf 수정 (클라이언트 접근 권한 추가)
    bash
    nano ~/pg_data/pg_hba.conf
    
    코드를 사용할 때는 주의가 필요합니다.
     
    • 파일 맨 아래에 WSL2 가상 네트워크 대역의 접근을 허용하는 설정을 추가합니다. (안전하게 모든 대역 허용 후 닫는 방식)
    text
    # IPv4 local connections:
    host    all             all             0.0.0.0/0               scram-sha-256
    
    코드를 사용할 때는 주의가 필요합니다.
     
    (비밀번호 암호화 방식에 따라 scram-sha-256 대신 md5 또는 테스트용 trust를 사용할 수 있습니다.)
  3. PostgreSQL 재시작
    bash
    pg_ctl -D ~/pg_data restart
    
    코드를 사용할 때는 주의가 필요합니다.
     
② 윈도우 호스트 GUI 툴(DBeaver / pgAdmin)에서 접속하기
  1. 접속 주소(Host) 확인
    • WSL2는 윈도우와 네트워크를 공유하므로 보통 localhost 또는 127.0.0.1로 지정하면 바로 연결됩니다.
    • 만약 연결이 안 된다면 WSL2 터미널에서 hostname -I 명령어를 쳐서 나오는 첫 번째 IP(예: 172.X.X.X)를 입력합니다.
  2. 연결 정보 입력
    • Host: localhost (또는 WSL2 내부 IP)
    • Port: 5432
    • Database: postgres
    • Username: 데이터베이스를 생성한 리눅스 계정명 또는 기본 관리자 계정명
    • Password: initdb 또는 계정 생성 시 설정한 비밀번호
③ (참고) 연결이 계속 실패할 경우 체크리스트
  • 윈도우 방화벽: 대개 WSL2 내부와 윈도우 간 통신은 방화벽에 막히지 않으나, 간혹 타사 백신/보안 프로그램이 5432 포트를 차단하는 경우가 있습니다. 인바운드 규칙에서 5432 포트를 허용해 줍니다.
  • WSL2 버전: 만약 localhost로 접속이 안 된다면 윈도우 PowerShell에서 wsl --status를 확인하여 WSL 버전이 최신 상태(WSL2)인지 확인하세요.
패키지 다운로드나 네트워크 설정 과정에서 특정 에러 메시지가 발생했거나, DBeaver에서 연결할 때 발생하는 오류 코드가 있다면 말씀해 주세요. 구체적인 해결 방법을 안내해 드리겠습니다.
 
728x90