새로운 셀프 호스팅 프로젝트를 시도해보지 않는 주말이란 어떤 의미일까요? 글쎄요, 전혀 재미가 없겠죠?
이번에는 몇 가지 작은 프로젝트와 그동안 미뤄왔던 규모가 조금 더 큰 프로젝트들을 섞어서 시도해 보았습니다.
모든 경우에 저는 AdGuard와 Unbound DNS를 실행하기 위해 오래된 노트북에 설정한 Proxmox 서버를 사용하고 있습니다.
IP 주소에 대한 간단한 참고 사항: 이 가이드 전반에 걸쳐 사용된 주소(게이트웨이 192.168.1.1, Proxmox 192.168.1.10, Immich 192.168.1.12)는 제 네트워크 설정을 반영한 것입니다. 사용자의 네트워크는 192.168.0.x 또는 10.0.0.x와 같이 완전히 다른 범위를 사용할 수 있습니다. 제 주소를 그대로 복사하지 말고, 항상 본인의 ipconfig 출력에서 확인한 게이트웨이 및 서브넷 정보를 사용하십시오.
Immich
셀프 호스팅 사진 백업
첫 번째는 그동안 미뤄왔던 프로젝트입니다. 프로젝트가 너무 방대하거나 복잡해서가 아니라 단지 미뤄왔던 것뿐입니다. Immich는 Google 포토, Amazon 포토 또는 이와 유사한 서비스를 대체할 수 있는 셀프 호스팅 사진 백업 도구입니다.
LXC 컨테이너 및 Debian 설치
먼저 Debian용 LXC 컨테이너 템플릿이 필요합니다. LXC 컨테이너는 호스트 시스템과 모든 것을 깔끔하게 분리해 주는 가볍고 격리된 Linux 환경입니다. 서버 내부에서 자체 소프트웨어를 독립적으로 실행하는 독립된 상자라고 생각하면 됩니다.
왼쪽 패널에서 노드를 클릭합니다. 호스트 이름으로 설정한 이름이 표시될 것입니다. 예를 들어 제 것은 그냥 DNS입니다. 다음으로 local을 선택합니다. 가운데 패널에서 CT Templates를 선택한 다음 상단의 Templates 버튼을 클릭합니다. debian 12 bookworm을 검색한 후 다운로드합니다.
Proxmox에서 오른쪽 상단의 Create CT를 선택한 후 다음 설정을 사용합니다.
일반(General): 호스트 이름을 immich로 설정하고 안전한 비밀번호를 선택합니다. 템플릿(Template): 방금 다운로드한 Debian 12 Bookworm 템플릿을 선택합니다. 디스크(Disks): 최소 32GB 이상으로 설정합니다. CPU: Immich에 2개의 코어를 할당합니다. 메모리(Memory): Immich는 고급 기능을 실행하기 위해 상당한 메모리가 필요하므로 메모리와 스왑(Swap) 모두에 4096MB를 할당합니다. 네트워크(Network): 앞서 ipconfig 명령으로 확인한 IP 주소와 게이트웨이를 사용하여 IPv4 고정 주소를 설정합니다. DNS: 호스트 설정을 그대로 사용해도 괜찮습니다. OK를 누르고 컨테이너를 시작합니다.
컨테이너 업데이트 및 Docker 설치
다음으로 왼쪽 열에서 컨테이너("immich"라는 이름일 것입니다)를 선택하고 상단 메뉴 바에서 Console을 선택한 다음, 앞서 설정한 비밀번호를 사용하여 Immich 컨테이너에 로그인합니다.
이제 컨테이너를 업데이트한 다음 Immich를 실행할 수 있도록 Docker를 설치해야 합니다. 다음 명령어를 순서대로 하나씩 실행하십시오.
apt install -y ca-certificates curl gnupg install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin마지막 명령어는 시간이 조금 걸릴 수 있지만, 전체적으로 오래 걸리지는 않습니다. 그런 다음 docker --version을 실행하여 설치가 잘 되었는지 확인합니다.
Immich 설치 및 업데이트
다음으로 Immich 디렉터리를 만들고 Immich를 설치해야 합니다. 다음 명령어를 순서대로 실행하십시오.
mkdir /opt/immich && cd /opt/immich curl -L https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml -o docker-compose.yml curl -L https://github.com/immich-app/immich/releases/latest/download/example.env -o .env처음 부팅하기 전에 Immich 구성 파일을 약간 수정해야 합니다. nano .env를 입력한 다음 다음 구성 변수를 조정합니다.
UPLOAD_LOCATION: /opt/immich/photos로 변경 DB_PASSWORD: 안전하고 기억하기 쉬운 것으로 변경 완료되면 CTRL + X를 누르고 변경 사항을 저장합니다.
이제 mkdir /opt/immich/photos를 입력하여 사진 디렉터리를 만들면 드디어 모든 것을 부팅할 준비가 된 것입니다.
여전히 콘솔 상태에서 docker compose up -d를 입력하고 모든 것이 시작될 때까지 기다립니다. 1~2분 정도 걸릴 수 있으니 인내심을 가지십시오. 모든 작업이 완료되면 docker compose ps를 실행하여 모든 것이 원활하게 실행 중인지 확인합니다.
모든 작업이 완료되면 드디어 Immich를 실행할 준비가 된 것입니다. 브라우저로 이동하여 앞서 컨테이너에 할당한 고정 IPv4 주소를 입력합니다. 제 경우에는 http://192.168.1.12:2283입니다.
Immich 로그인 페이지가 나타날 것입니다. 여기서 계정을 만들고 Immich 모바일 앱을 다운로드한 다음 서버(이전 IP 주소)에 연결하면 됩니다.
관련 기사
Mealie
온 가족을 위한 셀프 호스팅 레시피 관리자
얼마 전, 아내와 아이들이 레시피, 아이디어, 쇼핑 목록을 로컬 앱에 추가할 수 있는 가족용 레시피 앱을 직접 만들어 보려고 했습니다. 개념은 좋았지만, 실제로는 제가 원하는 수준까지 구현하기가 어려웠습니다.
그러다 새로운 앱을 직접 코딩할 필요 없이 거의 동일한 기능을 수행하는 셀프 호스팅 레시피 및 식단 계획 앱인 Mealie를 발견했습니다.
Proxmox를 사용 중이라면 Immich와 유사하게 새 컨테이너를 만들어야 합니다.
일반(General): 호스트 이름을 mealie로 설정하고 안전한 비밀번호를 선택합니다. 템플릿(Template): 방금 다운로드한 Debian 12 Bookworm 템플릿을 선택합니다. 디스크(Disks): 이 경우 8GB면 충분합니다. CPU: Mealie는 리소스를 덜 사용하므로 1코어면 충분합니다. 메모리(Memory): Mealie는 메모리 사용량이 적으므로 메모리와 스왑 모두 1024MB를 할당하면 됩니다. 네트워크(Network): 앞서 ipconfig 명령으로 확인한 IP 주소와 게이트웨이를 사용하여 IPv4 고정 주소를 설정합니다. DNS: 호스트 설정을 그대로 사용해도 괜찮습니다.
Finish를 누른 다음 업데이트를 진행할 차례입니다. 왼쪽 패널에서 새로 만든 컨테이너를 선택하고 Start를 누릅니다. 콘솔을 열고 다음 명령어를 실행합니다: apt update && apt upgrade -y이제 이전과 동일한 명령어를 사용하여 Docker를 설치해야 합니다. 다음 명령어를 순서대로 하나씩 실행하십시오.
apt install -y ca-certificates curl gnupg install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin여기서 디렉터리 생성과 같은 Mealie 전용 단계가 추가되어 Immich 설치와 차이가 납니다. 다음 명령어를 입력하십시오:
mkdir /opt/mealie && cd /opt/mealie는 디렉터리를 생성합니다. nano docker-compose.yml은 구성 파일을 엽니다. 구성 파일에 다음 내용을 붙여넣습니다:
services: mealie: image: ghcr.io/mealie-recipes/mealie:latest container_name: mealie restart: always ports: - "9925:9000" volumes: - mealie-data:/app/data environment: - ALLOW_SIGNUP=true - TZ=Europe/London
volumes: mealie-data:물론 TZ 필드는 본인의 시간대로 변경하십시오. CTRL + O를 눌러 구성을 저장하고 CTRL + X를 눌러 종료합니다.
이제 마지막 단계입니다. docker compose up -d를 입력하여 컨테이너를 시작하면 모든 준비가 끝납니다. 이제 계정을 만들고 레시피를 추가하기만 하면 됩니다.
Uptime Kuma
모든 셀프 호스팅 프로젝트를 어떻게 추적할 것인가?
셀프 호스팅 프로젝트에 빠져들고 계시죠? 이제 모든 프로젝트의 상태와 가동 시간을 한눈에 파악할 방법이 필요합니다. 마침 딱 맞는 셀프 호스팅 프로젝트가 있습니다. 바로 Uptime Kuma입니다.
Proxmox에서 오른쪽 상단의 Create CT를 선택한 후 다음 설정을 사용합니다.
일반(General): 호스트 이름을 uptimekuma로 설정하고 안전한 비밀번호를 선택합니다. 템플릿(Template): Debian 12 Bookworm 템플릿을 선택합니다. 디스크(Disks): 4GB면 충분합니다. CPU: 1코어면 충분합니다. 메모리(Memory): 이번에는 메모리 512MB, 스왑 512MB를 설정합니다. 네트워크(Network): 앞서 ipconfig 명령으로 확인한 IP 주소와 게이트웨이를 사용하여 IPv4 고정 주소를 설정합니다. DNS: 호스트 설정을 그대로 사용해도 괜찮습니다. Finish를 누른 다음 업데이트를 진행할 차례입니다. 왼쪽 패널에서 새로 만든 컨테이너를 선택하고 Start를 누릅니다. 콘솔을 열고 다음 명령어를 실행합니다: apt update && apt upgrade -y
이제 이전과 동일한 명령어를 사용하여 Docker를 설치해야 합니다. 다음 명령어를 순서대로 하나씩 실행하십시오.
apt install -y ca-certificates curl gnupg install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg chmod a+r /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin이제 다음 명령어를 실행하여 Uptime Kuma를 실행합니다: docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1 docker ps를 사용하여 제대로 작동하는지 확인할 수도 있습니다.
앞서 설정한 고정 IPv4 주소로 Uptime Kuma를 로드합니다. 관리자 계정을 만들어야 하지만, 완료되면 로컬 IP 주소를 통해 셀프 호스팅 프로젝트를 추가할 수 있습니다.
관련 기사
유료 스토리지를 버리게 만든 하이브리드 클라우드 설정
제 하이브리드 클라우드 설정은 셀프 호스팅과 클라우드 백업의 장점을 결합한 것입니다.
셀프 호스팅은 꿈입니다
주말 동안 저는 아무것도 없던 Proxmox 서버에서 개인용 사진 백업 솔루션, 가족 레시피 허브, 네트워크에서 실행되는 모든 것을 위한 실시간 모니터링 대시보드를 구축했습니다. 모두 제가 이미 소유한 하드웨어에서, 완전히 무료로 말이죠.
제가 계속해서 느끼는 점은 셀프 호스팅의 진입 장벽이 실제로 얼마나 낮은가 하는 것입니다. 이 프로젝트들은 각각 실행하는 데 20분이 걸렸고, 스크린샷을 찍고 글을 작성하는 데 1시간이 더 걸렸을 뿐입니다.
가장 어려운 부분은 LXC 컨테이너를 만드는 것이었는데, 세 번째 컨테이너를 만들 때쯤에는 일상적인 작업처럼 느껴졌습니다. Docker는 일단 설치되면 대부분의 힘든 작업을 처리해주며, 프로젝트 자체도 충분히 성숙해서 별다른 문제 없이 잘 작동합니다.
자신만의 프로젝트를 호스팅하는 데에는 마법 같은 무언가가 있습니다. 이제 대부분의 과정이 얼마나 빠르고 간단한지 확인했으니, 직접 컨테이너를 실행해 보고 어디까지 도달할 수 있는지 확인해 볼 시간입니다.
