매뉴얼

설치

설치

v1.0.0+

GeckoFlag는 사용자의 서버에 직접 설치하는 자체 호스팅 소프트웨어이며, 전용 설치 프로그램이 과정을 안내하므로 누구나 쉽게 설정할 수 있습니다.

시작하기 전에

  • 서버가 시스템 요구 사항을 충족하는지 확인하십시오. Composer는 필요하지 않습니다. 배포 패키지에 종속성(vendor 폴더)이 이미 포함되어 있으므로 Composer를 실행할 수 없는 환경에서도 작동합니다.
  • 데이터베이스 접속 정보를 준비하십시오. 새 데이터베이스 또는 비어 있는 기존 데이터베이스가 필요합니다. 다른 애플리케이션과 데이터베이스를 공유하는 것은 권장하지 않습니다.
  • HTTPS는 반드시 필요한 것은 아니지만, GeckoFlag는 로그인 자격 증명과 개인정보를 다루므로 HTTPS로 운영하실 것을 강력히 권장합니다.
  • 파일을 업로드한 후에는 즉시 설치를 완료하십시오. 설치가 끝나기 전까지는 URL을 아는 사람이라면 누구나 설치 프로그램을 열 수 있습니다.
  • Nginx를 사용하는 경우 아래 「Nginx를 사용하는 경우」의 설정을 미리 완료하십시오.

설치 단계

  1. 1FTP/SFTP 또는 호스팅 제어판을 통해 GeckoFlag 파일을 서버에 업로드하고 압축을 해제합니다.서버에 압축 해제된 GeckoFlag 파일과 폴더를 보여주는 파일 관리자
  2. 2브라우저에서 설치 프로그램을 엽니다. 서버 환경(PHP 버전, 필수 확장 모듈, 폴더 권한)을 점검하여 체크리스트로 표시합니다.GeckoFlag Setup, 1단계: Environment Check, PHP 버전, 필수 확장 기능, 폴더 권한이 모두 녹색으로 표시됨
  3. 3데이터베이스 접속 정보(호스트, 포트, 데이터베이스 이름, 사용자 이름, 비밀번호)를 입력하고 계속 진행합니다.GeckoFlag Setup, 2단계: Database Connection, 데이터베이스의 호스트, 포트, 이름, 사용자, 비밀번호 필드
  4. 4실행을 클릭하여 데이터베이스를 초기화합니다. GeckoFlag에 필요한 테이블이 생성됩니다.GeckoFlag Setup, 3단계: Initialize the Database, Run 버튼
  5. 5이름, 이메일, 비밀번호로 관리자 계정을 생성합니다.GeckoFlag Setup, 4단계: Create Administrator Account, 이름, 이메일, 비밀번호 필드
  6. 6라이선스 키를 입력하여 인증합니다.GeckoFlag Setup, 5단계: License Verification, 라이선스 키 입력 필드
  7. 7라이선스 인증이 완료되면 모든 준비가 끝난 것입니다. 새 관리자 계정으로 로그인하여 프로젝트 설정을 시작하십시오.GeckoFlag Setup, 5단계: License Verification, 라이선스 키가 정상적으로 확인되었음을 보여주는 화면

호스팅 관련 참고 사항

GeckoFlag는 여러 일반적인 공유 호스팅 제공업체에서 작동하는 것이 확인되었습니다. upload_max_filesize 등 PHP 설정에 따라 일부 제공업체에서는 파일 업로드 기능이 제한될 수 있습니다.

Nginx를 사용하는 경우

Apache에서는 GeckoFlag에 포함된 .htaccess에 의해 설정 파일과 로그 등에 대한 직접 접근이 자동으로 거부됩니다. Nginx에서는 .htaccess가 사용되지 않으므로 서버 설정에 다음 내용을 추가하십시오. 추가하지 않으면 설정 파일이나 업로드한 파일이 외부에서 보일 수 있습니다.

Nginx와 Apache를 함께 사용하는 공유 호스팅(Nginx가 받은 요청을 Apache가 처리하는 구성)에서는 .htaccess가 유효하므로 이 설정이 필요하지 않습니다. .htaccess를 사용할 수 있는지는 이용 중인 호스팅 업체의 매뉴얼에서 확인하십시오.

  • 공개 폴더(문서 루트)는 GeckoFlag 폴더가 아니라 그 안의 webroot 폴더로 지정하십시오.
  • server_name(도메인), root(GeckoFlag를 설치한 위치), fastcgi_pass(PHP-FPM 연결 대상)는 사용 중인 환경에 맞게 수정하십시오.
  • HTTPS 설정(listen 443 ssl 및 인증서 지정)은 사용 중인 환경의 설정 방법에 따라 추가하십시오.
server {
    listen 80;
    server_name pm.example.com;

    # 공개 폴더(문서 루트)는 GeckoFlag의 webroot 폴더
    root /var/www/geckoflag/webroot;
    index index.php;

    # 폴더 내용 목록을 표시하지 않음
    autoindex off;

    # 업데이트 및 백업 ZIP 파일을 업로드할 수 있도록 설정
    # (Nginx의 기본값은 1MB). PHP의 upload_max_filesize와
    # post_max_size도 이 값 이상으로 설정하십시오
    client_max_body_size 100m;

    # 숨김 파일(.htaccess, .git 등)은 제공하지 않음
    location ~ /\.(?!well-known/) {
        deny all;
    }

    # 업로드된 이미지 폴더에서는 이미지만 제공
    location ~ ^/img/(avatars|project_thumbnails|branding)/ {
        location ~* \.(jpe?g|jfif|png|gif|webp|ico)$ {
            add_header X-Content-Type-Options "nosniff" always;
            try_files $uri =404;
        }
        # SVG 이미지는 표시 전용(스크립트는 실행하지 않음)
        location ~* \.svg$ {
            add_header X-Content-Type-Options "nosniff" always;
            add_header Content-Security-Policy "default-src 'none'; img-src data:; style-src 'unsafe-inline'; sandbox" always;
            try_files $uri =404;
        }
        return 403;
    }

    # files 폴더는 직접 제공하지 않음
    location ^~ /files/ {
        return 404;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP로 실행하는 파일은 index.php만
    location = /index.php {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }
    location ~ \.php$ {
        return 404;
    }
}

설정을 변경한 후에는 nginx -t로 구문을 확인하고 Nginx를 다시 로드하십시오.

CDN·리버스 프록시(Cloudflare 등)를 거치는 경우

GeckoFlag는 서버가 받은 접속 IP 주소를 사용하여 로그인 실패 횟수 제한과 접근 제한(IP 주소)을 수행합니다. CDN이나 리버스 프록시를 거치면 모든 사용자의 접속이 프록시의 IP 주소에서 온 것처럼 보이므로 다음과 같은 문제가 발생합니다.

  • 누군가 로그인에 여러 번 실패하면 다른 사용자도 한동안 로그인하지 못할 수 있습니다.
  • 접근 제한(IP 주소)이 올바르게 작동하지 않습니다.

이러한 구성에서는 웹 서버 측에서 실제 접속 IP 주소를 받도록 설정하십시오(Apache의 mod_remoteip, Nginx의 real_ip 모듈, Cloudflare의 경우 Cloudflare가 공개하는 IP 주소 목록 등록 등). 설정 방법은 이용 중인 호스팅 업체·CDN의 매뉴얼을 확인하십시오.