노트북으로 홈서버 구축하기 - Portainer CE로 Docker GUI 관리하기 (6편)

왜 Portainer인가 Filebrowser, Immich, Vaultwarden, Prometheus, Grafana… 서비스가 하나씩 늘어나다 보니 컨테이너가 어느새 8개가 넘었다. 매번 SSH 접속해서 docker ps, docker logs, docker compose restart 치는 게 점점 번거로워졌다. Portainer CE는 Docker를 웹 UI로 관리할 수 있는 오픈소스 도구다. 컨테이너 시작/중지/재시작, 실시간 로그 확인, 볼륨/네트워크 관리까지 브라우저에서 다 된다. CE(Community Edition)는 무료다. 설치 1. 디렉토리 생성 mkdir -p ~/portainer && cd ~/portainer 2. docker-compose.yml 작성 services: portainer: image: portainer/portainer-ce:latest container_name: portainer restart: always ports: - "19000:9000" - "18000:8000" volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data volumes: portainer_data: 핵심은 /var/run/docker.sock을 마운트하는 것이다. 이를 통해 Portainer가 호스트의 Docker 데몬에 직접 접근할 수 있다. ...

2026년 3월 28일 · 2 min · 290 words · Chanyeol

노트북으로 홈서버 구축하기 - Vaultwarden으로 비밀번호 자체 호스팅하기 (5편)

Vaultwarden이란? Bitwarden의 오픈소스 서버 구현체다. 공식 Bitwarden 앱, 브라우저 확장 프로그램과 100% 호환되면서, 내 서버에서 직접 운영할 수 있다. 구글 비밀번호 관리자를 쭉 써왔는데, 비밀번호를 외부 서비스에 맡기는 게 항상 마음에 걸렸다. 홈서버가 생겼으니 직접 호스팅하기로 했다. 설치 1. 디렉토리 생성 mkdir -p ~/vaultwarden && cd ~/vaultwarden 2. docker-compose.yml 작성 services: vaultwarden: image: vaultwarden/server:latest container_name: vaultwarden restart: always ports: - "11000:80" volumes: - vaultwarden_data:/data environment: - DOMAIN=https://vault.yourdomain.com - SIGNUPS_ALLOWED=true volumes: vaultwarden_data: DOMAIN에 실제 접근할 도메인을 설정해야 한다. Vaultwarden이 HTTPS 환경에서 동작한다고 인식해야 브라우저 확장 연동이 정상적으로 된다. ...

2026년 3월 27일 · 2 min · 346 words · Chanyeol

노트북으로 홈서버 구축하기 - Immich로 구글 포토 대체하기 (4편)

Immich란? 구글 포토와 거의 동일한 UX를 제공하는 자체 호스팅 사진 관리 서비스다. 얼굴 인식, 지도 뷰, 앨범, 공유 기능까지 있고 모바일 앱도 있어서 자동 백업이 된다. 구글 포토 유료 요금제를 쓰고 있었는데 이걸로 완전히 대체했다. 설치 과정 1. 디렉토리 생성 mkdir ~/immich && cd ~/immich 2. docker-compose.yml 및 .env 다운로드 Immich 공식에서 제공하는 파일을 그대로 받아서 쓴다. wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env 3. .env 파일 수정 vi .env 아래 두 경로를 수정한다. ...

2026년 3월 26일 · 3 min · 509 words · Chanyeol

노트북으로 홈서버 구축하기 - 외장 SSD 마운트 + Filebrowser 원격 파일 관리 (3편)

외장 SSD 마운트 집에 1TB SSD가 남아있어서 홈서버 스토리지로 활용하기로 했다. 기존에 Windows에서 쓰던 드라이브라 NTFS 포맷이다. 디스크 확인 lsblk 어떤 디바이스명으로 잡혔는지 확인한다. 파티션 포맷 확인: sudo blkid /dev/nvme1n1p2 NTFS로 확인됐으니 마운트를 진행한다. 마운트 sudo apt install ntfs-3g -y sudo mkdir /mnt/data sudo mount /dev/nvme1n1p2 /mnt/data 마운트 후 확인해보니 Could not mount read-write, trying read-only 메시지가 떴다. 읽기 전용으로 마운트된 것이다. Windows에서 쓰던 드라이브라 더티 플래그가 남아있어서 발생하는 문제다. ...

