42Seoul/Inception

Inception 기초 설정

하고싶은건많은놈 2023. 3. 3. 18:37

Inception 과제에 필요한 가상환경으로 Debian Buster를 사용 (penultimate stable version)

born2beroot와 다르게 그래픽 환경을 사용하지 말라는 말이 없었고, 가상환경 자체에 대한 설정 지시가 없기에 편하게 설치

 

필요한 패키지들 설치

  • apt update
  • apt install sudo (설치되어있었던것같기도)
  • apt install ca-certificates
    SSL 통신이 가능하도록 CA 인증서를 획득
  • apt install curl
    curl(client for urls) : 다양한 통신 프로토콜을 이용하여 데이터를 전송하기 위한 라이브러리 및 커맨드라인 도구를 제공하는 오픈소스 프로젝트
  • apt install software-properties-common
    PPA(Personal Package Archive, 개인 패키지 저장소)를 추가 또는 제거하는데 사용
  • apt install make
  • apt install vim
  • apt install git
  • apt install systemd
    시스템 부팅 후 가장 먼저 생성된 후 다른 프로세스를 실행하는 init 역할을 대체하는 데몬, 1번 프로세스 차지
    systemd를 관리하기 위한 도구인 systemctl 사용 가능

Copy & Paste 문제 해결

두가지 해결방법이 존재

  • VirtualBox 자체에서 해결
    1. VM 실행후 devices -> Insert Guest Additions CD Image
    2. shared Clipboard와 Drag and Drop을 Bidirectional으로 설정
    3. apt install -y build-essential dkms linux-headers-$(uname -r)
      커널 모듈을 빌드하기 위한 패키지 설치 
    4. mkdir -p /mnt/cdrom
      마운트용 디렉토리 생성
    5. mount /dev/cdrom /mnt/cdrom
      Guest Image 마운트
    6. 마운트된 디렉토리로 이동하여 sh ./VBoxLinuxAdditions.run으로 Guest Image의 실행파일 실행
    7. shutdown -r now로 재실행
    8. 놀랍게도 드래그시 복사, 휠버튼 클릭시 붙여넣기가 됨
  • ssh를 통한 우회 접속으로 해결
    1. /etc/ssh/sshd_config 파일 오픈
      파일이 존재하지 않을시 apt-get install openssh-client oepnssh-server
    2. sshd_config 파일 내에 Port 42 지정, PermitRootLogin yes로 변경
    3. service ssh restart / service sshd restart
    4. apt install ufw 이후 ufw allow 42
      추후에 쓰게될 80번(http) 포트와 443번(https) 포트도 열어두면 좋음
    5. vm 종료 후 VirtualBox 설정->네트워크->고급->포트포워딩에서 각 포트 연결
    6. ~/.ssh/known_hosts 파일 내에 [localhost]로 시작하는 항목이 이미 존재한다면 삭제
    7. 이제 호스트 os에서 ssh <계정(root 등)>@localhost -p 42로 접속 가능
    8. 편하게 iterm 등에서 마음껏 복붙

Docker 및 Docker-compose 설치

debian에서의 Docker 설치 참고링크

https://www.hostwinds.kr/tutorials/install-docker-debian-based-operating-system

 

Docker 설치 (Debian 기반 운영 체제) | Hostwinds

Docker는 클라우드 컴퓨팅 요구를위한 매우 인기있는 오픈 소스 컨테이너 관리 시스템입니다.Docker Containers에는 몇 가지 유사점과 차이점이 있습니다. 우리가 제공하는 가상 머신 ...에핵심 차이점

www.hostwinds.kr

  1. curl -4fsSL https://download.docker.com/linux/debian/gpg | apt-key add-
    • -f : HTTP 오류시 출력 없이 자동으로 실패
    • -s : 메시지를 출력하지 않음
    • -S : -s와 함께 사용시 에러 메시지를 출력
    • -L : 서버 링크가 다른 url로 리다이렉트 되어있는 경우 해당 url로 접속
    • -4 : fsSL만으로 오류가 뜰 경우, 해당 옵션으로 IPv4로 한정시켜 오류 해결
    • apt-key : apt가 패키지를 인증하는데 사용하는 키 목록을 관리하는 패키지, add 옵션으로 신뢰할 수 있는 키 목록에 key 등록
  2.  add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
    도커를 설치할 수 있도록 패키지를 저장소(Repository)에 추가
  3. apt update
    apt 패키지 색인이 최신 상태인지 확인
  4. apt install docker.io
    도커 설치
  5. chmod 666 /var/run/docker.sock
    도커 소켓의 권한을 설정하여 다른 사용자의 접근을 허용
  6. curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    도커 컴포즈 설치
  7. chmod +x /user/local/bin/docker-compose
    도커 컴포즈 실행 권한 부여
  8. su -c 'printf "{\n\t\"live-restore\": true\n}" > /etc/docker/docker.json’
    도커 서비스 재시작시 컨테이너를 종료하지 않도록 설정
  9. systemctl restart docekr
    도커 서비스 재시작

Docker 권한설정

docker 및 docker-compose를 문제없이 사용하기 위해서는 사용자에게 권한이 필요

  • su -
    root로 사용자 전환
  • sudo usermod -a -G sudo <username>
    사용자를 sudo 그룹에 추가
  • sudo usermod -a -G root <username>
    사용자를 root 그룹에 추가
  • sudo visudo로 /etc/sudoer 수정
    양식에 맞춰서 원하는 user에게 ALL=(ALL:ALL) ALL로 권한 부여

Localhost 설정

로컬 환경에서 https를 사용해 엑세스하기 위해서는 TLS 인증서가 필요

따라서 mkcert를 사용하여 로컬 환경에서 신뢰할 수 있는 인증서를 생성, http로 동작하는 localhost를 https로 동작하도록 변경

운영체제별 mkcert 설치는 공식 gitgub 페이지 참조

https://github.com/FiloSottile/mkcert#installation

 

GitHub - FiloSottile/mkcert: A simple zero-config tool to make locally trusted development certificates with any names you'd lik

A simple zero-config tool to make locally trusted development certificates with any names you'd like. - GitHub - FiloSottile/mkcert: A simple zero-config tool to make locally trusted developmen...

github.com

  1. apt install libnss3-tools
  2. curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64" chmod +x mkcert-v*-linux-amd64 sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert
  3. mkcert --version으로 설치 확인
  4. vim /etc/hosts에서 127.0.0.1에 name.42.fr 추가
    서브젝트의 요구에 따라 로컬 도메인의 별칭인 127.0.0.1을 name.42.fr로 변경
  5. mkcert name.42.fr로 변경한 도메인에 대한 인증서 생성
  6. 생성된 인증서와 키를 nginx 서버가 읽을 수 있도록 확장자 변경
    mv name.42.fr-key.pem name.42.fr.key
    mv name.42.fr.pem name.42.fr.crt