Log Stash

as an Industrial Personnel

잡글

베어본 컴퓨터로 홈 서버를 바꿨다

SavvyTuna 2017. 5. 15. 00:06


원래 있던 라즈베리파이 서버

작년 7월 말쯤에 아이패드를 사면서 그 동안 집에서 놀고 있던 라즈베리파이를 깨워서 홈 서버로 쓰고 있었다. 홈 서버라고 해서 크게 구성해 놓은건 아니었고 그냥 라즈비안 깔아서 남는 휴대폰 충전기에 라즈베리 물려놓고 공유기 DDNS, 포트포워딩 설정해두고 ssh 열어놔서 sftp 서버로, 마치 그냥 거의 NAS 처럼 쓰다가 SD카드 용량이 부족해서 1TB짜리 2.5인치 하드 + 외장하드 케이스를 사놓고 적당한 폴더 아래에 마운트 되도록 fstab을 설정해놓은 정도였다.

먼지 쌓인 라즈베리(ver. 2)와 외장하드

겉 보기엔 별거 없어 보이고, 실제로도 그렇지만 그래도 꽤나 유용하다. 내가 듣는 노래의 반쯤은 스트리밍 서비스에 없는 곡이라 mp3로 소장하고 있는데, 이걸 휴대폰이나 컴퓨터, 노트북에 옮기고, 지우고 하는게 매우 귀찮았다. 이런 음원 파일들을 라즈베리 한 곳에 몰아놓고 필요할때마다 스트리밍으로 듣는 방식으로 바꾸니 꽤나 편하다. (ios sftp 스트리밍 앱으로는 NPlayer가 좋음)

그리고 저번 포스팅에서도 말했듯 깃헙에 올리기엔 너무 하찮지만 버전 관리는 필요한 그런 사소한 개인 프로젝트 호스팅 용도로 gogs를 깔아서 쓰고도 있었고, 필요한 pdf 문서나 제출해야 할 서류들 이것 저것들 저장해 놓고 있었고. 그냥 개인 거의 클라우드 서비스 처럼 쓰고 있었다.

그러다 갑자기 그냥 최근에 홈 서버 스케일을 조금만 더 키우고 싶어졌다. 사실 라즈베리를 쓰다보면 종종 성능의 한계를 느끼는 순간이 있었다. gitlab을 설치하고 싶은데 안될 때나, 크롤러를 cron에 맞춰서 돌리고 있는데 그 때마다 버벅인다던가, 간단한 node.js 인스턴스 띄우는데 힘겨워 한다던가. 

최근까진 저런 일들을 AWS 프리티어 인스턴스 위에서 돌렸었는데 그게 며칠전에 1년 기한이 끝나고야 말았다. 그래서 바꾸기로 했다.

베어본(barebone) 컴퓨터

처음에 한 5분정도 맥미니를 중고로 구매하는것을 생각해보다가 가격을 보고 접었다. 그 다음에 적당히 낮은 성능의 베어본 컴퓨터를 서버로 쓰기에 적당할것 같다고 생각했다. 왜냐면

  1. 아무리 낮은 성능이라도 3만원짜리 라즈베리보단 한참 좋을것이고, 내가 하는 작업을 무리없이 할 수 있음. 그리고 딱히 엄청난 고성능도 필요 없음.
  2. 전기를 적게 먹는다. (아닌것도 있음) 자취방에 사는게 아니라 집에서 가족들과 같이 살기 때문에 누진세 폭탄 맞지 않으려면 최대한 전력 사용량을 줄여야 한다. (그런 점에서 라즈베리가 좋긴 했다)
  3. 요즘 베어본 컴퓨터 규격에서는 CPU가 보드에 납땜되어서 나오기 때문에 보통 2.5인치 하드와 노트북용 메모리만 따로 구매, 조립해서 사용하는데, 나는 둘 다 남는 부품을 가지고 있다.

이런 이유로 적당한 가격대의 베어본 컴퓨터를 하나 찾다보니 MSI Cubi N 3160모델이 그럭저럭 괜찮은것 같아서 구입했다.

다만 위의 이유중에 알고보니 아니었던것이 하나 있었다. 내가 가지고 있던 메모리는 'DDR3'이었는데, 저 모델(또는 동급의 비슷한 모델들)이 요구하는 메모리 타입은 'DDR3L'로 다르다. 결국 6만원 정도의 추가 지출이 생기긴 했지만, 어차피 사고 싶어서 지르는것이기도 하고 지난달 지출이 적은편이라 괜찮았다.