2026년 3월 25일 · 3 min · 500 words · Chanyeol

노트북으로 홈서버 구축하기 - 왜 홈서버인가? (1편)

왜 홈서버를 만들게 됐나 개인 블로그를 운영하면서 OCI(Oracle Cloud) 무료 인스턴스 하나를 쭉 써왔다. 1 vCPU, 1GB RAM짜리라 Hugo 정적 블로그 서빙에는 충분했는데, 문제는 점점 하고 싶은 게 늘어난다는 것이다. 사진 파일이 쌓이면서 개인 NAS가 필요해졌다 사이드 프로젝트 돌릴 서버가 필요했다 비밀번호 관리도 외부 서비스 말고 직접 하고 싶었다 클라우드로 커버하면 되지 않냐 싶지만, 스토리지가 좀 붙으면 요금이 눈에 띄게 올라간다. 마침 집에 안 쓰는 노트북이 하나 있었고, 거기서부터 홈서버 구축기가 시작됐다. ...

2026년 3월 24일 · 2 min · 399 words · Chanyeol

쿠버네티스(Kubernetes) 클러스터 구조와 핵심 개념 완벽 정리

서론: 왜 쿠버네티스(Kubernetes)인가? 현대적인 클라우드 네이티브 환경에서 컨테이너 기술은 필수적인 요소가 되었습니다. 하지만 수많은 컨테이너를 수동으로 관리하는 것은 불가능에 가깝습니다. 이때 등장한 **쿠버네티스(Kubernetes)**는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화해주는 오픈소스 플랫폼입니다. 구글의 운영 노하우로 탄생한 **쿠버네티스(Kubernetes)**는 현재 전 세계 기업들의 표준 인프라로 자리 잡았으며, 효율적인 서버 관리를 위한 필수 도구입니다. 1. 쿠버네티스(Kubernetes)의 전체적인 구조 쿠버네티스(Kubernetes) 클러스터는 크게 두 부분으로 나뉩니다: 전체 클러스터를 관리하는 ‘컨트롤 플레인(Control Plane)‘과 실제 애플리케이션이 구동되는 ‘노드(Node)‘입니다. **쿠버네티스(Kubernetes)**는 이 구조를 통해 높은 가용성과 확장성을 보장하며, 복잡한 분산 시스템을 하나의 거대한 컴퓨터처럼 사용할 수 있게 해줍니다. 사용자가 원하는 상태를 선언적으로 정의하면, **쿠버네티스(Kubernetes)**는 실제 상태를 그에 맞추기 위해 지능적으로 동작합니다. ...

2026년 3월 16일 · 3 min · 499 words · Chanyeol

Spring Boot 애플리케이션 Docker 라이징: 개발부터 배포까지 한 번에 끝내기

1. 서론: “내 로컬에서는 잘 되는데요?“의 종말 개발 환경에서는 잘 돌아가던 코드가 운영 서버에만 올라가면 OS 환경 차이, 라이브러리 버전 문제로 죽어버리는 경우가 많습니다. Docker는 애플리케이션과 그에 필요한 모든 라이브러리, 설정을 하나의 ‘컨테이너’로 묶어 어디서든 동일하게 실행되도록 보장합니다. 현대적인 개발자라면 반드시 마스터해야 할 Spring Boot의 Dockerizing 기법을 상세히 알아보겠습니다. 2. 효율적인 Dockerfile 작성을 위한 멀티 스테이지 빌드 단순히 JAR 파일을 통째로 복사하는 방식은 이미지 용량이 너무 커집니다. 빌드 단계와 실행 단계를 나누는 **멀티 스테이지 빌드(Multi-stage Build)**를 사용하면 보안과 성능을 모두 챙길 수 있습니다. ...

2026년 2월 26일 · 2 min · 361 words · Chanyeol
1