Skip to content

2025-All4Land-RideOn/GeoServer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌍 GeoServer + Nginx + Cloudflare Tunnel Setup

이 저장소는 GeoServer를 Docker로 배포하고,
Nginx Reverse Proxy + Cloudflare Tunnel을 통해 외부에서도 안전하게 접근 가능한 환경으로 구성되었습니다.

이 환경은 벡터 데이터(.shp), 래스터 데이터(.tiff) 등의 공간 데이터를
GeoServer에 레이어로 등록하고 관리할 수 있도록 설계되었습니다.
QGIS에서 작업한 결과물을 업로드하여, 프론트엔드에서 WMS/WFS 형태로 시각화 및 공유할 수 있습니다.

1. 개요

1-1. 접속 경로

👉️ 🌐 새싹보리 GeoServer 접속하기

1-2. 왜 필요한가?

이 환경의 목적은 QGIS에서 가공한 공간 데이터를 웹 서비스에서 바로 활용하기 위한 브리지를 구축하는 것입니다.

  • QGIS: 팀원들이 벡터(SHP), 래스터(TIFF) 데이터를 편집·분석
  • GeoServer: QGIS에서 업로드한 데이터를 WMS/WFS/WCS 형태로 서비스화
  • 프론트엔드(Web): GeoServer의 URL을 불러와 지도에 시각화

데이터 흐름: QGIS → GeoServer → Web

이 파이프라인을 통해 공간 데이터를 실시간으로 공유·활용할 수 있는 협업 환경을 제공합니다.
별도의 클라우드 서버 없이도, 제 로컬 환경을 임시 공용 GeoServer 인스턴스로 활용하는 구조입니다.

1-3. 서버 동작 특성

이 환경은 제 노트북을 임시 서버처럼 활용하는 구조입니다.
일반적으로 로컬 머신은 외부에서 직접 접근할 수 없지만,
Cloudflare Tunnel이 ‘역방향(Reverse) 연결’을 생성해
Cloudflare가 대신 외부 요청을 받아 제 맥북으로 전달합니다.

즉, 외부 사용자는 제 로컬 IP를 몰라도
Cloudflare의 고정 도메인(geoserver.saessakbori.site) 을 통해 접근할 수 있습니다.
이 터널은 내부 → Cloudflare 방향(outbound) 으로 열리기 때문에,
별도의 방화벽 설정이나 포트포워딩 없이도 외부 접근이 가능합니다.

단, 이 연결은 제 맥북의 네트워크 상태에 의존합니다. Cloudflare의 IP는 고정되어 있어도 제 맥북의 내부 네트워크(IP) 가 바뀌거나 잠자기·전원 종료·Wi-Fi 변경이 발생하면 터널 세션이 끊기며 일시적으로 외부 접근이 불가능합니다.

하지만 부팅 시 manage.sh가 자동 실행되어 GeoServer · Nginx · Cloudflare Tunnel이 자동으로 복구됩니다.

동작 예시(click)(치summaryr Cloudflare Tunnel 정상 연결 상태 외부 접근 테스트 결과

2. 구성요소

구성 역할 포트
GeoServer WMS/WFS/WCS 서비스 제공 8080
Nginx GeoServer 리버스 프록시 (HTTP only) 8282
Cloudflare Tunnel HTTPS 트래픽 → Nginx 전달 443 (Cloudflare)

3. 디렉토리 구조

geoserver/
├── data_dir/                  # GeoServer 데이터 (업로드 제외)
│   ├── coverages/             # 커버리지 데이터
│   ├── data/                  # 업로드된 공간 데이터 (SHP, GeoTIFF 등)
│   ├── demo/                  # GeoServer 데모용 데이터
│   ├── gwc/                   # GeoWebCache 설정
│   ├── gwc-layers/            # GWC 레이어 구성 정보
│   ├── layergroups/           # 레이어 그룹 설정
│   ├── layouts/               # UI 레이아웃 설정
│   ├── logs/                  # GeoServer 로그 파일
│   ├── palettes/              # 색상 팔레트 정의
│   ├── plugins/               # GeoServer 플러그인
│   ├── security/              # 사용자, 역할, 권한 설정
│   ├── styles/                # SLD 스타일 정의
│   ├── user_projections/      # 사용자 정의 좌표계
│   ├── validation/            # 데이터 검증 규칙
│   ├── workspaces/            # 워크스페이스 설정 및 데이터 연결
│   └── www/                   # 정적 파일 제공 디렉토리
│
├── ssl/                       # SSL 인증서 (업로드 제외)
│   ├── nginx.crt              # Cloudflare용 인증서
│   └── nginx.key              # 위 인증서의 개인키
│
├── .gitignore                 # Git 업로드 제외 규칙
├── cloudflared.log            # Cloudflare 로그 파일(업로드 제외)
├── docker-compose.yml         # GeoServer 및 Nginx 컨테이너 실행 구성 파일
├── manage.sh                  # GeoServer + Cloudflare Tunnel 자동 관리 스크립트
├── nginx.conf                 # Nginx 리버스 프록시 설정 파일
├── README.md                  # 프로젝트 설명 문서
└── web.xml                    # GeoServer 내부 설정

4. 환경 개요

  • GeoServer의 /data_dir은 호스트 볼륨 마운트로 데이터가 영구 보존됩니다. (컨테이너를 삭제해도 레이어, 스타일, 워크스페이스가 유지됨)
  • Cloudflare가 SSL 종단을 담당하므로, Nginx는 HTTP(포트 80)만 사용합니다.
  • Cloudflare Tunnel은 /usr/local/etc/cloudflared 내 설정파일로 관리됩니다.

5. 팀원 사용 가이드(추가 보완 예정)

5-1. 접속 정보

5-2. 레이어 등록

  • QGIS에서 GeoServer 연결 → 워크스페이스 / 데이터스토어 생성
  • SHP, GeoTIFF 등 업로드 후 Publish
  • 스타일 등록 및 적용 가능

5-3. 조회용 엔드포인트

5-4. 유의사항

  • 대용량 업로드 시 네트워크 지연 가능 (업로드 시간·타임아웃 고려)
  • /data_dir의 실제 데이터는 .gitignore로 제외(로컬 맥북 경로에는 저장됨)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages