본문 바로가기

서버/일반

우분투에서 CTFd를 오류없이 설치하는 법

CTFd?


CTFd는 오픈소스 CTF 프레임워크입니다.
Github : https://github.com/CTFd/CTFd

 


첫번째 설치법


Docker container를 받아오기

설치법

1. 먼저, Docker를 설치해줍니다.

sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce

2. Docker가 설치가 완료되었다면 다음 명령어를 통해 최신 CTFd 이미지를 받아옵니다.

docker pull ctfd/ctfd

3. 다음 명령어를 통해 CTFd컨테이너를 생성합니다.

 - 여기서 -p 8000:80로 해주시면 http 포트인 80으로 동작하도록 처리할 수 있습니다.

docker run -p 8000:8000 -it ctfd/ctfd

4. 위 과정을 마친다면 docker가 (기본적으로 8000번 포트에서)동작하게 됩니다.


두번째 설치법


쉘 스크립트파일을 실행하기

설치법

  1. 아무것도 설치되지 않은 서버(Ubuntu 16.04 LTS 추천)를 준비합니다.
  2. 해당 서버에 하단의 CTFd_setup.sh 를 내려받습니다.
  3. chmod +x CTFd_setup.sh를 통해 권한을 부여합니다.
  4. ./CTFd_setup.sh를 통해 설치합니다.

변경점

  • CTFd 깃헙에 나와있는 설치가이드를 보고 따라하던 도중 docker-compose.yml 파일에서 문제가 발생하여 진행하지 못하고 있었습니다.
  • 이에 대해 구글링하던 도중 이 영상을 찾게 되었습니다.
  • 하지만 이 영상에 있는 코드도 문제가 있어 설치가 진행되지 않았습니다. 발생하는 문제를 해결해주기 위해 다음 코드를 추가하였습니다.
    • apt-get install python-pip
    • pip install setuptools
    • apt install libicu-dev
    • pip install wheel

CTFd_setup.sh
0.00MB

  • 박민규 2019.01.16 21:07

    좋은 자료 올려주셔서 감사합니다.
    현재 gcp에서 구동해 보았는데요.
    셋업툴을 실행하여 설치를 마치고 셋업페이지에서 기본설정을 완료하고 난뒤 로그인이나 챌린지같은 다른 페이지를 이동하는 과정들이 너무 오래걸리는데 저만 그런건가요??

  • meya 2019.12.26 02:14

    @정준영 우분투18.04에서 위 방법중 2번으로 했더니... 셋업후 꺼지고 리부팅 됬는데... 그리고 아무일도 안일어납니다.. 무슨 문제가 있는건가요??

  • meya 2019.12.28 14:13

    네.. 재부팅 이후에 혹시 부팅시간이 좀더 걸리나 싶어서

    10분정도 더 기다려 봤는데... 아무일도 일어나지 않았습니다..ㅠㅠ
    신기한건 setup파일 다시 실행 시켰을때는 이미 설치가 다 어느정도 된것은 맞은지 빠르게 처리되고 다시 위 같이 재부팅한후 아무일도 일어나지 않습니다 ㅠㅠ

    • meya 2019.12.30 16:27

      한가지 빼먹은게 있어서 이렇게 남깁니다..
      설치할때는 조금 자세히 지켜봤는데,
      마지막에 어느 한 경로를 못찾았다는 부분이 보였고, 재부팅후 반복적으로 "시스템오류"가 발견되었다고 합니다.

    • Favicon of https://tistory.jeongjy.kr // 정준영(Joon) 2020.01.03 22:24 신고

      혹시 어떤 오류 메시지가 발생했는지 알 수 있을까요?
      상세한 데이터 없이는 도움을 드리기에 한계가 있어서 ㅠㅠ

      + 이 글이 16.04를 베이스로 하고있어 패키지 의존성 문제가 있거나 상위버전용으로 만들어진 패키지가 없어 문제가 발생하는것일 가능성도 있습니다.

  • meya 2020.01.09 14:42

    좀 삽질 하다가 결국 docker로 해서 했습니다... 그런데 이것도 포트포워딩이 좀 문제가 되서.. 아예 플랫폼을 딴데로 사용중입니다..
    근데 이게 알려지지 않는 포트 사용하다 보니 dns정보 받는것은 쉽지 않네요.. 혹시 아시나요??

    • Favicon of https://tistory.jeongjy.kr // 정준영(Joon) 2020.01.11 22:14 신고

      저같은 경우에는 NGINX 리버스 프록시 써서 HTTPS 적용하는 방식을 사용했었는데 이렇게 하면 아무래도 비교적 수월하게 받아올 수 있더라구요.

      혹시 도움이 되실지 모르겠지만 이거 한번 참고해보심이 좋을 것 같습니다 :)
      https://cragy0516.github.io/Deploy-Nginx-And-CTFd-with-Docker/