포스트

홈서버 (재)구축하기 - 1. 기본 설정

홈서버의 SSD를 교체하면서 운영체제를 새로 설치하고, 환경을 다시 구축하기 위한 초기 설정하기

홈서버 (재)구축하기 - 1. 기본 설정

홈서버에 대해

작년 초부터 사용 중인 홈서버가 있다. 홈페이지, 파일 저장소, CI/CD 등등 학습 용도로 유용하게 사용하고 있는 서버다.

당시 내가 있던 학과 동아리의 회장 형이 예전에 썼던 홈서버를 부품 교체없이 그대로 사용하다가, 오래된 부품을 하나씩 교체하다보니 지금과는 완전 다른 모습이 되었다. SSD 빼고 전부 바꿨으니 테세우스의 홈서버인 셈…

그리고 마지막까지 버티던 오리지널 부품(?)인 SSD도 지난 달에 마침내 가셨다. S.M.A.R.T.1로 사용 시간을 확인했을 때 상당히 오래된 SSD라서 언젠간 죽을거라 예상은 하고 백업은 철저히 해뒀다. 다만 운영체제와 설치된 서비스의 설정까지 백업하지 않았으므로 이 부분은 직접 해야한다. 귀찮지만 기억을 되새겨보고 이렇게 블로그에 기록하기 위해 일부러 백업하지 않았다.

사양

홈서버의 사양은 아래와 같다.

  • CPU: AMD Ryzen 5 3400G
  • CPU FAN: Noctua NH-L9a-AM4
  • Case, Power, M/B: ASRock DeskMini A300 120W
  • RAM: Samsung SO-DIMM DDR4-3200 8GB × 2
  • SSD: SK hynix Gold P31 M.2 NVMe 500GB
  • HDD: ST1000LM024 HN-M, TOSHIBA MQ01ABD1 (RAID 1 구성)

서비스를 잔뜩 올려도 차고 넘치는 성능이다. SSD는 이번에 바꾼 새 SSD를 기재. 작년에 SSD 저렴했는데 그때 살 걸…

운영체제 설치

당시엔 Ubuntu Server 22.04 LTS 버전을 사용했고, SSD가 죽기 전까지 계속 사용했다. 마침 올해 새 LTS 버전인 24.04.1이 배포되었으니 최신 버전을 설치해보겠다.

  1. 언어, 키보드 레이아웃: 영어로 선택.
  2. 설치 타입: Ubuntu Server를 선택.
  3. 네트워크 설정, Proxy, Ubuntu 미러 서버 설정: 건드리지 않고 패스.
  4. 디스크 설정: Use an entire disk를 체크하고, 운영체제를 설치할 디스크를 선택한다. P31의 경우 SHGP31-500GM라고 표시되므로 이걸 선택. LVM은 해제하고 진행.
  5. 사용자 계정 생성
    • Your name: 내 이름 (GUI에서 보이는 이름인데 CLI니까 큰 의미는 없다.)
    • Your servers name: 서버 호스트 이름
    • Pick a username: 서버에서 사용할 내 아이디 (= 홈 디렉토리 이름)
  6. Ubuntu Pro: 공짜가 아니니까 Skip for now 선택.
  7. SSH 설정: 원격으로 작업할 예정이므로 Install OpenSSH server 선택.
  8. 설치할 서버 패키지: 나중에 따로 설치하는게 나아서 패스.
  9. 설치 진행: 설치 완료 시 별도의 화면 전환이 없으므로 나오는 글을 잘 확인하기.
  10. USB 제거 및 재시작: UEFI에서 부팅 순서를 바꿔놨다면 원래대로 돌려놓기.

초기 설정

OpenSSH