(DDR3은 1.5v, DDR3L은 1.35v로 동작한다고 한다. 호환은 안된다고 한다. 참고로 DDR4는 1.2v로 동작해서 L버전이 따로 없다고 알고 있음)

조립

일하는 도중에 택배가 도착했다

집으로 가져와서 꺼내봄

뒷면은 이렇게 생겼다

중요한 출력스펙 (19V, 2.1A)

바닥면을 열면 이렇게 메모리, mSata 슬롯과 무선랜 카드가 보인다

뱅크에 램을 장착한다

집에 남아돌던 SSD를 사용한다

여기에 운영체제를 설치하고 데이터는 쓰던 외장하드 그대로 가져다 사용한다

SSD와 연결된 SATA케이블을 메인보드 인터페이스와 연결한다

(양쪽에서 딸깍 소리가 날 때까지 눌러야 한다)

라즈베리와 비교샷

크기는 작은게 나름 컴퓨터라고 바이오스까지 다 있다

우분투 설치. 인터넷 연결 안 하고 설치하면 실패하는 괴상한 버그가 있었다


우분투를 설치하자마자 바로 다음과 같은 설정을 진행한다.

  1. sudo apt-get install openssh-server로 ssh를 열어준다.

  2. 전원관리 설정에서 절전모드로 들어가지 않게 되어있음을 확인한다.
  3. 라즈베리에서 쓰던 외장하드를 연결하고, 항상 마운트되어 있게 fstab 설정을 하는데, 우분투는 'Disks'라는 프로그램에서 이걸 쉽게 할 수 있다. 복잡하게 옵션 검색해 볼 필요없이 마우스 클릭으로 가능하니 최대한 애용하자.
  4. x-server를 사용하지 않을것이니 꺼준다. (링크 참조) 혹시나 나중에 필요하면

    sudo /etc/init.d/lightdm start로 켜준다

여기까지 세팅하면 모니터가 필요없으니 서버를 적절한 구석에 위치 시킨다.

원래는 컴퓨터방이었던 창고방에 전원과 랜선만 달아서 내버려둔다

공유기의 DDNS설정은 해놨으니, 이 서버 기기의 로컬 IP를 고정 시켜주는 수동 IP설정(iptime에서는 이렇게 부르고 있다)과 외부접속을 위한 포트포워드 설정을 해준다.

외부에서 접속할 수 있는 최소한의 세팅은 해놨으니 이제 원격접속으로 맘대로 가지고 놀면 된다. 끝.

htop 화면이다. 코어가 4개나 있다니 다운로드 작업 시킬 때 좋을 듯

감상(?)

중학교때, 돈 없는 컴덕 시절에 파코즈만 하루종일 쳐다보면서 가졌던 로망이 몇 개 있는데, 그 중 하나가 '베어본 PC를 사용해 보는것'이랑 '집에 서버를 두고 뭔가 해보는 것' (무엇을 하는지는 중요하지 않았다 그냥 서버가 집에 있는게 중요함) 이다. 두 업적을 한꺼번에 달성하게 되었다.

또, 집에 '남는' 부품을 꺼내서 사용한다는 것도 로망중에 하나였는데 이번에 SSD를 남는 것을 쓸 수 있게 되어서 좋았다. 메모리는 다시 사야 했지만.

동아리 슬랙 덴마 채널에 덴마가 올라왔는지 여부를 알려주던 봇이 죽어있었는데, 내 서버 위에서 다시 활성화 시킬 수 있게 되었다. (봇 자체는 내가 작성한게 아니지만)

덴마가 올라왔다

이제 미뤄왔던 웹이나 서버 개발을 조금씩 해볼까 한다. 아닐수도 있고.

Trouble Shooting

서버를 세팅하고 원격에서 ssh 접속을 시도하면 다음과 같은 오류 메세지와 함께 접속이 안될 수도 있다.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
5c:9b:16:56:a6:cd:11:10:3a:cd:1b:a2:91:cd:e5:1c.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA host key for ras.mydomain.com has changed and you have requested strict checking.
Host key verification failed.

서버 도메인(또는 IP)은 똑같은데 fingerprint값이 달라져서 나오는 경고문인데, 내가 전에 라즈베리 서버를 먼저 굴리고 있었기 때문에 발생하는 문제다. 도메인을 바꾸거나 했으면 문제 없었을듯.

이 때는 아래의 명령으로 클라이언트 쪽 known host키를 지워주면 된다.

ssh-keygen -R [<domain name here>]:<port number here>