turin's blog

만들고, 터지고, 기록합니다

풀스택, Flutter, 서버 운영, SEO, 배포 삽질을 실제 프로젝트 기준으로 정리합니다. 검색해서 들어온 사람이 바로 쓸 수 있는 체크리스트와 명령을 남기는 게 목표입니다.

1175published
8topics
kopractical notes

자주 다루는 주제

주제별로 빠르게 훑어보기

웹 개발350Next.js283서버 운영165Docker110API80TypeScript58DB50Flutter39

전체 글

운영 중 부딪힌 문제를 검색 의도에 맞춰 정리

API

API 에러 응답 형식을 처음부터 제대로 잡는 법

에러 응답 구조를 나중에 바꾸려면 클라이언트 코드까지 다 뜯어야 한다. 초반에 형식을 잘 잡아두면 디버깅과 유지보수가 훨씬 편해진다.

·2분 읽기
Next.js2분 읽기

Next.js 블로그 글의 SEO 메타데이터를 어떻게 정하는지

title과 description을 대충 넣으면 검색 결과에서 보기 싫게 잘린다. 내가 지금 쓰는 기준을 정리했다.

계속 읽기 →
DB1분 읽기

개인 프로젝트에 SQLite를 쓰기로 한 이유와 실제로 느낀 한계

PostgreSQL을 굳이 띄우지 않아도 되는 규모라면 SQLite가 생각보다 잘 맞는다. 단, 몇 가지 주의할 점이 있다.

계속 읽기 →
서버 운영2분 읽기

PM2로 Node.js 앱을 서버에서 안정적으로 돌리기

PM2를 그냥 쓰면 재부팅 후 앱이 안 뜨거나 로그가 디스크를 다 먹는 문제가 생긴다. 처음에 해두면 좋은 설정을 정리했다.

계속 읽기 →
서버 운영1분 읽기

Certbot로 HTTPS 인증서를 발급할 때 자주 막히는 지점들

Nginx와 certbot을 쓰다 보면 비슷한 곳에서 반복해서 막힌다. 내가 겪은 실패 패턴과 각각의 확인 방법을 정리했다.

계속 읽기 →
서버 운영1분 읽기

도메인 연결 후 접속이 안 될 때 DNS부터 확인하는 법

도메인 레코드를 바꾼 뒤 접속이 안 되면 DNS 전파, 캐시, 인증서, nginx 설정 중 어디서 막혔는지 순서대로 확인해야 한다.

계속 읽기 →
서버 운영1분 읽기

서버 로그에서 먼저 찾아야 할 패턴들

문제가 생겼을 때 서버 로그 전체를 읽으면 시간이 걸린다. 먼저 필터링해야 할 키워드와 배포 후 빠르게 확인하는 방법을 정리했다.

계속 읽기 →
Docker1분 읽기

Docker로 띄운 Next.js에서 이미지 최적화가 안 될 때

Next.js Image 컴포넌트는 요청 시점에 서버에서 이미지를 처리하는데, Docker 환경에서는 sharp 패키지와 환경변수 설정이 맞지 않으면 제대로 동작하지 않는다.

계속 읽기 →
Next.js1분 읽기

React useEffect가 멈추지 않을 때 원인 찾는 법

useEffect가 예상보다 많이 실행된다면 의존성 배열이나 effect 안에서의 상태 변경이 원인인 경우가 대부분이다.

계속 읽기 →
서버 운영1분 읽기

운영 서버에서 Prisma 마이그레이션 적용하기 전 확인 사항

로컬에서 테스트한 Prisma 마이그레이션을 운영 DB에 적용하기 전에 반드시 챙겨야 할 것들을 정리했다.

계속 읽기 →
웹 개발1분 읽기

VPS에 UFW 켤 때 SSH 잠기지 않는 순서

개인 VPS에 방화벽을 처음 설정할 때 순서를 틀리면 SSH가 끊긴다. 안전하게 UFW를 활성화하는 절차를 정리했다.

계속 읽기 →
CI/CD1분 읽기

GitHub Actions로 배포 자동화할 때 처음 막히는 곳

GitHub Actions로 배포 파이프라인을 처음 만들다 보면 secrets 설정, 환경 차이, 트리거 조건에서 예상치 못하게 막히는 경우가 많다.

계속 읽기 →
웹 개발1분 읽기

배포하면 환경변수 에러가 나는 이유 몇 가지

로컬에서는 잘 돌던 앱이 배포 후 환경변수 관련 에러를 반복하는 패턴은 대부분 몇 가지로 수렴한다.

계속 읽기 →
서버 운영1분 읽기

Nginx 502가 뜰 때 확인하는 순서

Nginx 502 Bad Gateway는 nginx 자체가 아니라 업스트림 앱 서버가 응답을 못 하는 상황이다. 어디서 끊겼는지 빠르게 좁히는 법을 정리했다.

계속 읽기 →
서버 운영1분 읽기

Node.js 앱이 로컬에선 멀쩡한데 서버에서만 죽을 때

로컬 재현이 안 되는 Node.js 크래시가 서버에서만 반복될 때, 프로세스 상태와 로그로 원인을 좁히는 순서를 정리했다.

계속 읽기 →
Next.js1분 읽기

Next.js 블로그에 관리자 페이지 만들 때 보안에서 놓치기 쉬운 것들

미들웨어 인증 누락, API 라우트 노출, 빌드 타임 시크릿 유출 등 개인 블로그 관리자 구현에서 직접 겪은 보안 실수를 정리했다.

계속 읽기 →
Next.js1분 읽기

React 상태를 전역으로 올리면 생기는 문제

Context나 Zustand 같은 전역 상태를 남발하면 컴포넌트 결합도가 높아지고 불필요한 리렌더링이 쌓인다.

계속 읽기 →
Docker1분 읽기

Docker Compose로 배포할 때 반복해서 밟는 실수들

포트 충돌, 볼륨 마운트, --build 누락까지, 개인 프로젝트를 Compose로 배포하면서 직접 겪은 실수를 정리했다.

계속 읽기 →
Next.js1분 읽기

Next.js App Router에서 sitemap.xml과 robots.txt 직접 구현하기

next-sitemap 없이 App Router의 파일 컨벤션만으로 sitemap.xml과 robots.txt를 구현하는 방법을 정리했다.

계속 읽기 →
서버 운영1분 읽기

새 서버에 처음 SSH 접속하면 제일 먼저 확인하는 것들

새 서버를 받거나 오래 손 안 댔던 서버에 들어갈 때 내가 습관적으로 돌리는 명령어 순서를 정리했다.

계속 읽기 →
웹 개발1분 읽기

네이버 서치어드바이저에 사이트 등록하는 법

구글 서치 콘솔만 등록해두다가 네이버 서치어드바이저도 세팅했다. 소유 확인부터 사이트맵 제출까지 실제 과정을 정리한다.

계속 읽기 →
서버 운영1분 읽기

혼자 서버 운영하면서 반복했던 실수들

팀 없이 서버를 관리하면 같은 실수를 반복하기 쉽다. 내가 실제로 여러 번 당했던 것들을 정리했다.

계속 읽기 →
웹 개발1분 읽기

기록하지 않으면 사라진다 — 개발 블로그를 시작한 이유

6개월 전에 내가 직접 세팅한 nginx 설정을 다시 들여다보다 아무것도 기억나지 않아서 결국 블로그를 시작하기로 했다.

계속 읽기 →