1. 소개
저는 기본적인 전공 외에 웹과 서버에 대한 지식이 부족하지만, 정보를 수집하고 필요한 것들을 정리하면서 서버용 미니 PC를 받기 전까지 차근차근 구상을 해보려고 합니다.
2. AWS? 홈 서버?
제가 서버가 필요한 이유는 다음과 같습니다.
- 네이버, 티스토리가 아닌 워드프레스 블로그를 장기적으로 운영할 계획이 있다.
- 본업과 관계없이, 웹개발에 관심이 있다.
아마존 웹 서비스를 사용할 수도 있지만, 지인을 통해 요금 폭탄을 맞은 사례를 종종 들은 적이 있습니다. 오랫동안 AWS를 사용하면 지속적으로 요금을 지불해야 하고, 만약 요금 폭탄을 맞는다면 복잡한 소명 과정을 거쳐야 하기에 번거롭다고 생각했습니다.
3. 홈 서버의 장단점 및 특징
장점
- 비용 절감: 클라우드 서비스나 외부 호스팅 비용을 줄일 수 있으며, 초기 비용 지출 이후, 장기적으로 홈 서버가 더 경제적일 수 있습니다.
- 커스터마이징 가능: 서버를 완전히 자신의 요구에 맞게 커스터마이징할 수 있습니다. 필요에 따라 애플리케이션, 운영체제, 보안 설정 및 네트워크 설정 등을 조정할 수 있습니다.
- 하나의 PC로 여러 용도로 사용 가능: 홈 서버를 통해 파일 서버, 미디어 서버(NAS), 웹 서버, 게임 서버, 데이터베이스 서버 등을 운영할 수 있습니다. 하나의 서버로 동시에 다양한 서비스를 동시에 제공할 수 있어 다목적 활용이 가능합니다.
단점
- 초기 비용: 서버를 구축하기 위한 하드웨어 및 네트워크 장비에 초기 비용이 들 수 있습니다.
- 유지/보수: 직접 관리해야 하므로 서버 설정, 보안 업데이트, 하드웨어 문제 해결 등 유지보수에 시간이 소요됩니다.
- 보안 위험성: 서버가 인터넷에 연결되어 있으면 외부 공격에 취약할 수 있습니다.
특징
- 하드웨어 선택: 서버의 용도에 맞는 충분한 성능과 저장 공간을 가진 하드웨어를 선택해야 합니다. CPU, RAM, 저장 장치(SDD/HDD) 등을 고려해야 합니다.
- 보안
- 방화벽 설정: 반드시 방화벽을 설정해 불필요한 포트를 차단해야 합니다.
- SSH 설정 시 공개 키 인증
- 서버 OS 선택: 윈도우 11 혹은 우분투, CentOS와 같은 무료 리눅스 서버 중 선택 가능합니다. 저는 우분투를 사용할 계획입니다.
4. 내가 고른 서버용 미니 PC
학부 시절에 라즈베리파이 2를 갖고 놀았던 적이 있습니다. 그래서 사실 처음에는 최신 라즈베리파이 5를 사용해서 서버를 구축할 예정이었습니다만, 최신 라즈베리파이의 경우 이전에 비해 가격이 많이 올랐고, 발열 이슈가 있기 때문에 라즈베리파이를 알아보던 도중, 비슷한 가격에 성능이 훨씬 좋은 인텔 N100 프로세서를 탑재한 알리발 미니 PC(Firebat T8 프로 플러스)에 대해 알게 되었습니다. 인텔 N100 프로세서의 경우 6W TDP로, 매우 낮은 전력소비를 자랑합니다.
프로세서: 인텔® 알더 레이크 N100 (6M 캐시, 최대 3.40GHz)
GPU: 인텔® UHD 그래픽
RAM: LPDDR5 16G RAM 4800hz
저장장치: 512GB M.2 2242 SSD NGFF (슬롯은 NVME, 최대 2TB 까지 지원)
약 15만원 정도 하는 미니 PC를 쿠폰 적용해서 13만원에 구입해서 기다리고 있습니다.
이 컴퓨터가 도착하기 이전까진 학부 시절 가지고 놀던 라즈베리파이 2로 연습할 계획입니다.
5. 앞으로 설정해야 할 것 & 공부할 것
- SSH: 원격 접속을 위해 당연히 설치해야 할 부분입니다.
- VNC: 가끔 그래픽 View로 봐야할 경우가 생길 것 같음. 회사 가끔 vncviewer를 통해 원격 접속을 할 때가 있는데, 유용할 것으로 예상됩니다.
- 웹서버: NGINX, Apache 등 여러 가지 소프트웨어가 있지만 NGINX를 사용할 예정입니다.
- DBMS: MySQL, MariaDB, PostgreSQL 등의 선택지가 있지만, 아직 선택하지 못했습니다.
- 워드프레스 설치
- 플러그인 알아보기
- 워드프레스 SSL 인증서 적용
- 도메인
- 웹 공부
- 프론트엔드: React
- 백엔드: Django, Express.js - 원래 Django로 진행하려고 했으나, 지인의 추천으로 인해 초반에는 Express.js로 진행하고, 추후에 Django로 변경할 생각입니다.
위 항목들에 대해서 모두 기록으로 남기며 진행할 예정입니다.