본문 바로가기

시작110

CORS 에러와 Cookie 문제 해결기 / FastAPI, next.js 연동 이번에 새로운 프로젝트를 진행하며 Auth 로그인 기능을 구현했다.로그인 시 인증을 위해 토큰 값을 쿠키에 저장해야 했는데, 예상치 못한 문제가 발생했다. 백엔드 서버를 배포한 뒤 프론트엔드 팀에게 Endpoint를 제공했는데,프론트엔드의 로컬 개발 URL과 백엔드 서버 주소가 서로 달라서쿠키에 토큰 값이 제대로 저장되지 않는 현상이 생겼다. 이 문제는 CORS(Cross-Origin Resource Sharing)와 관련된 전형적인 이슈였다.서버 간 출처(Origin)가 다를 경우, 브라우저가 보안을 위해 쿠키를 차단하기 때문이다. 처음에는 프록시 서버를 구성하는 방법으로 접근하려 했지만,로컬 환경에서는 복잡한 설정 없이도 간단히 해결할 수 있었다.결국 hosts 파일을 수정해 로컬 URL을 맞추는 방.. 2025. 10. 8.
개인 n8n 서버 배포하기: (2) HTTPS(SSL) 인증:433 SSL 도입 이유기존에 n8n 서버를 HTTP로 배포하면 인증 관련 에러나 쿠키 저장 문제가 발생하는데 n8n은 기본적으로 보안 강화를 위해 HTTPS 환경을 전제로 Secure Cookie를 사용하기 때문이다. 이를 해결하려면:N8N_SECURE_COOKIE=false로 설정하여 HTTPS 의존성 끄기혹은 정식으로 SSL 인증서를 적용하여 HTTPS로 접근. 하지만 나는 팀원들과 함께 안정적이고 안전하게 n8n을 사용하기 위해, SSL 인증을 적용하는 방법을 선택했다.Caddy를 선택이유n8n 서버에 HTTPS 인증을 적용하기 위해 Caddy를 사용했다.Caddy는 간편한 설정만으로 리버스 프록시 및 SSL 인증서를 자동으로 발급·갱신해주는 서비스이다. Let's Encrypt와 기본적으로 통합되어 .. 2025. 7. 31.
개인 n8n 서버 배포하기 : (1) 포트 포워딩(kt 공유) 지금까지는 클라우드 서비스를 통해 배포했지만, 비용 문제로 인해 이번에는 개인 PC를 이용한 배포를 시도했다.목표DNS를 통해 외부에서 n8n 서버 접속SSH를 통한 외부 접속 가능WSL이 아닌 Ubuntu 환경에서 서버 운영Jenkins 기반 CI/CD 구현일단 Docker를 통해 n8n로컬 환경에서 접속이 가능하고외부에서 나의 PC에 접속하게 해야한다. 네트워크 개념 이해 포트포워딩포트포워딩은 내부 네트워크에 있는 장치(예: 개인 PC)에 외부에서 접근할 수 있도록 해주는 설정입니다. 쉽게 말해, 외부에서 내 서버로 접속이 가능하도록 공유기에서 특정 포트를 열어주는 과정입니다. 이를 통해 외부에서도 http://내공인IP:포트번호로 내 서버에 접속할 수 있습니다. IP와 DNS란?IP 주소 (Inte.. 2025. 7. 23.
MCP Clients 실습 - OpenAI MCP Clients는 MCP Server와 Host를 연결해주는 중간다리 역할을 한다. 기존에는 Claude Desktop에서 Server에 바로 접근했지만, 이번에는 MCP 클라이언트를 직접 구성하여 MCP Server와 연동되는 구조와 동작 원리를 학습을 위해 진행했다.MCP Client 작동 원리 이해클라이언트 초기화서버 연결 및 사용 가능한 도구 목록 조회사용자 쿼리를 Claude에게 전달 (도구 설명 포함)Claude가 사용할 도구를 결정클라이언트가 서버에 도구 실행 요청도구 실행 결과를 다시 Claude에게 전달Claude가 자연어 응답 생성 및 반환구현 & 문제 해결1. ChatGPT API 연동OpenAI의 GPT 모델과 직접 연동하여 메시지 흐름을 구성2. 클라이언트 구성 및 서버 연결.. 2025. 6. 24.
MCP Server 실습 - OpenWeatherMap MCP Server의 구조와 동작 원리를 직접 학습하기 위해 실습을 진행했다.Claude Desktop은 기본적으로 실시간 외부 데이터를 불러오는 기능을 제공하지 않기 때문에, 이를 보완하고자 MCP Server를 적용하여 OpenWeatherMap API와 연동하였다. 이를 통해 Claude에서 실시간 날씨 정보를 가져올 수 있게 실습을 진행했다. 1. Python 패키지 매니저 uv 설치uv는 Python 패키지를 설치, 관리, 빌드, 배포까지 가능한 초고속 도구.기존 pip 대비 최대 100배 빠른 속도를 자랑.아래 명령어로 설치 가능:curl -Ls | sh 2. 날씨 API(OpenWeatherMap) 연결 테스트API Key 발급 후 날씨 데이터를 가져오는 코드로 테스트.city:str = .. 2025. 6. 24.
녹음 파일 자동 회의록 생성기 : n8n + STT 회의 내용을 녹음한 뒤 자동으로 회의록을 작성하는 n8n 워크플로를 구축했다.Google Meet·Zoom용 실시간 STT 챗봇 오픈소스도 있지만, 우리 팀은 Discord로 회의를 진행한다.(Discord에도 STT 봇을 만들 수 있을거 같다. 이는 다음 기회에 검토 예정)→ Discord 음성은 노트북에서 직접 녹음한 뒤 Google Drive에 업로드하는 방식이 더 적합하다고 판단했다.1. Google Drive Trigger특정 폴더에 새 파일이 생성/업데이트되면 워크플로 시작.기존에 작성한 Workflow에서는 Trigger가 작동을 안함 이유를 모르겠음.2. Google Drive → 파일 다운로드Trigger에서 받은 file ID를 사용해 녹음 파일 다운로드.3. Whisper(STT)Op.. 2025. 6. 10.
반복되는 회의록 작성을 자동화: n8n으로 구축한 문서 자동화 시스템 이번 일경험 프로젝트를 시작하며 팀별 회의 진행시 회의록 작성과 지출 내용이 포함되어 있는 회의록을 작성해야 했습니다. 아무래도 회의 진행마다 매번 작성해야하는 번거러움과 프로젝트에 더 시간적 투자를 위해 자동화를 구축했습니다.회의록 자동화 요구사항Google Docs 자동 생성 및 저장회의록 템플릿 형식에 문서 생성챗봇을 통한 문서 자동생성사용 스킬n8n: Workflow 기반의 데이터 흐름 자동화.Python : Discord Bot 및 Webhook 연동Google API + OAuth2: Docs 자동 생성 및 Drive 연동시스템 흐름사용자가 Discord에서 명령어 입력 (회의 데이터 입력)Discord 봇이 메시지 파싱하여 n8n Webhook으로 전송n8n에서 데이터 가공 → Google .. 2025. 6. 7.
MCP란 무엇인가? MCP는 AI가 외부 데이터와 도구를 더 똑똑하게 활용할 수 있도록 도와주는 연결 프로토콜이다. 쉽게 말해, AI가 인터넷의 다양한 데이터와 소프트웨어에 '표준 방식'으로 접근할 수 있도록 해주는 길을 만들어주는 기술이다. 예를 들어, 기존 API 방식은 각 웹사이트에 각각 계정을 만들어야 했다면 MCP는 마치 하나의 구글 계정으로 여러 웹사이트에 로그인하는 것처럼 하나의 통로를 통해 여러 시스템과 연결할 수 있게 해준다. 이렇게 되면, AI는 각기 다른 데이터나 도구에 접근할 때마다 매번 새롭게 배워야 할 필요 없이 MCP라는 통일된 규칙을 이용해 손쉽게 연결하고 데이터를 받아올 수 있다.어떻게 작동하나?MCP는 클라이언트-서버 구조로 이루어져 있다.AI 요청 → MCP 클라이언트 → MCP 서버 .. 2025. 5. 9.
GitHub Actions에서 Docker Build 캐싱 적용하기 자동 배포를 위해 GitHub Actions를 사용했지만, 전체 빌드 시간이 길어지는 문제가 있었다.특히 "RUN pip install -r requirements.txt" 명령어에서 매번 의존성 패키지를 새로 설치하면서 시간이 많이 소요됐다.이를 개선하기 위해 캐시를 활용하여 변경 사항이 없을 경우 이전 빌드의 결과를 재사용하도록 설정했고, 이를 통해 빌드 속도를 크게 줄일 수 있었다.BuildKit을 활용한 Docker Build 캐싱기존의 Docker 빌드는 모든 단계의 레이어를 매번 새로 생성하기 때문에 빌드 시간이 길어질 수밖에 없었다. 이를 해결하기 위해 Docker 팀이 도입한 BuildKit은 변경된 단계 이후만 재빌드하는 방식으로 효율성을 높인다.이제 BuildKit을 활용하면 Docke.. 2025. 4. 14.