리눅스 서버 신규 설치 체크리스트 — BIOS부터 SMART 알림까지 8단계
새 서버를 설치하면 OS만 깔고 바로 서비스를 올리는 경우가 많습니다. 하지만 정전 후 자동 부팅이 안 되면 새벽에 출근해야 하고,커널 패닉이 발생하면 모니터를 연결해야 하고,디스크 고장을 감지 못하면 데이터를 잃습니다. 이 글에서는 16대의 서버에 동일하게 적용한 8단계 체크리스트를 공유합니다.
8단계
설정 체크리스트
16대
서버 적용 완료
10초
패닉 시 재부팅
1GB
로그 보존 한도
왜 체크리스트가 필요한가
서버 1대를 설치할 때는 기억에 의존해도 괜찮습니다. 하지만 여러 대를 운영하면 "이 서버는 SSH 키를 등록했나?", "journald 설정은 했나?" 같은 의문이 생깁니다. 실제로 설정을 빠뜨린 서버에서 문제가 발생한 적이 있습니다.
설정을 빠뜨리면 생기는 일
체크리스트가 있으면 누가 설치하든 동일한 품질이 보장됩니다. 한 번 만들어두면 서버가 100대로 늘어도 같은 절차를 적용할 수 있습니다.
1BIOS — 정전 후 자동 부팅
서버는 모니터 없이 운영하는 것이 기본입니다. 정전이 발생했을 때 전원이 복구되면 자동으로 부팅되어야 합니다. 이 설정을 하지 않으면 정전 후 현장에 가서 전원 버튼을 눌러야 합니다.
BIOS 설정 항목
BIOS → Power Management (또는 Advanced → ACPI) Restore on AC Power Loss → [Power On] ───────────────────────────────────── Power Off : 정전 후 꺼진 상태 유지 (기본값) Power On : 정전 후 자동 부팅 ✅ Last State : 정전 전 상태 복원
⚠️ 메뉴 이름은 메인보드 제조사마다 다릅니다. "AC Power Recovery", "After Power Failure", "Restore on AC Power Loss" 등으로 표기됩니다. 반드시 Power On으로 설정하세요.
미니 PC(N100 등)는 BIOS 접근이 번거로울 수 있으므로, 초기 설치 시 반드시 확인하는 것이 좋습니다. 이 설정 하나로 새벽 정전 시 원격 복구가 가능해집니다.
2SSH 서버 설치
Ubuntu Desktop 버전에는 SSH 서버가 기본 설치되어 있지 않습니다. Server 버전이라도 설치 시 체크를 놓칠 수 있으므로 확인이 필요합니다.
SSH 서버 설치 및 활성화
# 설치 sudo apt update && sudo apt install -y openssh-server # 서비스 시작 및 부팅 시 자동 시작 sudo systemctl enable --now ssh # 상태 확인 sudo systemctl status ssh # ● ssh.service - OpenBSD Secure Shell server # Active: active (running)
SSH 서버가 실행되면 다른 PC에서 ssh user@서버IP로 접속할 수 있습니다. 다음 단계에서 비밀번호 대신 키 인증으로 전환합니다.
3SSH 키 인증 등록
비밀번호 인증은 브루트포스 공격에 취약합니다.ed25519 키 인증으로 전환하면 비밀번호 없이 안전하게 접속할 수 있습니다. 자세한 과정은 SSH 키 인증 다중 서버 관리에서 다루고 있으며, 여기서는 핵심 명령만 정리합니다.
관리 PC에서 실행
# 키 생성 (이미 있다면 생략) ssh-keygen -t ed25519 -C "admin@office" # 새 서버에 공개키 등록 ssh-copy-id -i ~/.ssh/id_ed25519.pub user@새서버IP
새 서버에서 비밀번호 인증 비활성화
# /etc/ssh/sshd_config 수정 sudo sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' \ /etc/ssh/sshd_config # SSH 재시작 sudo systemctl restart ssh
💡 비밀번호 인증을 끄기 전에 키 인증으로 접속이 되는지 반드시 확인하세요. 키가 등록되지 않은 상태에서 비밀번호를 끄면 접속이 불가능해집니다.
4SSH config 별칭 설정
서버가 여러 대면 IP 주소를 외우기 어렵습니다.~/.ssh/config 파일에 별칭을 등록하면 ssh web-server처럼 이름으로 접속할 수 있습니다.
~/.ssh/config 예시
# 관리 PC의 ~/.ssh/config
Host web-server
HostName 10.0.10.10
User admin
IdentityFile ~/.ssh/id_ed25519
Host gpu-server
HostName 10.0.10.20
User admin
IdentityFile ~/.ssh/id_ed25519
Host backup-server
HostName 10.0.10.30
User admin
IdentityFile ~/.ssh/id_ed25519이 설정은 Linux, macOS, Windows(OpenSSH) 모두 동일하게 적용됩니다. Windows의 경우 C:\Users\사용자\.ssh\config 경로에 같은 형식으로 작성하면 됩니다.
| OS | config 경로 | 비고 |
|---|---|---|
| Linux / macOS | ~/.ssh/config | 기본 제공 |
| Windows 10+ | %USERPROFILE%\.ssh\config | OpenSSH 내장 |
| Windows (PuTTY) | — | 세션 저장으로 대체 |
5kernel.panic 자동 재부팅
커널 패닉이 발생하면 서버는 기본적으로 멈춘 상태로 대기합니다. 모니터를 연결하고 수동으로 재부팅해야 하는데, 원격 서버라면 큰 문제가 됩니다.kernel.panic 파라미터를 설정하면 패닉 발생 시 자동으로 재부팅됩니다.
설정 방법
# /etc/sysctl.conf에 추가 echo "kernel.panic = 10" | sudo tee -a /etc/sysctl.conf # 즉시 적용 sudo sysctl -p # 확인 sysctl kernel.panic # kernel.panic = 10
| 값 | 동작 | 적합한 환경 |
|---|---|---|
| 0 (기본) | 재부팅하지 않음 (멈춤) | 개발 환경 (디버깅 필요) |
| 10 (권장) | 10초 후 자동 재부팅 | 서버 환경 (가동 시간 우선) |
| 30 | 30초 후 자동 재부팅 | 크래시 덤프 수집 필요 시 |
💡 kernel.panic = 10은 "커널 패닉 발생 시 10초 후 재부팅"을 의미합니다. 10초면 로그가 디스크에 기록될 시간이 충분하면서도 빠르게 복구됩니다.
6journald 영구 보존
Ubuntu의 systemd-journald는 기본적으로 volatile(휘발성) 모드입니다. 재부팅하면 모든 로그가 사라집니다. 장애가 발생해서 재부팅한 후 "재부팅 전에 무슨 일이 있었지?"를 확인할 수 없는 것입니다.
영구 보존 설정
# 로그 디렉터리 생성 sudo mkdir -p /var/log/journal # /etc/systemd/journald.conf 수정 sudo tee /etc/systemd/journald.conf > /dev/null << 'EOF' [Journal] Storage=persistent SystemMaxUse=1G SystemMaxFileSize=100M MaxRetentionSec=3month EOF # journald 재시작 sudo systemctl restart systemd-journald # 확인: 이전 부팅 로그 목록 journalctl --list-boots
| 설정 | 값 | 설명 |
|---|---|---|
| Storage | persistent | 디스크에 영구 저장 |
| SystemMaxUse | 1G | 전체 로그 최대 크기 |
| SystemMaxFileSize | 100M | 개별 로그 파일 최대 크기 |
| MaxRetentionSec | 3month | 3개월 이상 된 로그 자동 삭제 |
SystemMaxUse=1G로 제한하면 디스크를 과도하게 사용하는 것을 방지하면서도 최근 3개월의 로그를 안전하게 보존할 수 있습니다.
7smartmontools + 이메일 알림
디스크 고장은 예고 없이 찾아옵니다. 하지만 SMART(Self-Monitoring, Analysis and Reporting Technology)를 모니터링하면 고장 징후를 미리 감지할 수 있습니다.smartmontools는 자동으로 SMART를 점검하고, 이상 시 이메일로 알려줍니다.
설치 및 설정
# 설치 sudo apt install -y smartmontools # SMART 지원 확인 sudo smartctl -i /dev/sda # SMART support is: Available # SMART support is: Enabled # 현재 건강 상태 확인 sudo smartctl -H /dev/sda # SMART overall-health self-assessment test result: PASSED
/etc/smartd.conf 설정
# /etc/smartd.conf 예시 # DEVICESCAN으로 모든 디스크 자동 감지 DEVICESCAN \ -d removable \ -n standby \ -s (S/../../1/02|L/../../5/03) \ -W 0,45,50 \ -m admin@example.com \ -M exec /usr/share/smartmontools/smartd_warning.sh # -s : Short test 매주 월요일 02시, Long test 매주 금요일 03시 # -W 0,45,50 : 온도 45°C 경고, 50°C 위험 # -m : 알림 수신 이메일 # -M exec : 알림 실행 스크립트
서비스 활성화
# smartd 서비스 시작 sudo systemctl enable --now smartd # 상태 확인 sudo systemctl status smartd # ● smartd.service - Self Monitoring and Reporting Technology # Active: active (running)
| 테스트 유형 | 주기 | 소요 시간 | 검사 범위 |
|---|---|---|---|
| Short self-test | 매주 월요일 | ~2분 | 기본 읽기/전기적 검사 |
| Long self-test | 매주 금요일 | ~2시간 (용량에 비례) | 전체 표면 스캔 |
⚠️ NVMe SSD는 smartctl -i /dev/nvme0으로 확인합니다. NVMe는 SMART 속성 이름이 SATA와 다르므로 별도로 임계값을 설정해야 합니다. 이메일 알림을 위해서는 mailutils + SMTP relay 설정이 필요합니다.
8원커맨드 검증
7단계를 모두 마쳤다면, 모든 설정이 올바르게 적용되었는지 한 번에 확인할 수 있는 검증 스크립트를 실행합니다. 사람이 하나씩 확인하는 것보다 스크립트로 일괄 점검하는 것이 빠르고 정확합니다.
server-check.sh
#!/bin/bash
# server-check.sh — 서버 초기 설정 검증 스크립트
echo "=== 서버 초기 설정 검증 ==="
echo ""
# 1. SSH 서비스
echo -n "[1] SSH 서비스: "
systemctl is-active ssh > /dev/null 2>&1 && echo "✅ 실행 중" || echo "❌ 미실행"
# 2. 비밀번호 인증
echo -n "[2] 비밀번호 인증: "
grep -q "^PasswordAuthentication no" /etc/ssh/sshd_config && \
echo "✅ 비활성화" || echo "⚠️ 활성 상태"
# 3. kernel.panic
echo -n "[3] kernel.panic: "
val=$(sysctl -n kernel.panic 2>/dev/null)
[ "$val" -gt 0 ] 2>/dev/null && \
echo "✅ ${val}초 후 재부팅" || echo "❌ 미설정 (0)"
# 4. journald 영구 보존
echo -n "[4] journald 보존: "
[ -d /var/log/journal ] && echo "✅ persistent" || echo "❌ volatile"
# 5. smartd 서비스
echo -n "[5] smartd 서비스: "
systemctl is-active smartd > /dev/null 2>&1 && echo "✅ 실행 중" || echo "❌ 미실행"
echo ""
echo "=== 검증 완료 ==="실행 결과 예시
=== 서버 초기 설정 검증 === [1] SSH 서비스: ✅ 실행 중 [2] 비밀번호 인증: ✅ 비활성화 [3] kernel.panic: ✅ 10초 후 재부팅 [4] journald 보존: ✅ persistent [5] smartd 서비스: ✅ 실행 중 === 검증 완료 ===
이 스크립트를 새 서버에 scp로 전송하고 실행하면 됩니다. ❌가 하나라도 있으면 해당 단계를 다시 확인합니다. 여러 대의 서버를 점검할 때는 SSH config와 함께 사용하면 ssh web-server 'bash -s' < server-check.sh 형태로 원격 일괄 점검이 가능합니다.
체크리스트 템플릿
아래 표를 복사해서 새 서버를 설치할 때마다 사용하세요. 모든 항목에 ✅가 채워지면 서버가 운영 준비 완료 상태입니다.
| # | 항목 | 확인 명령 / 방법 | 기대 결과 | ✓ |
|---|---|---|---|---|
| 1 | BIOS 자동 부팅 | BIOS → AC Power Loss | Power On | ☐ |
| 2 | SSH 서버 | systemctl is-active ssh | active | ☐ |
| 3 | SSH 키 인증 | ssh 별칭 (비밀번호 없이) | 접속 성공 | ☐ |
| 4 | 비밀번호 인증 비활성화 | grep PasswordAuthentication /etc/ssh/sshd_config | no | ☐ |
| 5 | SSH config 별칭 | ~/.ssh/config 에 Host 추가 | 이름으로 접속 가능 | ☐ |
| 6 | kernel.panic | sysctl kernel.panic | 10 | ☐ |
| 7 | journald 영구 보존 | ls /var/log/journal | 디렉터리 존재 | ☐ |
| 8 | smartmontools | systemctl is-active smartd | active | ☐ |
💡 이 체크리스트는 최소한의 필수 설정입니다. 서버 역할에 따라 방화벽(ufw), fail2ban, 시간 동기화(chrony), 스왑 설정 등을 추가할 수 있습니다. 모니터링까지 필요하다면 Grafana + Prometheus 통합 모니터링을 함께 설정하세요.
16대 서버에 이 체크리스트를 적용한 결과, 정전 후 자동 복구, 커널 패닉 자동 재부팅, 디스크 이상 사전 감지가 모두 정상 동작하는 것을 확인했습니다. 서버를 새로 추가할 때마다 같은 절차를 반복하면 일관된 품질의 인프라를 유지할 수 있습니다.
댓글
(4개)로그인하면 댓글을 작성할 수 있습니다.
마지막 원커맨드 검증 스크립트가 핵심이네요. 팀원이 설정을 빠뜨려도 한 번에 잡을 수 있어서 실무에 바로 적용했습니다.
BIOS에서 AC Power Loss 설정이 이렇게 중요한 줄 몰랐습니다. 새벽에 정전 나면 서버가 꺼진 채로 있을 뻔했네요.
16대 서버에 실제 적용해본 경험이라 신뢰가 갑니다. journald 영구 보존은 재부팅 후 로그 추적에 필수인데 놓치기 쉽죠.
관련 글
© 2026 TreeRU. All rights reserved.
본 콘텐츠의 저작권은 TreeRU에 있으며, 출처를 밝히지 않은 무단 전재 및 재배포를 금합니다. 인용 시 출처(treeru.com)를 반드시 명시해 주세요.