개발자 블로그를 위한 두걸음

개발자 블로그를 위한 두걸음

블로그 호스팅 방향이 정해졌으니 블로그를 위한 작업을 한 걸음 더 나아가 보겠습니다. 서버를 당장 구매하기 보다는 이미 사용했던 컴퓨터에 이용해 서버로 구축해 보려고 합니다. 실제 운영중인 이 블로그는 포스팅 내용에 구축하는 서버에서 동작하고, 포스팅은 이전에 남겨두었던 기록과 스크린샷을 기반으로 작성됩니다.

개발자 블로그를 위한 첫걸음
처음 “hello world”를 찍었을 때부터 언젠가는 기술 블로그를 작성해야지 하면서 ‘어떤 주제를 해야하지?’ 혹은 ‘여기 블로그는 확장이 안되’ 등으로 시작을 하지 못하고 있었지만 이제 시작했습니다. 시작이 반이다. 일은 처음에 시작하기가 어렵지, 일단 시작하면 끝마치는 것은 그리 어렵지 않다는 말. 블로그 호스팅 고민하기 요즘 블로그 호스팅을 서비스해주는 기업부터 온프레미스

서버 구하기

예전에 메인 컴퓨터가 고장나면서 임시로 사용하려고 당근마켓에서 15만원에 가져온 서버로 지금도 비슷한 스펙의 컴퓨터가 13만원에 판매되고 있습니다. 관심 있는 분들은 남는 컴퓨터로 진행하시면 됩니다.

중고 플랫폼에서 찾아볼 수 있는 가격대와 컴퓨터 스펙

적절한 CPU 코어수와 내장그래픽 그리고 메인 컴퓨터에서 업그레이드하면서 남아있던 메모리와 케이스 등으로 재조립하고 서버로 사용합니다.
정확한 스펙은 다음과 같습니다.

블로그용 서버 사양

  • 운영체제(OS): Ubuntu 24.04 LTS
  • 프로세서(CPU): AMD ryzen 3400G (4Core 8Thread)
  • 메모리(RAM): Samsung 16GB DDR4 2개 (32GB)
  • 저장장치(Storage): Tammuz GK300 256GB NVMe SSD
  • 메인보드(Motherboard): Colorful A320M-K PRO
  • 파워서플라이(PSU): Micronics Classic II 500W 80PLUS 230V EU
  • 케이스(Case): Cox cl400

이미 다른 많은 분들이 OS 설치를 다루고 있기 때문에 자세한 내용은 나중에 다루겠습니다. 다만 Ubuntu 24.04 LTS 를 설치하고 느낀 점과 최소한의 보안 조치를 취한 방법에 대해서 설명드립니다.

ssh-key 알고리즘의 변화

이전 22.04 LTS버전 까지는 따로 설정을 하지 않는다면 RSA 2048bit 키로 ssh-key가 생성되었지만, Ubuntu 24.04 LTS에 포함된 openssh의 업데이트로 인해 RSA알고리즘이 비활성화 되었고, ed25519알고리즘으로 키가 생성되어 ssh-key가 다른 이름으로 생성된것을 확인 할 수 있었습니다.

ed25519 key와 rsa key

해당 내용들은 아래의 공식 사이트 릴리즈노트에서 확인이 가능합니다.

Noble (24.04) : openssh package : Ubuntu

https://www.openssh.com/txt/release-8.8

MacOS 유저의 경우 Catalina (2019년 10월 출시) 버전부터 생성된 ssh-key는 ed25519 알고리즘이 적용되있습니다. 오히려 RSA2048 키가 생소할 수 있습니다.


홈 네트워크를 사용하기 때문에 꼭 보안설정을 진행하시길 바랍니다!!!

보안 및 네트워크 설정

  1. 서버에서 ssh-key를 생성하면서 Password Authentication 비활성화와 authorized_key 를 등록하고 내부망에서만 접근할 수 있도록 제한을 두었습니다.
  2. 집에서 사용하는 공유기로부터 랜선을 연결하고 공유기 설정페이지에서 VPN 설정과 ssh 포트의 포트포워딩을 진행합니다.

이렇게 설정할 경우 '내부에서 접근' 또는 '외부에서는 VPN을 통해 내부망에 접근 후 접속'만 가능해지고, 접근하더라도 ssh-key가 등록되지 않았다면 접속 할 수 없게 됩니다.

내부망에서 ssh로 접근이 가능한 서버

추가로 내부망의 고정 아이피를 사용하기 위해 공유기(iptime) 설정페이지에서 DHCP Server Setup 설정을 변경해줍니다.

서버 내에서도 직접 ip를 변경할 수 있지만 서버가 종료되거나 공유기가 재부팅되면서 새로운 기기에게 동일한 ip를 부여할 수 있기 고정적 (static)으로 해당 서버의 mac주소와 부여할 ip를 입력합니다. 이러한 static 기능은 공유기가 iptime이 아니더라도 대부분의 공유기에 존재합니다.

Read more

비동기 프로그래밍 : golang

비동기 프로그래밍 : golang

비동기 프로그래밍의 필요성과 Go 언어의 등장 * 최신 애플리케이션은 높은 처리량과 낮은 지연 시간을 요구하며, 이는 단일 스레드 방식으로는 달성하기 어렵습니다. * 비동기/동시성 프로그래밍이 필수적이 되었지만, 기존 언어에서는 복잡한 스레드 관리, 락(Lock) 메커니즘 등으로 인해 개발 난이도가 높았습니다. * Go 언어는 이러한 문제를 해결하기 위해 Goroutine과 Channel이라는 독창적이고 강력한 동시성 프리미티브를