본문 바로가기

개발

내 컴퓨터를 서버로 사용해보자

여는 글

 

개발자는 컴퓨터가 필요하다.

 

프로그램을 구동할 컴퓨터.

 

사실 대중적인 클라우드 서비스를 사용하는 것이 가장 합리적이지만

 

직접 환경을 구축해 보는 것도 좋은 경험이 될 것 같아서 시작하게 되었다.

 


계획

목표

집에 있는 PC를 서버로 전환하여 원격 접속, 웹 서비스 배포, 데이터베이스 운영, 모니터링·백업 기능을 직접 구성
• 이점
• 클라우드 요금 절감 (장기 운영 시 유리)
• 서버 구성·운영 전반을 직접 경험하며 실무 감각 습득
• 네트워크, 보안, 자동화 등 다양한 분야 스킬 강화



2. 준비 단계

2.1 하드웨어 스펙
• CPU: Intel Core i5 이상 (6코어·12스레드 권장)
• RAM: 최소 16GB DDR4
• 스토리지: 500GB NVMe SSD (OS 및 서비스 컨테이너용)
• 네트워크: 유선 기가비트 이더넷
• 전원: 24시간 가동 고려한 안정형 PSU

2.2 운영체제 설치
• Ubuntu Server 22.04 LTS
• LTS 안정성
• 풍부한 커뮤니티·공식 문서
• Docker, cloud-init, Snap 등 지원

1. ISO 이미지를 USB에 굽고, 부팅 후 디스크 전체 사용으로 설치
2. 네트워크 설정: DHCP 또는 고정 IP 지정
3. 최소 설치 옵션 선택(SSH 서버만 포함)



3. 네트워크 및 보안 설정

3.1 고정 IP 또는 DDNS
고정 IP: ISP에서 제공 시
DDNS: No-IP, DuckDNS 등 무료 서비스 활용
도메인 발급
cron으로 주기 갱신 스크립트 등록

3.2 라우터 포트 포워딩
• SSH(22), HTTP(80), HTTPS(443) 포트만 열기
• 내부 IP(예: 192.168.0.10)로 포워딩

3.3 방화벽(ufw) 설정

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable




4. 서버 환경 구성

4.1 SSH 접속 강화
• 비밀번호 로그인 비활성화 (/etc/ssh/sshd_config 수정)
• 공개키 인증 설정
• 기본 포트(22) 변경 및 Fail2Ban 설치·설정

4.2 Docker & Docker Compose
1. Docker 설치

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER


2. Docker Compose 설치

sudo apt install -y docker-compose


3. 간단한 웹 서비스 예시

version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro

• html/index.html에 블로그나 To-Do 앱 정적 파일 배치

4.3 데이터베이스 설치
• MySQL 또는 PostgreSQL 컨테이너로 운영

services:
  db:
    image: postgres:14
    environment:
      POSTGRES_PASSWORD: yourpassword
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:


• 백업 스크립트 (cron)

pg_dumpall -U postgres | gzip > /backup/$(date +%F).sql.gz





5. 모니터링 및 백업

5.1 Prometheus + Grafana
• Prometheus Node Exporter 설치 (Docker)
• Grafana 대시보드 설정
• CPU, 메모리, 디스크, 네트워크 사용량 시각화

5.2 자동 백업
• rsync 이용한 외부 NAS 동기화
• cron 예시 (/etc/crontab)

0 2 * * * root rsync -avz /backup/ user@nas:/backups/

728x90
반응형