b__ono__ng

[서버] 놀고 있는 PC 개인 서버로 써먹기 본문

IT/Projects

[서버] 놀고 있는 PC 개인 서버로 써먹기

b__ono__ng 2023. 10. 22. 19:43

집에서 학습 돌려보려고 RTX 3070 PC를 샀는데 막상 집 보다는 카페에서 작업하게 되는 현실과

Mac-Windows는 원격으로 붙고 작업하면 뭔가 불편한 현실과

개인 서버가 있으면 잘 써먹고 재밌겠다 싶은 현실

에 의거해 PC를 개인 서버로 써먹기로 했다.

 

하고 싶은걸 한 마디로 하면 이렇다.

외부에서 내 PC에 접근해서 개발도 하면서 GPU도 써먹고 싶고, NAS 서버로도 써먹고 싶고, 내 포트폴리오도 되는 서버를 만들고싶다! 그리고 내 github이나 링크드인 같은 것도 쉽게 접근 되도록 하고 싶다!

나와 같은 생각을 하는 사람이면 나처럼 서버를 구성하면 좋을 것 같다. 여기서 한두 가지가 빠지거나 바뀌어도 상관없다.

 

만족해야 할 항목은 이렇게 정했다.

  1. 개인 웹 페이지로 활용 (포트폴리오의 느낌..)
  2. 개인 서버로 활용 (외부에서 내 PC로 AI 돌릴 수 있게..)
  3. NAS 서버로 활용
  4. 내 SNS나 블로그 등을 리다이렉트
    1. 블로그
    2. Github
    3. 링크드인
    4. 인스타그램

이렇게 구성하면 개인 서버로 할 수 있을만한 것들을 웬만큼 다 할 수 있을 것 같다.

 

위 항목들을 아래와 같이 구성했다.

 

1. 웹페이지 -> Nginx (WSL)

처음엔 Apache로 시작했는데, 구성하다보니 아무리 해봐도 nginx가 더 편하고 유망주인 것 같아서 nginx로 했다.

PC는 윈도우라서 WSL로 ubuntu 22.04 버전을 설치하고 여기서 돌렸다.

포트포워딩이나 https 리다이렉트, 신뢰할 수 있는 ssh/tls 공유키 발급 등의 과정이 생각보다 귀찮았다. 어렵진 않은데, 이런걸 직접 해본 적은 없어서 많이 테스트해보며 익혔다..

 

2. DNS -> 가비아

처음에는 돈 내고 결제하기가 귀찮아서 NoIP로 무료 DNS를 발급받아 DDNS로 사용하려고 했는데, 하다보니 설정이 복잡하기도 하고, 돌리기 위해 프로그램도 켜줘야하고, 공유기 ddns 설정도 하고,, 이런 과정이 너무 많아서 가비아를 통해 유료 dns를 구매했다.

가격은 도메인마다 다른데, 나는 일단 이벤트 상품으로 1년 500원? 결제했다. 도메인은 xxx.site

물론 가비아에서 구매해도 이런저런 설정할 것들이 있지만, 직관적으로 설명이 되어 있어서 빡세진 않다.

 

3. NAS 서버 -> owncloud

아쉽지만 이건 아직 완성 못 했다,,

GUI 기반의 NAS 서비스를 찾다가 owncloud라는 서비스를 쓸 수 있을 것 같아서 해보고 있는데, 아직 잘 되진 않는다.

이건 나중에 연결하고나서 추가하겠다,,

 

4. 내 PC환경에 접근해서 개발 -> 코드서버 (code-server)

code-server는 사내 세미나에서 한 분이 사용하시는걸 보고 알게된건데, 서버에서 vs code를 돌리는 웹 이라고 생각하면 될 것 같다.

code-server를 돌리는 서버에서 계정과 암호를 설정하면, 해당 계정에 따른 개발 환경에 접근할 수 있다.

anaconda도 활용해서 프로젝트별로 가상환경도 다르게 사용할 수 있다.

 

4. 웹 페이지 -> Webslide(Github)

웹 페이지는 Github에서 괜찮은걸 찾아서 갖다 썼다. 이름은 Webslide (https://github.com/webslides/WebSlides)

 

GitHub - webslides/WebSlides: Create HTML presentations in seconds —

Create HTML presentations in seconds —. Contribute to webslides/WebSlides development by creating an account on GitHub.

github.com

난 html이나 css, js같은걸 배우지도 않았고 딱히 써볼 일도 없었는데, 구성을 바꾸기 되게 쉽게 되어 있다.

html이 애초에 쉽긴 한데, 그냥.. 보고 바꾸면 된다. 딱히 설명이 필요하지 않을 정도라서 갖다 쓰기 좋은 프로젝트다. 이쁘기도 하고..

 

구성은 대충 이렇고, 세미 결과물은 아래와 같다.

 

웹 페이지 슬라이드 #1

일단 외부에서 사이트명으로 접근 가능하도록 연결해놓고, https 리다이렉트 설정도 해놨다.

신뢰할 수 없는 인증서라는 메시지도 안 뜬다. 이건 Let's Encrypt 모듈을 썼다. 다만 주기적으로 재등록이 필요해서 이건 매 주기마다 자동 등록하도록 crontab으로 돌려놨다.

 

웹 페이지 슬라이드 #2

화면은 슬라이딩 형식으로 내려간다. 이런걸 원했는데 webslide가 이런 구조로 되어 있어서 잘 쓴 것 같다.

화면은 위쪽에 마우스를 올리면 github 링크도 보이는데, 이런 식으로 인스타그램, 링크드인도 접근하도록 바꿀 예정이다.

여기서 리다이렉트 되는 곳은 인스타그램, 링크드인, NAS, Code-server, Github 총 5가지다. (NAS는 아직 완성을 못 했다.)

 

중요한건 웹이다 보니, NAS와 Code-server같이 내부 PC에 접근하는 서비스는 반드시 사용자 로그인이나 인증을 통해서 접근할 수 있어야 한다.

지금은 그런 보안 적용을 다 하지 않은 상태라서 홈페이지를 막아놨지만, 나중에 보안 적용이 다 되면 열어둘 생각이다. 안 그러면 공격이 너무 많이 들어온다고 한다,,

 

Code-server 접근 화면(1)

code-server 링크를 클릭하면 이런 화면이 나온다.

아직은 나 혼자 사용하기 때문에 내 사용자 계정과 암호를 등록해놓은대로 로그인해야한다.

 

Code-server 접근 화면(2)

로그인에 성공하면 이런 식으로 내 계정과 연동된 개발 환경의 코드에 접근할 수 있다.

일단은 test.py 파일만 올려놨다.

anaconda도 설치해서, conda 명령어로 프로젝트마다 pytorch 버전이나 cuda 버전도 다르게 설정할 수 있도록 해놨다.

 

남은 일은 NAS 연동, 보안 기법들 적용, 인스타그램/링크드인 아이콘을 통한 리다이렉트 등이다.

만약 더 추가하고 싶은 서비스가 있다면, 기존의 nginx나 code-server같은 서비스들을 docker로 올려버리고 각각 구동시킬 수 있다. 지금은 사용하는 서비스도 많지 않고 이걸 나 혼자만 쓰다 보니까 그렇게 안 했는데, docker도 써보고 싶은 사람들은 그렇게 하면 될 것 같다.

'IT > Projects' 카테고리의 다른 글

[서버] Luigi 설치/구동하기  (0) 2023.11.12