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

- 2เปิดตัวติดตั้งในเบราว์เซอร์ของท่าน ระบบจะตรวจสอบสภาพแวดล้อมของเซิร์ฟเวอร์ (เวอร์ชัน PHP ส่วนขยายที่จำเป็น และสิทธิ์ของโฟลเดอร์) และแสดงเป็นรายการตรวจสอบ

- 3กรอกข้อมูลการเชื่อมต่อฐานข้อมูลของท่าน (โฮสต์ พอร์ต ชื่อฐานข้อมูล ชื่อผู้ใช้ และรหัสผ่าน) แล้วดำเนินการต่อ

- 4คลิก เรียกใช้งาน เพื่อเริ่มต้นฐานข้อมูล ซึ่งจะสร้างตารางที่ GeckoFlag ต้องใช้

- 5สร้างบัญชีผู้ดูแลระบบของท่านด้วยชื่อ อีเมล และรหัสผ่าน

- 6กรอกรหัสใบอนุญาตของท่านเพื่อตรวจสอบ

- 7เมื่อตรวจสอบใบอนุญาตแล้ว ทุกอย่างก็พร้อม เข้าสู่ระบบด้วยบัญชีผู้ดูแลระบบใหม่ของท่านและเริ่มตั้งค่าโปรเจกต์

หมายเหตุเกี่ยวกับโฮสติ้ง
ได้รับการยืนยันแล้วว่า 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 ของท่าน