คู่มือ

การติดตั้ง

การติดตั้ง

v1.0.0+

GeckoFlag เป็นซอฟต์แวร์แบบติดตั้งเองที่ท่านติดตั้งบนเซิร์ฟเวอร์ของท่านเอง โดยมีตัวติดตั้งเฉพาะนำทางท่านตลอดขั้นตอน เพื่อให้ทุกคนตั้งค่าได้อย่างง่ายดาย

ก่อนเริ่มต้น

  • ตรวจสอบว่าเซิร์ฟเวอร์ของท่านเป็นไปตาม ความต้องการของระบบ ไม่จำเป็นต้องใช้ Composer เพราะแพ็กเกจที่แจกจ่ายมีการรวม dependencies ไว้แล้ว (โฟลเดอร์ vendor) จึงใช้งานได้แม้ในสภาพแวดล้อมที่ไม่สามารถรัน Composer ได้
  • เตรียมข้อมูลการเชื่อมต่อฐานข้อมูลของท่านให้พร้อม: ฐานข้อมูลใหม่หรือฐานข้อมูลที่มีอยู่แล้วซึ่งว่างเปล่า เราไม่แนะนำให้ใช้ฐานข้อมูลร่วมกับแอปพลิเคชันอื่น
  • HTTPS ไม่ได้บังคับอย่างเคร่งครัด แต่เนื่องจาก GeckoFlag จัดการข้อมูลเข้าสู่ระบบและข้อมูลส่วนบุคคล เราจึงแนะนำอย่างยิ่งให้ใช้งานผ่าน HTTPS
  • หลังจากอัปโหลดไฟล์แล้ว โปรดทำการติดตั้งให้เสร็จสิ้นทันที จนกว่าการติดตั้งจะเสร็จสิ้น ผู้ใดก็ตามที่ทราบ URL จะสามารถเปิดตัวติดตั้งได้
  • หากท่านใช้ Nginx โปรดตั้งค่าตามหัวข้อ “หากท่านใช้ Nginx” ด้านล่างไว้ล่วงหน้า

ขั้นตอนการติดตั้ง

  1. 1อัปโหลดไฟล์ GeckoFlag ไปยังเซิร์ฟเวอร์ของท่านผ่าน FTP/SFTP หรือแผงควบคุมของโฮสติ้ง แล้วแตกไฟล์ตัวจัดการไฟล์ที่แสดงไฟล์และโฟลเดอร์ของ GeckoFlag ที่แตกไฟล์แล้วบนเซิร์ฟเวอร์
  2. 2เปิดตัวติดตั้งในเบราว์เซอร์ของท่าน ระบบจะตรวจสอบสภาพแวดล้อมของเซิร์ฟเวอร์ (เวอร์ชัน PHP ส่วนขยายที่จำเป็น และสิทธิ์ของโฟลเดอร์) และแสดงเป็นรายการตรวจสอบGeckoFlag Setup ขั้นตอนที่ 1: Environment Check แสดงเวอร์ชัน PHP ส่วนขยายที่จำเป็น และสิทธิ์โฟลเดอร์ ซึ่งทั้งหมดเป็นสีเขียว
  3. 3กรอกข้อมูลการเชื่อมต่อฐานข้อมูลของท่าน (โฮสต์ พอร์ต ชื่อฐานข้อมูล ชื่อผู้ใช้ และรหัสผ่าน) แล้วดำเนินการต่อGeckoFlag Setup ขั้นตอนที่ 2: Database Connection พร้อมช่องกรอก host, พอร์ต, ชื่อ, ผู้ใช้ และรหัสผ่านของฐานข้อมูล
  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 ทำงานได้บนผู้ให้บริการโฮสติ้งแบบแชร์ทั่วไปหลายราย ทั้งนี้ ขึ้นอยู่กับการตั้งค่า PHP เช่น upload_max_filesize ฟีเจอร์การอัปโหลดไฟล์อาจถูกจำกัดในผู้ให้บริการบางราย

หากท่านใช้ Nginx

