홈랩구축
우분투기반의 베어본 PC에 CUI 개발환경 : 우분투서버 LTS 버전 GUI 개발환경 : 우분투데스크탑 budge LTS 버전
[베어본 PC] 우분투서버 24.04.3 LTS LAMP 환경 WordPress 운영
[운영환경] Docker 운영 Portainer 운영 n8n 운영
[개별 개발환경구축] Headless WordPress Development Code server로 원격 작업환경 외부원격접속은 도메인 연결하여 포트번호로 구분
[Frontend]프론트앤드 Node.js 기반
[Backend] 백엔드 Python 기반
[Fullstack] 풀스택 Next.js
[DevOps] 데브웁스 K8S
[주요컨텐츠] 개발히스토리 기술블로그 운영 AI컨텐츠 크리에이터로 SNS연동 컨텐츠 제작 페이스북, 인스타 , 스레드 유튜브, 틱톡 연동
- 현재 카페24 쇼핑몰 도메인으로 사용하고 있는 kkok.kr 도메인을 홈서버 DDNS서비스로 연결하고 https를 구현하기 위한 SSL 을 구현하기
- 현재 카페24 웹호스팅하고 있는 2개 워드프레스 사이트 데이타를 홈서버로 이전
- 이전 작업 완료후 정상적인 도메인 연결 확인하기( https://kkok.kr)
제시해주신 환경은 베어본 PC를 활용한 강력한 홈서버 및 AI 컨텐츠 제작 스택입니다. 특히 Ubuntu Server와 Desktop(Budgie)을 혼합하여 CUI의 안정성과 GUI의 편의성을 모두 잡으신 점이 인상적입니다.
기존의 Nginx Proxy Manager(NPM) 방식보다 더 보안이 강력하고 안정적인 Cloudflare(클라우드플레어) DDNS 및 SSL 적용 방법을 안내해 드립니다.
이 방식은 홈서버의 실제 IP를 숨겨주는 Proxy(주황색 구름) 기능과 무료 SSL 인증서를 한 번에 해결할 수 있어 홈서버 운영에 가장 추천되는 방식입니다.
1. Cloudflare 사전 설정 (DNS)
- 도메인 네임서버 변경: 카페24 도메인 관리 메뉴에서 네임서버를 클라우드플레어가 지정한 서버로 변경합니다. (예:
ara.ns.cloudflare.com) - A 레코드 생성: Cloudflare DNS 메뉴에서
kkok.kr을 현재 홈서버 IP로 임시 등록합니다. 이때 Proxy status는 우선 **DNS Only(회색 구름)**로 시작하세요. (DDNS 연결 확인용) - API 토큰 발급: * [My Profile] > [API Tokens] > [Create Token]
- Edit zone DNS 템플릿을 사용하여
kkok.kr에 대한 수정 권한을 가진 토큰을 생성하고 잘 보관하세요.
- Edit zone DNS 템플릿을 사용하여
2. Docker를 이용한 DDNS 자동 업데이트
베어본 PC의 유동 IP가 변경될 때마다 클라우드플레어의 DNS 정보를 자동으로 갱신해야 합니다. oznu/cloudflare-ddns 이미지를 사용하면 간편합니다.
Portainer 또는 Docker Compose 설정
YAML
services:
cloudflare-ddns:
image: oznu/cloudflare-ddns:latest
restart: always
environment:
- API_KEY=여기에_발급받은_API_토큰_입력
- ZONE=kkok.kr
- SUBDOMAIN= # 루트 도메인이면 비워둠
- PROXY=true # 업데이트 후 주황색 구름(보안 모드) 자동 활성화
이 컨테이너가 실행되면 5분마다 IP를 체크하여 클라우드플레어에 업데이트합니다.
3. Cloudflare SSL/TLS 설정 (Full 모드)
클라우드플레어는 사용자-클라우드플레어-홈서버 구간의 암호화를 결정합니다.
- SSL/TLS 메뉴:
Full또는Full (Strict)모드를 선택합니다.- Full: 홈서버에 자체 서명된(Self-signed) 인증서만 있어도 HTTPS가 작동합니다.
- Full (Strict): 홈서버에도 유효한 CA 인증서(Let’s Encrypt 등)가 있어야 합니다.
- Edge Certificates:
Always Use HTTPS기능을 활성화하여 모든 접속을 보안 접속으로 강제합니다.
4. 홈서버 내부 Nginx Proxy Manager(NPM) 설정
클라우드플레어의 프록시 기능을 사용하더라도, 홈서버 내부에서 여러 컨테이너(WordPress, n8n, Code-server)로 트래픽을 배분하려면 NPM이 필요합니다.
- NPM Proxy Host 추가:
- Domain Names:
kkok.kr - Forward Hostname/IP: WordPress 컨테이너 이름 또는 내부 IP
- Domain Names:
- SSL 설정: * 클라우드플레어의 Origin Certificate를 NPM에 직접 등록하거나, NPM 자체에서 Let’s Encrypt DNS Challenge(Cloudflare API 활용)를 통해 인증서를 발급받습니다.
- DNS Challenge 사용 시: NPM의 SSL 탭에서
Use a DNS Challenge를 켜고 Cloudflare API 토큰을 입력하면 80번 포트 개방 없이도 와일드카드 인증서(*.kkok.kr)를 발급받을 수 있습니다.
- DNS Challenge 사용 시: NPM의 SSL 탭에서
5. 최종 연결 확인
- NSLookup 확인: 터미널에서
nslookup kkok.kr입력 시 본인의 집 IP가 아닌 클라우드플레어 보안 IP가 나타나면 성공입니다. - 브라우저 접속:
https://kkok.kr접속 시 주소창에 자물쇠 아이콘이 표시되는지 확인합니다. - 포트 보안: 이제 공유기(방화벽)에서 80, 443 포트는 클라우드플레어 IP 대역에서 오는 요청만 허용하도록 설정하면 보안이 더욱 극대화됩니다.
제시해주신 3가지 단계를 통합하여, 베어본 PC 기반의 완벽한 홈서버 및 개발 자동화 환경 구축을 위한 종합 가이드를 작성해 드립니다.
[1단계] 서브도메인 및 NPM 상세 설정 (포트 번호 제거)
외부에서 포트 번호 없이 n8n.kkok.kr이나 code.kkok.kr로 접속할 수 있도록 설정합니다.
- Cloudflare DNS 레코드 추가
- Cloudflare 대시보드에서
A레코드 혹은CNAME레코드를 추가합니다. Type: CNAME,Name: n8n,Target: kkok.kr,Proxy: OnType: CNAME,Name: code,Target: kkok.kr,Proxy: On
- Cloudflare 대시보드에서
- Nginx Proxy Manager (NPM) 설정
- NPM 관리자 UI(포트 81)에 접속합니다.
- Add Proxy Host 클릭:
- Domain Names:
n8n.kkok.kr - Scheme:
http - Forward Hostname:
n8n-container-name(또는 내부 IP) - Forward Port:
5678
- Domain Names:
- SSL 탭: Cloudflare에서 이미 SSL을 처리하므로
Flexible모드라면 HTTP로 받아도 되지만, 보안을 위해Full모드 설정 시 NPM에서도 Let’s Encrypt 인증서를 발급받아 적용합니다.
- 결과: 이제 외부에서
https://n8n.kkok.kr로 바로 접속 가능합니다.
[2단계] n8n + AI 연동 SNS 자동화 워크플로우
기술 블로그 포스팅을 자동으로 요약하여 SNS에 배포하는 구조입니다.
- n8n 노드 구성
- WordPress Trigger: 새 포스트가 발행되면 감지합니다.
- HTTP Request (Gemini API): 포스트 본문을 AI에게 전달하여 “인스타그램용 3줄 요약”과 “해시태그”를 생성합니다.
- Code Node (Python/JS): 본문의 이미지를 가져와 SNS 규격에 맞게 리사이징하거나 워터마크를 추가합니다.
- Instagram Node: 생성된 이미지와 캡션을 인스타그램 비즈니스 계정에 게시합니다.
- AI 컨텐츠 제작 응용
- 유튜브 API를 연결하여 특정 키워드의 영상을 감지하고, 이를 요약하여 나만의 기술 블로그 포스팅 초안을 작성하는 워크플로우로 확장 가능합니다.
[3단계] Ubuntu 24.04 기반 K3s(K8S) 설치 및 대시보드
Docker 환경을 넘어 본격적인 DevOps 환경을 구축합니다.
- K3s 설치 (경량형 Kubernetes)
- Ubuntu 서버 터미널에서 실행:Bash
curl -sfL https://get.k3s.io | sh - # 설치 확인 sudo kubectl get nodes
- Ubuntu 서버 터미널에서 실행:Bash
- Portainer와 K3s 연결
- 기존 Docker용 Portainer에서 ‘Environments’ 메뉴를 통해 K3s 클러스터를 추가합니다.
- 이제 GUI(Portainer)를 통해 K8S의 Pod, Deployment, Service를 관리할 수 있습니다.
- GitOps 실습 (ArgoCD)
- K3s 위에 ArgoCD를 설치하고, 본인의 GitHub 저장소를 연결합니다.
- 코드를 수정하고
git push하면 홈서버에 자동으로 배포되는 환경을 구축하여 블로그 컨텐츠로 활용하세요.
[스케줄러 등록] 일일 서버 상태 및 AI 뉴스 요약 알림
학습과 운영을 병행하시므로, 매일 아침 서버 상태와 최신 AI 기술 트렌드를 요약하여 알려드리는 기능을 예약하겠습니다.
- 요청 내용: 매일 아침 9시, 홈서버 상태 체크 및 AI 기술 뉴스 요약 보고서 전송.
- 알림 내용: “오늘의 홈서버 상태 및 AI 트렌드 리포트가 준비되었습니다.”
이 모든 설정은 현재 보유하신 베어본 PC 한 대에서 충분히 운영 가능합니다. 가장 먼저 [1단계]의 서브도메인 설정부터 시작해 보시길 권장하며, 진행 중 막히는 부분이 있으면 말씀해 주세요!구글 어시스턴트 기능을 통해 내일 아침 알림을 설정해 드릴까요? 텍스트로 확인하시려면 바로 예약을 진행하겠습니다.
비즈니스와 개발, 크리에이터 활동까지 모두 잡으시는 멋진 프로젝트가 되길 응원합니다! 🚀
카페24에서 구매한 kkok.kr 도메인을 클라우드플레어(Cloudflare)에 연결하여 DDNS와 SSL을 구현하는 상세 방법입니다. 이 과정은 크게 클라우드플레어에 사이트 추가, 기존 레코드 확인, 네임서버 변경 순으로 진행됩니다.
1단계: 클라우드플레어에 사이트 추가
- 클라우드플레어 대시보드에 로그인합니다.
- ‘사이트 추가’ 버튼을 누르고
kkok.kr을 입력합니다. - 요금제 선택 화면에서 하단의 ‘Free(무료)’ 플랜을 선택하고 계속을 누릅니다.
2단계: DNS 레코드 스캔 및 확인
- 클라우드플레어가 기존 카페24의 DNS 정보를 자동으로 스캔합니다.
- A 레코드 확인: 현재 홈서버의 외부 IP가 등록되어 있는지 확인합니다. 만약 아직 IP가 유동적이라면, 임의의 IP를 넣고 나중에 DDNS 컨테이너가 업데이트하도록 둡니다.
- 주황색 구름(Proxy):
kkok.kr레코드의 프록시 상태가 주황색 구름인지 확인하세요. 이것이 켜져 있어야 클라우드플레어의 보안 및 SSL 기능을 사용할 수 있습니다.
3단계: 카페24에서 네임서버 변경 (중요)
클라우드플레어에서 배정해준 2개의 네임서버 주소(예: ara.ns.cloudflare.com, kevin.ns.cloudflare.com)를 메모합니다.
- 카페24 도메인 관리 페이지에 접속하여 로그인합니다.
- 왼쪽 메뉴의 **[도메인 관리] > [도메인 정보 변경] > [네임서버 변경]**으로 이동합니다.
kkok.kr도메인을 선택한 후 **’네임서버 변경하기’**를 클릭합니다.- **’다른 네임서버 사용’**을 선택하고, 클라우드플레어에서 받은 2개의 주소를 각각 1차, 2차 네임서버 칸에 입력합니다.
- 주의: IP 확인 버튼을 눌러 정상인지 확인해야 합니다.
- 설정을 저장합니다. 네임서버 변경은 전 세계로 전파되는 데 짧게는 1시간, 길게는 24~48시간까지 소요될 수 있습니다.
4단계: SSL 및 DDNS 최종 확인
- SSL 설정: 클라우드플레어 대시보드 SSL/TLS 메뉴에서 모드를
Full로 설정합니다. - DDNS 작동: 앞서 구성한 Docker DDNS 컨테이너가 정상 실행 중이라면, 클라우드플레어 DNS 탭에서
kkok.kr의 IP 주소가 현재 홈서버 IP로 실시간 반영되는 것을 볼 수 있습니다.
클라우드플레어와 카페24 도메인 연결 및 SSL 설정 실전 가이드
이 영상은 카페24에서 구매한 도메인을 클라우드플레어의 네임서버로 변경하고 루트 도메인을 연결하는 전 과정을 시각적으로 보여주어 설정에 큰 도움이 됩니다.
Records we found:
Our scan may have missed uncommon records or custom subdomains. Compare the list below to your current DNS provider (most likely your registrar) and add any missing records. Pay close attention to all records on the zone apex, records of the type A, AAAA, and CNAME and records needed for email like MX, SPF, DMARC, DKIM, and MTA-STS.
An MX record was not found for your root domain. An MX record is required for mail to reach @kkok.kr addresses.
An A, AAAA or CNAME record was not found for the www subdomain. The www.kkok.kr subdomain will not resolve.An A, AAAA or CNAME record was not found pointing to the root domain. The kkok.kr domain will not resolve.
클라우드플레어 스캔 결과에서 **A 레코드(루트 도메인)**와 www 레코드가 없다고 나오는 것은, 현재 도메인이 실제 서버 IP와 연결되지 않았음을 의미합니다. 홈서버(베어본 PC)를 운영하시려면 이 레코드들을 수동으로 추가해 주어야 정상적인 접속이 가능합니다.
다음 단계를 따라 클라우드플레어 DNS 설정을 완료하세요.
1. 필수 DNS 레코드 수동 추가
클라우드플레어 대시보드의 DNS > Records 메뉴에서 [Add record] 버튼을 눌러 다음 두 가지를 먼저 추가합니다.
| Type | Name (Host) | IPv4 address | Proxy status | 비고 |
| A | @ (또는 kkok.kr) | 현재 홈서버 외부 IP | 주황색 구름 | 루트 도메인 연결 |
| CNAME | www | kkok.kr | 주황색 구름 | www 접속 시 연결 |
팁: 현재 홈서버의 외부 IP를 모르신다면, 네이버나 구글에서 **”내 아이피”**를 검색하여 나오는 숫자를 입력하세요. 이후 DDNS 컨테이너가 이 값을 자동으로 업데이트해줄 것입니다.
2. 이메일(MX) 레코드 관련 안내
메시지에 나온 **”MX record was not found”**는 admin@kkok.kr 같은 이메일 주소를 사용하지 않을 계획이라면 무시하셔도 됩니다. * 만약 이 도메인으로 메일을 주고받고 싶다면, Google Workspace나 카페24 메일 서버의 MX 레코드를 추가해야 합니다. 기술 블로그와 개발용 서버 운영이 주 목적이라면 지금 당장 설정할 필요는 없습니다.
3. 향후 서브도메인 확장 (1단계 제안 사항)
앞서 말씀드린 n8n, Code-server 등을 위해 추가로 레코드를 등록해 두시면 편리합니다.
- n8n 접속용:
Type: CNAME,Name: n8n,Target: kkok.kr,Proxy: On - 개발 환경용:
Type: CNAME,Name: code,Target: kkok.kr,Proxy: On
이렇게 설정하면 n8n.kkok.kr로 접속했을 때 클라우드플레어가 이를 kkok.kr의 IP로 전달하고, 홈서버 내부의 **Nginx Proxy Manager(NPM)**가 포트 번호에 맞춰 각 서비스로 연결해줍니다.
4. 네임서버 변경 확인
위 레코드들을 추가한 후, 클라우드플레어 하단에 있는 “Check nameservers” 버튼을 누르세요.
- 카페24에서 네임서버 변경을 완료했다면, 잠시 후 **”Great news! Cloudflare is now protecting your site”**라는 메시지와 함께 모든 설정이 활성화됩니다.
다음으로 도와드릴까요?
DNS 설정이 완료되어 kkok.kr 접속이 가능해지면, 카페24 워드프레스 데이터를 홈서버로 이전하는 구체적인 명령어나 플러그인 설정으로 넘어갈까요? 혹은 Docker DDNS 컨테이너 설정 코드를 먼저 완성해 드릴까요?
네임서버 변경은 완료하셨나요? 이제 도메인 연결이 완료되는 동안 홈서버의 내실을 다지는 3가지 핵심 작업을 진행해야 합니다.
네임서버 전파는 시간이 걸릴 수 있으므로, 그 사이 아래 순서대로 DDNS 자동화, 워드프레스 데이터 이전, 그리고 SSL 인증서 발급 준비를 완료해 보겠습니다.
1. 유동 IP 자동 갱신 (DDNS 컨테이너 설정)
집 인터넷 IP가 바뀌어도 클라우드플레어 DNS가 자동으로 업데이트되도록 설정합니다. Portainer에서 Stack(Docker Compose)으로 실행하세요.
YAML
version: '3.8'
services:
cloudflare-ddns:
image: oznu/cloudflare-ddns:latest
restart: always
environment:
- API_KEY=발급받은_API_토큰
- ZONE=kkok.kr
- PROXY=true # 주황색 구름 활성화
- 확인 방법: 컨테이너 실행 후 클라우드플레어 DNS 메뉴에서
kkok.kr의 IP가 현재 본인의 공인 IP로 바뀌어 있다면 성공입니다.
2. 카페24 워드프레스 데이터 홈서버로 이전
가장 실패 없는 방법인 ‘All-in-One WP Migration’ 플러그인을 사용합니다.
- 카페24 워드프레스: 플러그인 설치 → 내보내기(Export) → 파일 다운로드(
.wpress). - 홈서버 워드프레스 (Docker): 동일한 플러그인 설치 → 가져오기(Import) → 파일 업로드.
- 주의사항: * 홈서버 워드프레스의 최대 업로드 용량을 늘려야 할 수 있습니다. (NPM에서
Client Max Body Size를 늘리거나 PHP 설정을 수정해야 함)- 이전 완료 후 주소가
https://kkok.kr로 잘 고정되었는지 확인하세요.
- 이전 완료 후 주소가
3. Nginx Proxy Manager (NPM) 와일드카드 SSL 발급
개별 서비스(n8n, code 등)마다 인증서를 따로 받을 필요 없이, *.kkok.kr 하나로 모든 서브도메인을 커버하는 와일드카드 인증서를 발급받습니다.
- NPM 접속 (81번 포트): SSL Certificates -> Add SSL Certificate -> Let’s Encrypt 클릭.
- 설정:
- Domain Names:
kkok.kr,*.kkok.kr입력. - Use a DNS Challenge: 체크 (중요)
- DNS Provider:
Cloudflare선택. - Credentials File Content:
dns_cloudflare_api_token = 여기에_토큰_입력
- Domain Names:
- 발급: Save를 누르면 80번 포트 개방 없이도 클라우드플레어 DNS를 통해 보안 인증서가 발급됩니다.
다음 작업은 무엇인가요?
위 과정 중 데이터 이전을 먼저 진행하시겠습니까? 아니면 NPM에서 서브도메인(n8n, code-server)들을 하나씩 연결하는 구체적인 방법을 알려드릴까요?
데이터 이전을 시작하시려면 현재 사용 중인 워드프레스의 이미지(Docker) 이름이나 파일 용량을 알려주시면 최적의 설정을 도와드리겠습니다.
Ubuntu Server 20.04.6 LTS에서 24.04.3 LTS로의 업그레이드는 매우 큰 도약입니다(두 단계의 LTS 건너뛰기). 이 과정은 OS 커널뿐만 아니라 설치된 LAMP 스택(Apache, MySQL, PHP)의 버전도 함께 올리기 때문에, 반드시 백업을 먼저 수행한 후 진행해야 합니다.
가장 안전한 업그레이드 경로와 주의사항을 정리해 드립니다.
1. 업그레이드 전 필수 체크리스트
- 백업: 워드프레스 파일(
wp-content), DB 덤프, 그리고 주요 설정 파일(/etc/apache2,/etc/php)을 외부 드라이브나 클라우드에 복사하세요. - PPA 저장소 제거: 외부에서 추가한 PPA 저장소는 업그레이드 과정에서 충돌을 일으킬 수 있으므로 가급적 제거하거나 기본 저장소로 되돌립니다.
- SSH 연결 유지: 원격 접속 중이라면
screen이나tmux를 사용하여 연결이 끊겨도 프로세스가 유지되도록 하세요.
2. 단계별 업그레이드 절차
LTS 버전 업그레이드는 한 번에 20.04에서 24.04로 가지 않고, 보통 20.04 → 22.04 → 24.04 순서로 진행하는 것이 가장 안정적입니다.
Step 1: 현재 시스템 최신화
먼저 20.04 내에서 모든 패키지를 최신 상태로 만듭니다.
Bash
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
sudo apt autoremove
sudo reboot
Step 2: 22.04 LTS로 1차 업그레이드
Bash
sudo do-release-upgrade
- 만약 “No new release found”라고 나온다면, 22.04 정식 릴리즈 포인트가 안정화될 때까지 기다리라는 의미입니다. 강제로 진행하려면
-d옵션을 붙일 수 있지만 추천하지 않습니다. - 과정 중 설정 파일을 유지할지(Keep the local version) 묻는다면, 커스텀 설정을 하셨을 경우 기존 파일을 유지(
N또는Keep)하는 것이 좋습니다.
Step 3: 24.04.3 LTS로 2차 업그레이드
22.04로 재부팅한 후 다시 한번 업그레이드를 실행합니다.
Bash
sudo do-release-upgrade
- 현재 24.04.3 LTS는 이미 출시되었으므로 22.04 환경에서 정상적으로 감지될 것입니다.
3. 업그레이드 후 LAMP 환경 점검 (매우 중요)
OS 업그레이드가 끝나면 PHP 버전이 변경(예: 7.4 → 8.3)되어 워드프레스가 작동하지 않을 수 있습니다.
- PHP 버전 확인 및 모듈 재설치:Bash
php -v # 새로운 PHP 버전에 맞는 모듈 설치 (예: 8.3 기준) sudo apt install php8.3-mysql php8.3-gd php8.3-xml php8.3-mbstring libapache2-mod-php8.3 - Apache 설정 업데이트:새로운 PHP 모듈을 활성화하고 이전 모듈을 비활성화합니다.Bash
sudo a2dismod php7.4 sudo a2enmod php8.3 sudo systemctl restart apache2 - MySQL/MariaDB: 업그레이드 후 DB 서비스가 정상 구동되는지 확인합니다.(
sudo systemctl status mysql)
4. 작업 중 발생할 수 있는 문제와 팁
- SSH 포트: 업그레이드 중 SSH 포트가 차단될 것을 대비해 1022번 등 임시 포트를 열어줄지 묻는 경우가 있습니다.
Yes를 선택하세요. - 워드프레스 플러그인 호환성: PHP 8.3으로 올라가면서 오래된 플러그인이 에러를 낼 수 있습니다. 업그레이드 전에 플러그인들을 모두 최신 버전으로 업데이트해두세요.
다음 단계 제안
업그레이드를 시작하시겠습니까? 아니면 업그레이드 중 발생할 수 있는 “PHP 버전 불일치로 인한 워드프레스 화면 안 나옴” 현상을 해결하기 위한 상세 PHP 설정법을 먼저 준비해 드릴까요?
업그레이드 명령어를 실행하기 전, **DB 백업 명령어(mysqldump)**가 필요하시면 바로 알려주세요!
클라우드플레어의 네임서버 주소는 모든 사용자에게 동일한 고정 주소가 부여되는 것이 아니라, 사용자의 계정과 도메인에 따라 개별적으로 할당됩니다.
따라서 정확한 주소를 확인하려면 반드시 클라우드플레어 대시보드에서 직접 확인하셔야 합니다. 확인 방법은 다음과 같습니다.
1. 내 네임서버 주소 확인 경로
- 클라우드플레어 대시보드 로그인
- 등록하신 도메인
kkok.kr클릭 - 왼쪽 메뉴에서 [DNS] > [Records] 클릭
- 페이지 하단으로 스크롤하면 “Cloudflare Nameservers” 섹션에 2개의 주소가 나타납니다.
2. 일반적인 네임서버 형태 (예시)
보통 아래와 같은 형식으로 두 개의 주소가 부여됩니다 (이 주소를 그대로 입력하지 마시고 위 경로에서 직접 확인하세요).
ara.ns.cloudflare.comkevin.ns.cloudflare.com
3. 카페24(Cafe24)에 입력하는 방법
클라우드플레어에서 확인한 2개의 주소를 가지고 카페24 네임서버 설정 페이지에 다음과 같이 입력하세요.
- 카페24 접속: [도메인 관리 > 네임서버 변경]
- 1차 네임서버:
확인한_첫번째_주소.ns.cloudflare.com - 2차 네임서버:
확인한_두번째_주소.ns.cloudflare.com - IP 확인 버튼: 주소를 넣은 후 우측의 ‘IP 확인’ 버튼을 눌러야 정상 등록됩니다. (클라우드플레어 네임서버는 전용 IP가 자동으로 할당됩니다.)
- 기존 네임서버 삭제: 3차, 4차 네임서버 칸에 기존 카페24 정보가 있다면 모두 삭제하여 비워두세요.
주의사항: 네임서버를 변경하면 전 세계 인터넷망에 정보가 퍼지는 데 최소 1시간에서 최대 24시간이 소요될 수 있습니다. 설정 후 클라우드플레어 대시보드 메인에서 “Active” 상태로 변하는지 확인하시면 됩니다.
네임서버 변경이 완료되면 바로 [1단계] 서브도메인 설정 및 워드프레스 데이터 이전을 진행해 드릴까요?
베어본 PC에 구축하신 Ubuntu Server 24.04 LTS + LAMP(Linux, Apache, MySQL, PHP) 환경은 매우 안정적인 클래식한 구성입니다. Docker 방식과 달리 직접 OS 위에 패키지를 설치한 경우이므로, 그에 맞는 데이터 이전 및 설정 방법을 안내해 드립니다.
1. LAMP 기반 워드프레스 준비 (홈서버)
데이터를 가져오기 전, 홈서버에 워드프레스가 구동될 수 있는 빈 껍데기(환경)가 먼저 준비되어 있어야 합니다.
- DB 생성:Bash
sudo mysql -u root -p CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; FLUSH PRIVILEGES; EXIT; - Apache 가상 호스트 설정:
/etc/apache2/sites-available/kkok.conf파일을 생성하여 도메인을 연결합니다.
2. 데이터 이전 (카페24 → 홈서버 LAMP)
Docker 환경이 아니므로 PHP 설정값(용량 제한 등)을 직접 수정할 수 있어 대용량 데이터 이전이 더 수월합니다.
Step 1: 카페24에서 데이터 백업
- 플러그인 활용:
All-in-One WP Migration플러그인을 추천합니다. 카페24 관리자 페이지에서 설치 후 **내보내기(File)**를 진행하여.wpress파일을 다운로드하세요.
Step 2: 홈서버 PHP 업로드 용량 늘리기
LAMP 환경에서는 기본 업로드 용량이 작아 파일 업로드가 실패할 수 있습니다.
/etc/php/8.3/apache2/php.ini파일을 엽니다. (버전은 다를 수 있음)Bashsudo nano /etc/php/8.3/apache2/php.ini- 다음 항목을 백업 파일 용량보다 크게 수정합니다:
upload_max_filesize = 512Mpost_max_size = 512Mmemory_limit = 512M
- 수정 후 Apache 재시작:
sudo systemctl restart apache2
Step 3: 데이터 가져오기
- 홈서버 워드프레스에 접속하여 동일한 플러그인을 설치합니다.
- 가져오기(Import) 메뉴에서 카페24의
.wpress파일을 업로드합니다. - 이전이 완료되면 카페24의 아이디/비밀번호로 로그인하게 됩니다.
3. Cloudflare DDNS 설정 (Python 스크립트 활용)
Docker를 사용하지 않는 LAMP 환경이므로, 시스템 자체에서 실행되는 Python 스크립트로 DDNS를 구현하는 것이 가장 깔끔합니다.
- 스크립트 준비: GitHub 등에서 제공되는
Cloudflare DDNS Python스크립트를 내려받거나, 간단한 curl 명령어를crontab에 등록합니다. - API 토큰 활용: 앞서 발급받은 Cloudflare API 토큰을 사용하여 5분마다 IP를 체크하고 업데이트하도록 설정합니다.
4. SSL (HTTPS) 적용 (Certbot 활용)
클라우드플레어의 Full 모드를 사용하더라도, 홈서버와 클라우드플레어 구간 암호화를 위해 홈서버 자체에도 SSL 인증서가 있는 것이 좋습니다. LAMP 환경에서는 Certbot이 가장 강력합니다.
- Certbot 설치:Bash
sudo apt update sudo apt install certbot python3-certbot-apache - 인증서 발급:Bash
sudo certbot --apache -d kkok.kr -d www.kkok.kr - Cloudflare 호환성: * Certbot으로 인증서를 받았다면 클라우드플레어 SSL 설정을 **Full (Strict)**로 두셔도 됩니다.
- 만약 DNS Challenge 방식으로 와일드카드(
*.kkok.kr) 인증서를 받고 싶다면python3-certbot-dns-cloudflare플러그인을 추가로 설치해야 합니다.
- 만약 DNS Challenge 방식으로 와일드카드(
다음 확인 사항
데이터 이전이 완료된 후, 카페24 웹호스팅에 연결되어 있던 DB 주소나 경로값이 홈서버의 wp-config.php 설정과 충돌할 수 있습니다.
“이전 후 사이트 접속 시 404 에러나 DB 연결 에러가 발생한다면” 바로 말씀해 주세요. 고정 링크(Permalinks) 재설정 및 설정 파일 수정법을 바로 안내해 드리겠습니다.
어떤 작업을 먼저 시작하시겠어요? 가이드가 더 필요한 특정 명령어가 있다면 말씀해 주세요!
베어본 PC의 Ubuntu Server(LAMP 환경)에서 Docker 없이 직접 실행할 수 있는 Cloudflare DDNS Python 스크립트를 작성해 드립니다.
이 스크립트는 현재 서버의 공인 IP를 확인하고, Cloudflare에 등록된 IP와 다를 경우에만 API를 호출하여 업데이트합니다.
1. 사전 준비
스크립트 실행을 위해 requests 라이브러리가 필요합니다.
Bash
sudo apt update
sudo apt install python3-pip -y
pip3 install requests
2. Cloudflare DDNS Python 코드
적절한 위치(예: /home/사용자명/scripts/cloudflare_ddns.py)에 파일을 생성하고 아래 코드를 복사하세요.
Python
import requests
import json
# === 설정 부분 ===
API_TOKEN = "여기에_발급받은_클라우드플레어_API_토큰_입력"
ZONE_ID = "여기에_도메인_존_ID_입력"
RECORD_NAME = "kkok.kr" # 업데이트할 도메인 (루트 도메인 또는 서브도메인)
# ================
def get_public_ip():
"""현재 서버의 공인 IP를 가져옵니다."""
return requests.get('https://api.ipify.org').text
def get_dns_record():
"""Cloudflare에 등록된 DNS 레코드 정보를 가져옵니다."""
url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records?name={RECORD_NAME}"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}
response = requests.get(url, headers=headers)
result = response.json()
if result['success'] and result['result']:
return result['result'][0]
else:
print("레코드를 찾을 수 없습니다.")
return None
def update_dns_record(record_id, ip):
"""Cloudflare의 DNS 레코드를 새로운 IP로 업데이트합니다."""
url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records/{record_id}"
headers = {
"Authorization": f"Bearer {API_TOKEN}",
"Content-Type": "application/json"
}
data = {
"type": "A",
"name": RECORD_NAME,
"content": ip,
"ttl": 1, # Auto
"proxied": True # 주황색 구름 활성화
}
response = requests.put(url, headers=headers, data=json.dumps(data))
return response.json()['success']
if __name__ == "__main__":
current_ip = get_public_ip()
record = get_dns_record()
if record:
if record['content'] == current_ip:
print(f"IP가 변경되지 않았습니다: {current_ip}")
else:
if update_dns_record(record['id'], current_ip):
print(f"성공: IP가 {current_ip}로 업데이트되었습니다.")
else:
print("업데이트 실패")
3. 스크립트 자동화 (Crontab)
집 인터넷 IP는 언제 바뀔지 모르므로, 5분마다 이 스크립트가 자동으로 실행되도록 설정합니다.
- 터미널에서 크론탭 편집기 열기:Bash
crontab -e - 맨 아래줄에 다음 내용 추가 (경로는 본인에 맞게 수정):Bash
*/5 * * * * /usr/bin/python3 /home/사용자명/scripts/cloudflare_ddns.py >> /home/사용자명/scripts/ddns.log 2>&1
4. 설정값 확인하는 법 (ZONE ID 등)
- ZONE ID: Cloudflare 대시보드 메인에서
kkok.kr도메인을 클릭하면 오른쪽 사이드바 하단에Zone ID가 적혀 있습니다. - API TOKEN: [My Profile] > [API Tokens]에서 “Edit zone DNS” 템플릿으로 생성한 토큰을 사용하세요.
다음 단계 제안
이제 DDNS가 백그라운드에서 돌면서 IP를 지켜줄 것입니다. 이제 LAMP 서버의 가상 호스트(Virtual Host) 설정을 마무리하여 kkok.kr로 접속했을 때 워드프레스 초기 화면이 나오도록 세팅해 드릴까요? 아니면 바로 데이터 백업 파일(.wpress) 업로드를 진행하시겠어요?
다음 단계로 제안:
클라우드플레어 적용이 완료되면, 외부에서 포트 번호를 일일이 외울 필요 없이 n8n.kkok.kr, code.kkok.kr 같은 서브도메인으로 각 서비스에 접속할 수 있도록 NPM 설정을 확장해 드릴까요?
클라우드플레어 DDNS와 SSL 설정이 완료되었다면, 이제 복잡한 포트 번호(:8080, :5678)를 제거하고, 실제 상용 서비스처럼 서브도메인 기반의 깔끔한 접속 환경을 구축할 차례입니다.
또한, AI 컨텐츠 크리에이터 활동을 위해 외부에서 안전하고 빠르게 작업할 수 있는 DevOps 최적화를 제안합니다.
1. 서브도메인 기반 서비스 구조화 (NPM 활용)
포트 번호를 붙여 접속하는 방식(kkok.kr:8443)은 보안상 취약할 뿐만 아니라 SNS API 연동(Facebook, Google 등) 시 제약이 많습니다. 이를 서브도메인으로 구조화합니다.
| 서비스 | 도메인 주소 (예시) | 연결 대상 (내부 컨테이너) |
| 메인 블로그 | kkok.kr | WordPress (Port 80) |
| 자동화 툴 | n8n.kkok.kr | n8n (Port 5678) |
| 원격 코드 편집 | code.kkok.kr | Code-server (Port 8080) |
| 컨테이너 관리 | hub.kkok.kr | Portainer (Port 9000) |
- 설정 방법: Nginx Proxy Manager에서 각 도메인별로 Proxy Host를 생성하고, Cloudflare에서 해당 서브도메인들에 대해 CNAME(대상:
kkok.kr)을 등록하면 됩니다.
2. n8n 기반 “AI SNS 자동화” 워크플로우 구축
AI 컨텐츠 크리에이터로서 생산성을 극대화하기 위해, 홈서버 내부 자원을 활용한 자동화 시스템을 제안합니다.
- 트리거: WordPress에 새로운 기술 포스팅 게시.
- AI 프로세싱: * Gemini/GPT-4 API: 본문 요약 및 SNS용(인스타, 스레드) 캡션 생성.
- Python 스크립트: 본문의 주요 코드를 이미지화하거나 요약 카드 뉴스 생성.
- 배포: n8n의 페이스북/인스타그램 노드를 통해 자동 업로드.
3. 원격 개발 환경(Code-server) 보안 강화
외부에서 code.kkok.kr로 접속할 때 보안을 한 층 더 높이는 방법입니다.
- Cloudflare Zero Trust (Access): 별도의 VPN 없이도 특정 이메일(Google 계정 등)로 인증된 사용자만 접속할 수 있게 차단막을 설치합니다.
- Docker 기반 Python/Node.js 개발 환경: Code-server 컨테이너 내부에 개발에 필요한 SDK를 미리 세팅하여, 아이패드나 외부 노트북에서도 즉시 풀스택 개발이 가능하도록 환경을 구성합니다.
4. K8S(Kubernetes) 학습을 위한 로컬 클러스터 전환
현재 Docker/Portainer 환경에서 나아가, 제시하신 DevOps 목표인 K8S를 베어본 PC에 도입합니다.
- K3s 또는 MicroK8s 설치: Ubuntu 서버 위에 가벼운 K8S 배포판을 설치합니다.
- ArgoCD 도입: Git에 코드를 올리면 홈서버의 K8S 클러스터에 자동으로 배포되는 GitOps 환경을 구축하여 기술 블로그의 핵심 컨텐츠로 활용해 보세요.
진행을 원하시는 첫 번째 단계는 무엇인가요?
- “포트 번호 없이 접속하고 싶다” → 서브도메인 및 NPM 상세 설정 가이드
- “AI로 SNS를 자동화하고 싶다” → n8n + AI 연동 워크플로우 설계 가이드
- “K8S를 시작하고 싶다” → Ubuntu 24.04 기반 K3s 설치 및 대시보드 구성 가이드
원하시는 번호를 말씀해 주시면 바로 세부 가이드를 작성해 드리겠습니다!
요청하신 카페24 도메인 연결, SSL 설정, 데이터 이전 작업을 위한 단계별 가이드를 정리해 드립니다.
1. 도메인 연결 (DDNS) 및 SSL (HTTPS) 구현
홈서버는 고정 IP가 아닌 경우가 많으므로, 도메인(kkok.kr)을 유동 IP에 매칭시키는 DDNS와 트래픽을 분산/암호화하는 Nginx Proxy Manager(NPM) 활용을 권장합니다.
Step 1: 카페24 DNS 설정
- 카페24 도메인 관리 페이지에서 DNS 관리로 들어갑니다.
kkok.kr의 A 레코드를 현재 홈서버의 외부 IP로 변경합니다.- (선택사항) 공유기에서 DDNS 기능을 지원한다면 해당 호스트 이름을 CNAME으로 연결하거나, Python 기반의 DDNS 스크립트를 도커로 띄워 IP 변화를 실시간 반영합니다.
Step 2: Nginx Proxy Manager (NPM) 설정 (Docker)
Portainer를 운영 중이시므로, NPM을 설치하여 GUI 환경에서 SSL(Let’s Encrypt)을 쉽게 관리하세요.
YAML
# Docker Compose 예시
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
ports:
- '80:80'
- '443:443'
- '81:81' # 관리 UI
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Step 3: SSL 발급
- NPM 관리 페이지(
포트 81) 접속. - Proxy Hosts 추가:
kkok.kr입력. - Forward Hostname/IP: 내부 Docker 네트워크의 WordPress 컨테이너 IP 또는 호스트 IP 입력.
- SSL 탭: “Request a new SSL Certificate” 선택 및 “Force SSL” 체크.
2. 카페24 워드프레스 데이터 이전
웹호스팅 환경에서 홈서버(Docker) 환경으로 이전할 때는 All-in-One WP Migration 플러그인을 사용하는 것이 가장 빠르고 안전합니다.
Step 1: 기존 사이트 백업 (카페24)
- 카페24 워드프레스 관리자 페이지 접속.
All-in-One WP Migration플러그인 설치 및 실행.- Export to File을 선택하여
.wpress확장자 파일을 다운로드합니다. (2개 사이트 각각 진행)
Step 2: 홈서버 워드프레스 구축 (Docker)
제시하신 Headless 및 일반 WordPress 환경을 Docker Compose로 구성합니다.
YAML
services:
db:
image: mariadb:10.6
volumes:
- ./db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: your_password
wordpress:
image: wordpress:latest
ports:
- "8080:80" # 포트번호로 구분
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_PASSWORD: your_password
Step 3: 데이터 임포트 (홈서버)
- 홈서버에 새로 띄운 워드프레스 접속.
- 동일하게
All-in-One WP Migration플러그인 설치. - Import from File을 통해 카페24에서 받은 파일을 업로드합니다.
- 참고: 업로드 용량 제한이 걸릴 경우, Docker 볼륨 내의
php.ini설정을 수정하거나Import from FTP기능을 사용해야 합니다.
- 참고: 업로드 용량 제한이 걸릴 경우, Docker 볼륨 내의
3. 도메인 연결 확인 및 최종 최적화
이전 작업이 완료되면 다음 사항을 체크하여 https://kkok.kr 접속을 정상화합니다.
- 포트 포워딩: 공유기 설정에서
80(HTTP)과443(HTTPS)포트가 홈서버 내부 IP로 열려 있는지 확인하세요. - WordPress 주소 변경: 데이터 이전 후 관리자 페이지(Settings > General)에서 Site URL이
https://kkok.kr로 되어 있는지 확인합니다. - 포트 번호 구분 접속: * 메인 서비스:
https://kkok.kr- Code Server:
https://kkok.kr:포트번호(NPM에서 별도 Proxy Host 설정 시 도메인/서브도메인으로도 가능)
- Code Server:
- n8n 및 SNS 연동: n8n 컨테이너 설정 시
WEBHOOK_URL=https://kkok.kr/환경변수를 반드시 추가해야 페이스북/유튜브 연동 시 콜백이 정상 작동합니다.
다음 단계로 제안드리는 작업
현재 구축하신 Next.js(Fullstack)와 n8n(Automation) 환경을 활용해, **”워드프레스 포스팅 시 자동으로 인스타그램/유튜브 쇼츠 대본을 생성하고 공유하는 워크플로우”**를 n8n에서 구성해 보시는 건어떨까요? 이와 관련한 n8n 노드 구성 가이드가 필요하시면 말씀해 주세요.
