Skip to content
Eureka Phone: iPhone-style

Installation

Install the iPhone-style page on a new server, or add it next to the Duo on a server that already runs the core.

Pick the path that matches your server.

A. New server, iPhone-style only

Follow the Duo's Installation steps 1 to 3 as written: check the archive, create the database and the two accounts, apply the migrations. Then:

  1. Resources. Copy resource/eureka_phone and resource/eureka_iphone into your server's resources folder. Keep both folder names.

  2. Inventory item. Define the item the page lists in models (iphone by default) with stack = false.

    data/items.lua (ox_inventory)
    ['iphone'] = {
     label = 'Phone',
     weight = 190,
     stack = false,
     close = true,
    },
  3. server.cfg. Set the item in duo_phone_items and start the page after the core.

    server.cfg
    set mysql_connection_string "mysql://duo_runtime:<runtime-password>@<db-host>:3306/eureka_duo"
    
    set duo_framework "qbox"          # qbcore | esx | standalone
    set duo_inventory "ox_inventory"
    set duo_phone_items "iphone"
    
    ensure oxmysql
    ensure pma-voice
    ensure eureka_phone
    ensure eureka_iphone
  4. First start. Look for [eureka_phone] info READY and work through the console lines as in the Duo's first start.

B. Adding it next to the Duo

Your server already runs eureka_phone and eureka_duo.

  1. Keep one core. Compare the two releases' versions in RELEASE.txt. Keep the newer eureka_phone; if the iPhone-style archive is newer, upgrade the core as the Duo's Upgrading page describes (migrations included), then continue.

  2. Add the page. Copy resource/eureka_iphone next to eureka_duo.

  3. Add the item to your inventory (iphone, stack = false) and to duo_phone_items:

    server.cfg
    set duo_phone_items "phone,iphone"
    
    ensure eureka_phone
    ensure eureka_duo
    ensure eureka_iphone
  4. Media. If you use an object store, add the page's origin https://cfx-nui-eureka_iphone to the bucket's CORS rule next to the Duo's.

  5. Restart in order. restart eureka_phone stops every page; follow it with ensure eureka_duo and ensure eureka_iphone. Then refresh is not needed unless the folder is new to this server start.

A phone item that no installed page lists opens on the page the player used last. If the iPhone-style page does not open for a player holding an iphone item, check that the item name matches models in eureka_iphone/config/client.lua exactly and that it is in duo_phone_items.

Smoke test

Before players: give one character an iphone item and open it with the phone key; send a message and place a call to a second client; if the Duo is installed too, give a character both items and confirm that opening the other phone hands over once (the first page hides, the other opens). See Running both designs.

Last updated October 2, 2026