ใน Apache ไฟล์ .htaccess ที่มาพร้อมกับ GeckoFlag จะปฏิเสธการเข้าถึงไฟล์การตั้งค่า ล็อก และไฟล์อื่นๆ โดยตรงโดยอัตโนมัติ แต่ Nginx ไม่ใช้ .htaccess ดังนั้นโปรดเพิ่มเนื้อหาต่อไปนี้ลงในการตั้งค่าเซิร์ฟเวอร์ หากไม่เพิ่ม ไฟล์การตั้งค่าและไฟล์ที่อัปโหลดอาจถูกมองเห็นได้จากภายนอก

สำหรับโฮสติ้งที่ใช้ Nginx ร่วมกับ Apache (โครงสร้างที่ Apache ประมวลผลคำขอที่ Nginx รับเข้ามา) ไม่จำเป็นต้องตั้งค่านี้ เนื่องจาก .htaccess ใช้งานได้ .htaccess ใช้ได้หรือไม่ โปรดตรวจสอบจากคู่มือของผู้ให้บริการเซิร์ฟเวอร์ของท่าน

  • โปรดตั้งโฟลเดอร์สาธารณะ (Document Root) เป็นโฟลเดอร์ webroot ที่อยู่ภายในโฟลเดอร์ GeckoFlag ไม่ใช่ตัวโฟลเดอร์ GeckoFlag เอง
  • server_name (โดเมน), root (ตำแหน่งที่วาง GeckoFlag) และ fastcgi_pass (ปลายทางการเชื่อมต่อ PHP-FPM) โปรดแก้ไขให้ตรงกับสภาพแวดล้อมของท่าน
  • โปรดเพิ่มการตั้งค่า HTTPS (listen 443 ssl และการระบุใบรับรอง) ตามวิธีการตั้งค่าของสภาพแวดล้อมของท่าน
server {
    listen 80;
    server_name pm.example.com;

    # โฟลเดอร์สาธารณะ (Document Root) คือโฟลเดอร์ webroot ของ GeckoFlag
    root /var/www/geckoflag/webroot;
    index index.php;

    # ไม่แสดงรายการไฟล์ในโฟลเดอร์
    autoindex off;

    # เพื่อให้อัปโหลดไฟล์ ZIP สำหรับการอัปเดตและการสำรองข้อมูลได้
    # (ค่าเริ่มต้นของ Nginx คือ 1MB) โปรดตั้งค่า upload_max_filesize และ
    # post_max_size ของ PHP ให้เท่ากันหรือมากกว่านี้ด้วย
    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 หรือ Reverse Proxy (เช่น Cloudflare)

GeckoFlag ใช้ที่อยู่ IP ต้นทางที่เซิร์ฟเวอร์ได้รับในการจำกัดจำนวนครั้งที่เข้าสู่ระบบไม่สำเร็จ และในการจำกัดการเข้าถึง (ที่อยู่ IP) เมื่อใช้งานผ่าน CDN หรือ Reverse Proxy ผู้ใช้ทุกคนจะดูเหมือนเข้าถึงจากที่อยู่ IP ของพร็อกซี จึงอาจเกิดสิ่งต่อไปนี้

  • หากมีผู้ใดเข้าสู่ระบบไม่สำเร็จหลายครั้ง ผู้ใช้คนอื่นอาจไม่สามารถเข้าสู่ระบบได้ชั่วระยะหนึ่ง
  • การจำกัดการเข้าถึง (ที่อยู่ IP) จะทำงานไม่ถูกต้อง

ในโครงสร้างเช่นนี้ โปรดตั้งค่าฝั่งเว็บเซิร์ฟเวอร์ให้รับที่อยู่ IP ต้นทางที่แท้จริง (เช่น mod_remoteip ของ Apache, โมดูล real_ip ของ Nginx หรือในกรณีของ Cloudflare ให้ลงทะเบียนรายการที่อยู่ IP ที่ Cloudflare เผยแพร่) โปรดตรวจสอบวิธีการตั้งค่าจากคู่มือของผู้ให้บริการเซิร์ฟเวอร์หรือ CDN ของท่าน