티스토리 뷰

DevOps

ubuntu server 설정

kingsubin 2023. 4. 9. 10:07

간단한 웹 앱을 만들어 배포하고 싶었는데 GCP 에서 VM 을 생성해서 쓰려니 e2-medium 정도만 해도 월 30불이 넘어가서 너무 비싸게 느껴졌어요.
집에 게임하려고 사둔 데스크탑이 있는데 잘 안 써서 서버로 쓰려고 하는 과정을 중간에 삽질을 좀 했어서 메모해 둬요.
가끔 윈도우도 쓰고 싶을 테니 멀티부팅으로 설치했어요.

 

0. 초기 설정

타임존 설정

  • sudo timedatectl set-timezone Asia/Seoul
  • sudo systemctl reboot

 

패키지 업데이트

  • sudo apt update
  • sudo apt-get --purge --no-install-recommends dist-upgrade
  • sudo apt-get --purge --no-install-recommends autoremove

 

neovim 설치

  • sudo apt-get --purge --no-install-recommends install neovim
  • sudo update-alternatives --set vim /usr/bin/nvim

 

1. ssh 설정

맥에서 접근하기 편하게 설정해 줘요.

 

OpenSSH 설치

  • sudo apt-get update
  • sudo apt-get instlal openssh-server

 

포트 설정

  • /etc/ssh/sshd_config 에서 port 주석 해제 후 원하는 포트(2222)로 변경
  • sudo ufw allow 2222/tcp
  • systemctl status ssh

 

ssh key 생성
미리 생성하고 github 에 키를 등록해줘요.

  • ssh-keygen -t ed25519

 

desktop authorized_key 추가

  • 맥의 공개키 데스크탑의 ~/.ssh/authorized_key 에 추가

 

mac ssh config 설정

  • vim ~/.ssh/config
Host [host]
  HostName [hostname]
  Port 2222
  User [user]

 

2. DNS 설정

kingsubin.com 도메인을 쓰기 위해 DNS A 레코드를 추가해요.
멋진 이름이 생각이 안 나서 일단 api.kingsubin.com 으로 해요.

 

3. 공유기 포트포워딩

iptime 공유기를 쓰고 있어서 공유기 관리자 페이지(192.168.0.1 )에서 외부에서 접속할 수 있게 80, 443 포트를 desktop의 IP(내부 IP) 80, 443 포트로 연결해 줘요.

 

4. ssl 인증서 발급

https 로 접속하기 위해 ssl 인증서를 발급받아요.

 

인증서 발급받기

  • sudo apt-get update
  • sudo apt-get install --purge --no-install-recommends certbot python3-certbot-nginx
  • sudo certbot --nginx -d api.kingsubin.com

 

5. nginx 설정

nginx 에서 인증서 관련 설정을 해줘요.

  • sudo vim /etc/nginx/sites-available/default
    listen 443 ssl; 
    ssl_certificate /etc/letsencrypt/live/api.kingsubin.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.kingsubin.com/privkey.pem;
  • sudo systemctl restart nginx
  • sudo systemctl status nginx

 

정상 작동하는지 https://api.kignsubin.com 으로 들어가 보니 nginx 페이지가 잘 있어요.

 

5. docker 설치

나중에 여러 앱을 띄울 수도 있으니 docker 를 설치해서 사용해요.

 

나중에 쓸 것 같으니 네트워크도 따로 만들어줘요.

  • docker network create network-1

 

외부에서 잘 접속이 되는지 확인하기 위해 간단한 node app 을 도커 이미지로 만들어요.

 

포트를 열고 컨테이너를 띄워서 확인해 봐요.

  • docker run -p 3000:3000 --network=network-1 -d subin/node-web-app
  • curl -v http://api.kingsubin.com:3000

 

6. postgresql 설치

모두 docker container 로 띄울 것 같아서 데이터베이스도 도커로 설치해 봐요.

  • docker pull postgres:latest

 

postgres 를 위해 docker volume 을 생성해 줘요.

  • docker volume create postgres15-data

 

postgres 를 실행시켜 봐요.

docker run -p 5432:5432 --name postgres --network=network-1 -v postgres15-data:/var/lib/postgresql/data -e POSTGRES_PASSWORD=postgres -d postgres

 

로그에 UTC 가 찍히는데 KST 로 바꿔서 보기 편하게 해 줘요.

  • docker exec -it postgres bash
  • apt-get update
  • apt-get install vim
  • vim /var/lib/postgresql/data/postgresql.conf

 

맥에서 SQL 클라이언트로 접속하기 편하게 5432 포트도 열어줘요.

 


기본 설정은 끝났고 추가 페이지가 생기면 nginx 에서 proxy_pass 설정만 해주면 될 것 같아요.
아직 배포할 게 없어서 여기까지만 설정할게요.
다음에는 뭐든 배포해 볼게요. 빠잉

'DevOps' 카테고리의 다른 글

Github Actions self-hosted runners  (1) 2023.06.03
GCP Monitoring Mattermost Notification  (0) 2023.05.12
AWS GCP 도메인 이전  (0) 2023.01.04
Google Cloud Translation API detect confidence  (0) 2022.09.24
AWS 정적 웹 사이트 배포 과정  (1) 2022.01.11