turin's blog
만들고, 터지고,
기록합니다
풀스택, Flutter, 서버 운영, SEO, 배포 삽질을 실제 프로젝트 기준으로 정리합니다. 검색해서 들어온 사람이 바로 쓸 수 있는 체크리스트와 명령을 남기는 게 목표입니다.
자주 다루는 주제
주제별로 빠르게 훑어보기
전체 글
운영 중 부딪힌 문제를 검색 의도에 맞춰 정리
API 에러 응답 형식을 처음부터 제대로 잡는 법
에러 응답 구조를 나중에 바꾸려면 클라이언트 코드까지 다 뜯어야 한다. 초반에 형식을 잘 잡아두면 디버깅과 유지보수가 훨씬 편해진다.
Next.js 블로그 글의 SEO 메타데이터를 어떻게 정하는지
title과 description을 대충 넣으면 검색 결과에서 보기 싫게 잘린다. 내가 지금 쓰는 기준을 정리했다.
계속 읽기 →개인 프로젝트에 SQLite를 쓰기로 한 이유와 실제로 느낀 한계
PostgreSQL을 굳이 띄우지 않아도 되는 규모라면 SQLite가 생각보다 잘 맞는다. 단, 몇 가지 주의할 점이 있다.
계속 읽기 →PM2로 Node.js 앱을 서버에서 안정적으로 돌리기
PM2를 그냥 쓰면 재부팅 후 앱이 안 뜨거나 로그가 디스크를 다 먹는 문제가 생긴다. 처음에 해두면 좋은 설정을 정리했다.
계속 읽기 →Certbot로 HTTPS 인증서를 발급할 때 자주 막히는 지점들
Nginx와 certbot을 쓰다 보면 비슷한 곳에서 반복해서 막힌다. 내가 겪은 실패 패턴과 각각의 확인 방법을 정리했다.
계속 읽기 →도메인 연결 후 접속이 안 될 때 DNS부터 확인하는 법
도메인 레코드를 바꾼 뒤 접속이 안 되면 DNS 전파, 캐시, 인증서, nginx 설정 중 어디서 막혔는지 순서대로 확인해야 한다.
계속 읽기 →서버 로그에서 먼저 찾아야 할 패턴들
문제가 생겼을 때 서버 로그 전체를 읽으면 시간이 걸린다. 먼저 필터링해야 할 키워드와 배포 후 빠르게 확인하는 방법을 정리했다.
계속 읽기 →Docker로 띄운 Next.js에서 이미지 최적화가 안 될 때
Next.js Image 컴포넌트는 요청 시점에 서버에서 이미지를 처리하는데, Docker 환경에서는 sharp 패키지와 환경변수 설정이 맞지 않으면 제대로 동작하지 않는다.
계속 읽기 →React useEffect가 멈추지 않을 때 원인 찾는 법
useEffect가 예상보다 많이 실행된다면 의존성 배열이나 effect 안에서의 상태 변경이 원인인 경우가 대부분이다.
계속 읽기 →운영 서버에서 Prisma 마이그레이션 적용하기 전 확인 사항
로컬에서 테스트한 Prisma 마이그레이션을 운영 DB에 적용하기 전에 반드시 챙겨야 할 것들을 정리했다.
계속 읽기 →VPS에 UFW 켤 때 SSH 잠기지 않는 순서
개인 VPS에 방화벽을 처음 설정할 때 순서를 틀리면 SSH가 끊긴다. 안전하게 UFW를 활성화하는 절차를 정리했다.
계속 읽기 →GitHub Actions로 배포 자동화할 때 처음 막히는 곳
GitHub Actions로 배포 파이프라인을 처음 만들다 보면 secrets 설정, 환경 차이, 트리거 조건에서 예상치 못하게 막히는 경우가 많다.
계속 읽기 →배포하면 환경변수 에러가 나는 이유 몇 가지
로컬에서는 잘 돌던 앱이 배포 후 환경변수 관련 에러를 반복하는 패턴은 대부분 몇 가지로 수렴한다.
계속 읽기 →Nginx 502가 뜰 때 확인하는 순서
Nginx 502 Bad Gateway는 nginx 자체가 아니라 업스트림 앱 서버가 응답을 못 하는 상황이다. 어디서 끊겼는지 빠르게 좁히는 법을 정리했다.
계속 읽기 →Node.js 앱이 로컬에선 멀쩡한데 서버에서만 죽을 때
로컬 재현이 안 되는 Node.js 크래시가 서버에서만 반복될 때, 프로세스 상태와 로그로 원인을 좁히는 순서를 정리했다.
계속 읽기 →Next.js 블로그에 관리자 페이지 만들 때 보안에서 놓치기 쉬운 것들
미들웨어 인증 누락, API 라우트 노출, 빌드 타임 시크릿 유출 등 개인 블로그 관리자 구현에서 직접 겪은 보안 실수를 정리했다.
계속 읽기 →React 상태를 전역으로 올리면 생기는 문제
Context나 Zustand 같은 전역 상태를 남발하면 컴포넌트 결합도가 높아지고 불필요한 리렌더링이 쌓인다.
계속 읽기 →Docker Compose로 배포할 때 반복해서 밟는 실수들
포트 충돌, 볼륨 마운트, --build 누락까지, 개인 프로젝트를 Compose로 배포하면서 직접 겪은 실수를 정리했다.
계속 읽기 →Next.js App Router에서 sitemap.xml과 robots.txt 직접 구현하기
next-sitemap 없이 App Router의 파일 컨벤션만으로 sitemap.xml과 robots.txt를 구현하는 방법을 정리했다.
계속 읽기 →새 서버에 처음 SSH 접속하면 제일 먼저 확인하는 것들
새 서버를 받거나 오래 손 안 댔던 서버에 들어갈 때 내가 습관적으로 돌리는 명령어 순서를 정리했다.
계속 읽기 →네이버 서치어드바이저에 사이트 등록하는 법
구글 서치 콘솔만 등록해두다가 네이버 서치어드바이저도 세팅했다. 소유 확인부터 사이트맵 제출까지 실제 과정을 정리한다.
계속 읽기 →혼자 서버 운영하면서 반복했던 실수들
팀 없이 서버를 관리하면 같은 실수를 반복하기 쉽다. 내가 실제로 여러 번 당했던 것들을 정리했다.
계속 읽기 →기록하지 않으면 사라진다 — 개발 블로그를 시작한 이유
6개월 전에 내가 직접 세팅한 nginx 설정을 다시 들여다보다 아무것도 기억나지 않아서 결국 블로그를 시작하기로 했다.
계속 읽기 →