이 저장소는 GeoServer를 Docker로 배포하고,
Nginx Reverse Proxy + Cloudflare Tunnel을 통해 외부에서도 안전하게 접근 가능한 환경으로 구성되었습니다.
이 환경은 벡터 데이터(.shp), 래스터 데이터(.tiff) 등의 공간 데이터를
GeoServer에 레이어로 등록하고 관리할 수 있도록 설계되었습니다.
QGIS에서 작업한 결과물을 업로드하여, 프론트엔드에서 WMS/WFS 형태로 시각화 및 공유할 수 있습니다.
이 환경의 목적은 QGIS에서 가공한 공간 데이터를 웹 서비스에서 바로 활용하기 위한 브리지를 구축하는 것입니다.
- QGIS: 팀원들이 벡터(SHP), 래스터(TIFF) 데이터를 편집·분석
- GeoServer: QGIS에서 업로드한 데이터를 WMS/WFS/WCS 형태로 서비스화
- 프론트엔드(Web): GeoServer의 URL을 불러와 지도에 시각화
데이터 흐름: QGIS → GeoServer → Web
이 파이프라인을 통해 공간 데이터를 실시간으로 공유·활용할 수 있는 협업 환경을 제공합니다.
별도의 클라우드 서버 없이도, 제 로컬 환경을 임시 공용 GeoServer 인스턴스로 활용하는 구조입니다.
이 환경은 제 노트북을 임시 서버처럼 활용하는 구조입니다.
일반적으로 로컬 머신은 외부에서 직접 접근할 수 없지만,
Cloudflare Tunnel이 ‘역방향(Reverse) 연결’을 생성해
Cloudflare가 대신 외부 요청을 받아 제 맥북으로 전달합니다.
즉, 외부 사용자는 제 로컬 IP를 몰라도
Cloudflare의 고정 도메인(geoserver.saessakbori.site) 을 통해 접근할 수 있습니다.
이 터널은 내부 → Cloudflare 방향(outbound) 으로 열리기 때문에,
별도의 방화벽 설정이나 포트포워딩 없이도 외부 접근이 가능합니다.
단, 이 연결은 제 맥북의 네트워크 상태에 의존합니다. Cloudflare의 IP는 고정되어 있어도 제 맥북의 내부 네트워크(IP) 가 바뀌거나 잠자기·전원 종료·Wi-Fi 변경이 발생하면 터널 세션이 끊기며 일시적으로 외부 접근이 불가능합니다.
하지만 부팅 시 manage.sh가 자동 실행되어
GeoServer · Nginx · Cloudflare Tunnel이 자동으로 복구됩니다.
| 구성 | 역할 | 포트 |
|---|---|---|
| GeoServer | WMS/WFS/WCS 서비스 제공 | 8080 |
| Nginx | GeoServer 리버스 프록시 (HTTP only) | 8282 |
| Cloudflare Tunnel | HTTPS 트래픽 → Nginx 전달 | 443 (Cloudflare) |
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 내부 설정- GeoServer의
/data_dir은 호스트 볼륨 마운트로 데이터가 영구 보존됩니다. (컨테이너를 삭제해도 레이어, 스타일, 워크스페이스가 유지됨) - Cloudflare가 SSL 종단을 담당하므로, Nginx는 HTTP(포트 80)만 사용합니다.
- Cloudflare Tunnel은
/usr/local/etc/cloudflared내 설정파일로 관리됩니다.
- GeoServer 관리자 페이지: https://geoserver.saessakbori.site/geoserver
- 계정/권한: 별도 전달 (저장소에는 포함하지 않음)
- QGIS에서 GeoServer 연결 → 워크스페이스 / 데이터스토어 생성
SHP,GeoTIFF등 업로드 후 Publish- 스타일 등록 및 적용 가능
- WMS: https://geoserver.saessakbori.site/geoserver/wms
- WFS: https://geoserver.saessakbori.site/geoserver/wfs
- 대용량 업로드 시 네트워크 지연 가능 (업로드 시간·타임아웃 고려)
/data_dir의 실제 데이터는.gitignore로 제외(로컬 맥북 경로에는 저장됨)