공개키 생성 및 등록

  1. 서버에 접속할 Windows 클라이언트에서 git이 설치된 Windows 터미널에서 아래의 명령어를 입력한다.
    1
    
     PS C:\Users\hgsanguk> ssh-keygen -t rsa
    
  2. 공개키 & 개인키 쌍의 경로와 파일 이름을 지정한다. 입력하지 않을 경우 C:\Users\<사용자명>\.sshid_rsa(개인키)와 id_rsa.pub(공개키)를 저장한다.
    1
    2
    
     Generating public/private rsa key pair.
     Enter file in which to save the key (C:\Users\hgsanguk/.ssh/id_rsa):
    
  3. 키를 사용할 때 필요한 비밀번호를 입력한다. 필요하지 않을 경우 Enter.
    1
    2
    
     Enter passphrase (empty for no passphrase):
     Enter same passphrase again:
    
  4. 아래 화면이 뜨면 원하는 경로에 이제 id_rsa(개인키)와 id_rsa.pub(공개키)가 저장되었다. 공개키 파일을 열어 내용 복사. 혹은 scp로 공개키 파일을 서버로 전송하는 것도 괜찮다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
     Your identification has been saved in C:\Users\hgsanguk/.ssh/id_rsa
     Your public key has been saved in C:\Users\hgsanguk/.ssh/id_rsa.pub
     The key fingerprint is:
     SHA256:########################################### hgsanguk@Sanguk-PC
     The key's randomart image is:
     +---[RSA 3072]----+
     |         o*B=++o |
     |        ..++oo++.|
     |        .+oo  o.+|
     |       ..ooo.o .+|
     |        SE..+ .o.|
     |         o . B.o.|
     |          . + *..|
     |           o o.oo|
     |            o..o+|
     +----[SHA256]-----+
    
  5. 다시 서버에 돌아와서 아래 명령어로 파일을 열고, 아까 복사한 공개키 내용을 붙여넣고 저장한다. 이미 추가된 공개키가 있다면 다음 줄에 추가한다.
    1
    
     $ vim ~/.ssh/authorized_keys
    

간편 로그인 설정

  1. 서버에 접속할 Windows 클라이언트에서 C:\Users\<사용자명>\.sshconfig이란 파일을 만들고, 위와 같은 내용을 추가한다. 주소와 포트, 사용자 이름을 알맞게 입력한다.
    1
    2
    3
    4
    5
    
     Host homeserver
         HostName example.com 
         Port 2233
         User hgsanguk
         IdentityFile (생성한 키 파일쌍 경로. 경로나 파일 이름을 지정하지 않았으면 생략)
    
  2. 이제 Windows 터미널에서 아래의 명령어로 서버에 즉시 로그인이 가능하다.
    1
    
     PS C:\Users\hgsanguk> ssh homeserver
    

비밀번호로 SSH 로그인 막기

  1. 서버에서 아래 명령어로 파일을 열고,PasswordAuthentication yesyesno로 바꾼 후 저장한다.
    1
    2
    
     $ sudo vim /etc/ssh/sshd_config 
     $ sudo vim /etc/ssh/sshd_config.d/50-cloud-init.conf # 이 파일이 존재한다면 sshd_config 대신 이 파일을 수정
    
  2. SSH 서비스를 재시작하고 제대로 설정되었는지 비밀번호로 로그인 해보자.
    1
    
     $ sudo systemctl restart ssh
    

HDD 마운트

이전에 1TB HDD 2개를 RAID 1로 묶은 Array를 새로 구성한 환경에서도 사용할 수 있게 해보자.

  1. 우선 RAID로 구성된 디스크를 스캔하고, 그 결과를 /etc/mdadm/mdadm.conf에 저장한 뒤 시스템을 업데이트 한다. 이렇게 해야 부팅할 때 디바이스 번호가 멋대로 바뀌어 부팅이 실패하는 일이 생기지 않는다.
    1
    2
    
     $ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
     $ sudo update-initramfs -u
    
  2. 마운트할 디렉터리를 만든 후, 마운트할 디스크가 어떤 디바이스인지 확인하고 마운트한다.
    1
    2
    3
    
     $ sudo mkdir -p /mnt/data
     $ sudo fdisk -l
     $ sudo mount /dev/md0 /mnt/data
    
  3. 자동 마운트를 위해 /etc/fstab 파일에 아래의 내용을 추가한 후 저장한다.
    1
    2
    
     # Data HDD RAID Array
     /dev/md0 /mnt/data ext4 defaults 0 0
    

각주

  1. Self-Monitoring, Analysis and Reporting Technology의 약자로, 디스크 내에 내장되어있는 분석 및 진단 기능이다. 다음 편에서 설치할 smartctl로 분석 내용을 확인 가능하다. ↩︎

이 글은 저작권자의 CC BY 4.0 라이센스를 따릅니다.