Panduan

Instalasi

Instalasi

v1.0.0+

GeckoFlag adalah software self-hosted yang Anda instal di server Anda sendiri — installer khusus memandu Anda sepanjang proses sehingga siapa pun dapat menyiapkannya dengan mudah.

Sebelum Anda Mulai

  • Pastikan server Anda memenuhi persyaratan sistem. Composer tidak diperlukan — paket yang didistribusikan sudah menyertakan dependensinya (folder vendor), sehingga juga berfungsi di lingkungan yang tidak dapat menjalankan Composer.
  • Siapkan detail koneksi database Anda: database baru, atau database kosong yang sudah ada. Kami tidak menyarankan berbagi database dengan aplikasi lain.
  • HTTPS tidak wajib, tetapi karena GeckoFlag menangani kredensial login dan data pribadi, kami sangat menyarankan untuk menjalankannya melalui HTTPS.
  • Selesaikan instalasi segera setelah Anda mengunggah file. Selama instalasi belum selesai, siapa pun yang mengetahui URL-nya dapat membuka installer.
  • Jika Anda menggunakan Nginx, lakukan terlebih dahulu pengaturan di bagian “Jika Anda Menggunakan Nginx” di bawah.

Langkah-langkah Instalasi

  1. 1Unggah file GeckoFlag ke server Anda melalui FTP/SFTP atau panel kontrol hosting Anda, lalu ekstrak.File manager yang menampilkan file dan folder GeckoFlag yang telah diekstrak di server
  2. 2Buka installer di browser Anda. Installer memeriksa lingkungan server Anda — versi PHP, ekstensi yang diperlukan, dan izin folder — dan menampilkan daftar periksa.GeckoFlag Setup Langkah 1: Environment Check, menampilkan versi PHP, ekstensi yang diperlukan, dan izin folder yang semuanya lulus
  3. 3Masukkan detail koneksi database Anda (host, port, nama database, username, dan kata sandi) lalu lanjutkan.GeckoFlag Setup Langkah 2: Database Connection, dengan kolom DB host, port, nama, username, dan kata sandi
  4. 4Klik Jalankan untuk menginisialisasi database — ini membuat tabel yang dibutuhkan GeckoFlag.GeckoFlag Setup Langkah 3: Initialize the Database, dengan tombol Run
  5. 5Buat akun administrator Anda dengan nama, email, dan kata sandi.GeckoFlag Setup Langkah 4: Create Administrator Account, dengan kolom nama, email, dan kata sandi
  6. 6Masukkan kunci lisensi Anda untuk memverifikasinya.GeckoFlag Setup Langkah 5: License Verification, dengan kolom kunci lisensi
  7. 7Setelah lisensi Anda terverifikasi, semuanya siap — login dengan akun administrator baru Anda dan mulai menyiapkan proyek Anda.GeckoFlag Setup Langkah 5: License Verification, yang mengonfirmasi kunci lisensi berhasil diverifikasi

Catatan Hosting

GeckoFlag telah dikonfirmasi berjalan di banyak penyedia shared hosting umum. Tergantung pada pengaturan PHP seperti upload_max_filesize, fitur unggah file mungkin terbatas di beberapa host.

Jika Anda Menggunakan Nginx

Di Apache, file .htaccess yang disertakan dalam GeckoFlag secara otomatis menolak akses langsung ke file konfigurasi, log, dan sejenisnya. Nginx tidak menggunakan .htaccess, jadi tambahkan konten berikut ke konfigurasi server Anda. Jika tidak ditambahkan, file konfigurasi dan file yang diunggah mungkin dapat dilihat dari luar.

Pada shared hosting yang menggabungkan Nginx dan Apache (konfigurasi di mana akses yang diterima Nginx diproses oleh Apache), .htaccess berfungsi, sehingga pengaturan ini tidak diperlukan. Untuk mengetahui apakah .htaccess dapat digunakan, periksa manual penyedia hosting Anda.

  • Atur folder publik (document root) ke folder webroot di dalam folder GeckoFlag, bukan ke folder GeckoFlag itu sendiri.
  • Sesuaikan server_name (domain), root (lokasi GeckoFlag), dan fastcgi_pass (tujuan koneksi PHP-FPM) dengan lingkungan Anda.
  • Tambahkan pengaturan HTTPS (listen 443 ssl dan penentuan sertifikat) sesuai dengan cara konfigurasi di lingkungan Anda.
server {
    listen 80;
    server_name pm.example.com;

    # Folder publik (document root) adalah folder webroot GeckoFlag
    root /var/www/geckoflag/webroot;
    index index.php;

    # Jangan tampilkan daftar isi folder
    autoindex off;

    # Agar ZIP pembaruan dan backup dapat diunggah
    # (nilai default Nginx adalah 1MB). Atur juga upload_max_filesize dan
    # post_max_size di PHP ke nilai yang sama atau lebih besar
    client_max_body_size 100m;

    # Jangan sajikan file tersembunyi (.htaccess, .git, dll.)
    location ~ /\.(?!well-known/) {
        deny all;
    }

    # Dari folder gambar yang diunggah, sajikan hanya file gambar
    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;
        }
        # Gambar SVG hanya untuk ditampilkan (skrip tidak dijalankan)
        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;
    }

    # Folder files tidak disajikan secara langsung
    location ^~ /files/ {
        return 404;
    }

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

    # Hanya index.php yang dijalankan sebagai 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;
    }
}

Setelah mengubah konfigurasi, periksa sintaksnya dengan nginx -t, lalu muat ulang Nginx.

Jika Menggunakan CDN atau Reverse Proxy (seperti Cloudflare)

GeckoFlag menggunakan alamat IP sumber koneksi yang diterima server untuk membatasi jumlah percobaan login yang gagal dan untuk Pembatasan Akses (Alamat IP). Jika melalui CDN atau reverse proxy, semua pengguna akan tampak mengakses dari alamat IP proxy, sehingga hal-hal berikut dapat terjadi.

  • Jika seseorang gagal login beberapa kali, pengguna lain juga mungkin tidak dapat login untuk sementara waktu.
  • Pembatasan Akses (Alamat IP) tidak akan berfungsi dengan benar.

Dalam konfigurasi seperti ini, atur web server agar menerima alamat IP sumber yang sebenarnya (misalnya mod_remoteip di Apache, modul real_ip di Nginx, atau untuk Cloudflare, mendaftarkan daftar alamat IP yang dipublikasikan oleh Cloudflare). Untuk cara pengaturannya, periksa manual penyedia hosting atau CDN Anda.