CLI개인서버Linux홈서버보안
개인 서버 구축 1: 하드웨어·Linux 기반을 설계하는 CLI 프롬프트
변수 입력6개
변수를 채운 뒤 완성본을 복사하세요
이 연재가 만드는 것
남는 PC 한 대에 Linux를 설치하고, 월 사용료가 큰 cloud VM 대신 집에서 운영할 수 있는 개인 서버를 만든다. 관리 접속은 Tailscale, 외부 웹 공개는 Cloudflare Tunnel을 사용하므로 공유기에서 SSH나 웹 포트를 직접 열지 않는 구성을 기본값으로 삼는다.
연재는 다음 순서로 진행한다.
- 하드웨어·Linux 기반 설계
- Tailscale·SSH 관리망 구축
- Docker Compose 애플리케이션 배포
- 도메인·Cloudflare Tunnel·HTTPS 연결
- 백업·모니터링·업데이트·복구 운영
이 글은 1단계다. 설치 USB 작성과 디스크 초기화는 되돌리기 어려우므로 CLI agent가 자동으로 진행하지 않고, 대상 장치와 백업을 사람이 확인한 뒤 실행한다.
준비할 정보
{{SERVER_MODEL}}: PC·미니 PC 모델, CPU architecture, RAM{{DISKS}}: OS와 데이터용 디스크의 모델·용량·현재 용도{{NETWORK}}: 유선 LAN 여부, 공유기 DHCP 예약 가능 여부{{WORKLOAD}}: 실행할 web, API, DB와 예상 트래픽·데이터 크기{{OS_CHOICE}}: 예: Ubuntu Server 24.04 LTS{{BACKUP_TARGET}}: 외장 디스크나 다른 장비 등 서버와 분리된 백업 위치
먼저 사람이 결정할 것
- 이 PC를 초기화해도 되는가? 필요한 파일은 다른 장치에서 열어 복구 가능한가?
- 24시간 가동 시 소음·발열·소비전력·정전 후 자동 부팅을 감당할 수 있는가?
- 유선 LAN과 통풍이 확보되는가? 노트북이라면 배터리 팽창과 덮개 동작을 점검했는가?
- 공개 서비스의 이용약관·개인정보·저작권 책임을 운영자가 감당할 수 있는가?
복사해서 쓰는 CLI agent 프롬프트
남는 PC를 개인 서버로 전환하기 위한 설치 계획을 세워줘.
장비: {{SERVER_MODEL}}
디스크: {{DISKS}}
네트워크: {{NETWORK}}
서비스와 예상 부하: {{WORKLOAD}}
희망 OS: {{OS_CHOICE}}
분리된 백업 위치: {{BACKUP_TARGET}}
목표 구조:
- Linux LTS 기반 headless server
- 관리 접속은 이후 Tailscale을 사용하고 공유기 포트포워딩은 사용하지 않음
- 공개 웹은 이후 Cloudflare Tunnel을 사용함
- 애플리케이션은 Docker Compose로 실행함
작업 규칙:
1. 먼저 CPU architecture, RAM, disk SMART 상태, NIC, UEFI 설정, 현재 partition을 읽기 전용 명령으로 조사해. 실제 출력에서 확인되지 않은 장치명은 추측하지 마.
2. workload를 기준으로 최소·권장 RAM, 저장공간, 예상 증가량과 병목을 표로 정리해. 이 장비로 감당하기 어렵다면 설치 전에 알려줘.
3. OS disk와 data·backup의 역할을 분리해서 제안해. 같은 물리 디스크의 다른 partition은 백업으로 계산하지 마.
4. 설치 전 체크리스트에 외부 백업 복구 확인, 설치 이미지 checksum 검증, 유선 LAN, UEFI/부팅 순서, 정전 후 자동 부팅 설정을 포함해.
5. disk 삭제·partition·format·OS 설치 명령은 바로 실행하지 마. 대상 disk의 model, serial, size와 삭제될 내용을 보여주고 명시적 승인을 기다려.
6. Linux 설치 후 hostname, timezone, NTP, non-root 관리자 계정, sudo, package update, unattended security update, journald 시간 정보를 설정하는 순서를 제시해.
7. 고정 IP를 OS에 임의로 넣기보다 공유기의 DHCP reservation을 우선 제안해. 실제 공유기 기능을 모르면 조작법을 지어내지 마.
8. SSH·HTTP·HTTPS port forwarding, DMZ, UPnP 활성화는 제안하거나 실행하지 마.
9. 각 단계마다 실행 전 명령, 예상 변화, 검증 명령, 실패 시 복귀 방법을 구분해.
10. secret, 전체 serial, 공인 IP, 개인 계정 정보는 결과에 그대로 남기지 마.
결과는 '적합성 판정 / 목표 구조 / 설치 전 백업 / 디스크 계획 / 설치 체크리스트 / 초기 OS 설정 / 검증 / 다음 단계 입력값 / 위험과 중단 조건' 순서로 작성해.설치 후 통과 기준
# OS·architecture·시간대 확인
cat /etc/os-release
uname -m
timedatectl status
# 장치와 파일시스템 확인(출력의 serial은 공유 전에 가린다)
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
df -hT
# 실패한 systemd unit과 보안 업데이트 상태 확인
systemctl --failed
systemctl status unattended-upgrades --no-pager- 재부팅 후 키보드·모니터 없이 정상 부팅한다.
- 서버의 LAN 주소가 DHCP reservation대로 유지된다.
- non-root 관리자가 필요한 명령에만
sudo를 사용할 수 있다. - 외장 또는 다른 장비에서 샘플 파일 복구가 확인된다.
즉시 중단할 조건
- 디스크 model·size가 계획과 다르거나 mount 중인 데이터가 남아 있다.
- 백업을 다른 장치에서 복원해 보지 못했다.
- SMART 오류, 반복되는 I/O 오류, 과열 또는 불안정한 전원이 관찰된다.
- CLI agent가 확인되지 않은
/dev/sdX를 가정하거나 format 명령을 바로 실행하려 한다.
공식 자료
- Ubuntu Server 설치: https://ubuntu.com/tutorials/install-ubuntu-server
- Ubuntu Server 보안 권고: https://ubuntu.com/server/docs/explanation/security/security_suggestions/
- Ubuntu 자동 보안 업데이트: https://documentation.ubuntu.com/server/how-to/software/automatic-updates/
댓글 0개
아직 댓글이 없습니다.
