[{"data":1,"prerenderedAt":813},["ShallowReactive",2],{"/docs/jobs/policejob/setup/installation":3,"/docs/jobs/policejob/setup/installation-surround":802,"/docs/jobs/policejob/setup/installation-implemented-suggestions":812},{"id":4,"title":5,"body":6,"description":792,"extension":793,"head":794,"implementedSuggestions":794,"meta":795,"navigation":796,"path":797,"schemaOrg":794,"seo":798,"sitemap":799,"stem":800,"__hash__":801},"docs/1.docs/0.jobs/1.policejob/2.setup/1.installation.md","Installation",{"type":7,"value":8,"toc":785},"minimark",[9,14,18,33,36,40,699,703,725,744,748,766,769,772,781],[10,11,13],"h2",{"id":12},"requirements","Requirements",[15,16,17],"p",{},"Before installing Sky Police Job, update both required resources from the same CFX Portal account:",[19,20,21,28],"ul",{},[22,23,24],"li",{},[25,26,27],"code",{},"sky_base",[22,29,30],{},[25,31,32],{},"sky_jobs_base",[15,34,35],{},"Keep both dependencies up to date when updating the police resource. Start your framework, inventory and targeting resources before the Sky resources.",[10,37,39],{"id":38},"install-the-resource","Install the resource",[41,42,43,48,55,59,75,79,89,101,105,116,137,234,240,243,247,253,442,446,458,461,523,530,552,555,602,606,617,627,631,643,647,657,667,671,687,691],"steps",{},[44,45,47],"h3",{"id":46},"deploy-the-files","Deploy the files",[15,49,50,51,54],{},"Place the ",[25,52,53],{},"sky_policejob"," resource in your server resources directory. Do not rename its resource folder.",[44,56,58],{"id":57},"configure-the-start-order","Configure the start order",[15,60,61,62,65,66,68,69,71,72,74],{},"Add the resource to ",[25,63,64],{},"server.cfg"," after its dependencies. A typical order is your framework and integrations first, followed by ",[25,67,27],{},", ",[25,70,32],{},", and finally ",[25,73,53],{},".",[44,76,78],{"id":77},"prepare-the-database","Prepare the database",[15,80,81,84,85,88],{},[25,82,83],{},"Config.AutoExecuteQuery"," is enabled by default in ",[25,86,87],{},"config/config.lua",". With this option enabled, the resource creates and updates its database tables automatically.",[15,90,91,92,95,96,100],{},"Import the included ",[25,93,94],{},"import.sql"," manually ",[97,98,99],"strong",{},"only"," if you disable automatic queries.",[44,102,104],{"id":103},"set-up-media-uploads","Set up media uploads",[15,106,107,108,115],{},"Images & videos in the tablet are uploaded to ",[109,110,114],"a",{"href":111,"rel":112},"https://fivemanage.com",[113],"nofollow","FiveManage",". The capture runs directly in the tablet UI — no extra server resource is required.",[117,118,119,130],"ol",{},[22,120,121,122,125,126,129],{},"Create an account at ",[109,123,114],{"href":111,"rel":124},[113]," and generate a ",[97,127,128],{},"Media API Key"," from your dashboard.",[22,131,132,133,136],{},"Enter your Media API Key in ",[25,134,135],{},"sky_jobs_base/config/webhooks.lua",":",[138,139,144],"pre",{"className":140,"code":141,"filename":135,"language":142,"meta":143,"style":143},"language-lua shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Webhooks = {\n    fivemanage = {\n        apiKey = \"your_media_api_key_here\",\n        baseUrl = \"https://api.fivemanage.com/api/v3/file\",\n        timeoutMs = 10000\n    }\n}\n","lua","",[25,145,146,162,172,193,210,222,228],{"__ignoreMap":143},[147,148,151,155,159],"span",{"class":149,"line":150},"line",1,[147,152,154],{"class":153},"sTEyZ","Webhooks ",[147,156,158],{"class":157},"sMK4o","=",[147,160,161],{"class":153}," {\n",[147,163,165,168,170],{"class":149,"line":164},2,[147,166,167],{"class":153},"    fivemanage ",[147,169,158],{"class":157},[147,171,161],{"class":153},[147,173,175,178,180,183,187,190],{"class":149,"line":174},3,[147,176,177],{"class":153},"        apiKey ",[147,179,158],{"class":157},[147,181,182],{"class":157}," \"",[147,184,186],{"class":185},"sfazB","your_media_api_key_here",[147,188,189],{"class":157},"\"",[147,191,192],{"class":153},",\n",[147,194,196,199,201,203,206,208],{"class":149,"line":195},4,[147,197,198],{"class":153},"        baseUrl ",[147,200,158],{"class":157},[147,202,182],{"class":157},[147,204,205],{"class":185},"https://api.fivemanage.com/api/v3/file",[147,207,189],{"class":157},[147,209,192],{"class":153},[147,211,213,216,218],{"class":149,"line":212},5,[147,214,215],{"class":153},"        timeoutMs ",[147,217,158],{"class":157},[147,219,221],{"class":220},"sbssI"," 10000\n",[147,223,225],{"class":149,"line":224},6,[147,226,227],{"class":153},"    }\n",[147,229,231],{"class":149,"line":230},7,[147,232,233],{"class":153},"}\n",[235,236,237],"warning",{},[15,238,239],{},"Saving images & videos will break if you restart the script while your server runs. Make sure you test after doing a full server restart.",[241,242],"br",{},[44,244,246],{"id":245},"use-a-metadata-capable-inventory","Use a metadata-capable inventory",[15,248,249,250,252],{},"The evidence system stores sample details on the item metadata. ",[25,251,27],{}," detects the running inventory automatically and supports:",[254,255,256,272],"table",{},[257,258,259],"thead",{},[260,261,262,266,269],"tr",{},[263,264,265],"th",{},"Inventory",[263,267,268],{},"Support",[263,270,271],{},"Our recommendation",[273,274,275,289,301,312,324,335,346,357,368,379,390,401,412,422,433],"tbody",{},[260,276,277,283,286],{},[278,279,280],"td",{},[25,281,282],{},"ox_inventory",[278,284,285],{},"Full",[278,287,288],{},"⭐ Recommended — most complete metadata integration and the best-tested combination",[260,290,291,296,298],{},[278,292,293],{},[25,294,295],{},"qs-inventory",[278,297,285],{},[278,299,300],{},"Good choice",[260,302,303,308,310],{},[278,304,305],{},[25,306,307],{},"qb-inventory",[278,309,285],{},[278,311,300],{},[260,313,314,319,321],{},[278,315,316],{},[25,317,318],{},"ps-inventory",[278,320,285],{},[278,322,323],{},"—",[260,325,326,331,333],{},[278,327,328],{},[25,329,330],{},"core_inventory",[278,332,285],{},[278,334,323],{},[260,336,337,342,344],{},[278,338,339],{},[25,340,341],{},"codem-inventory",[278,343,285],{},[278,345,323],{},[260,347,348,353,355],{},[278,349,350],{},[25,351,352],{},"tgiann-inventory",[278,354,285],{},[278,356,323],{},[260,358,359,364,366],{},[278,360,361],{},[25,362,363],{},"origen_inventory",[278,365,285],{},[278,367,323],{},[260,369,370,375,377],{},[278,371,372],{},[25,373,374],{},"jaksam_inventory",[278,376,285],{},[278,378,323],{},[260,380,381,386,388],{},[278,382,383],{},[25,384,385],{},"ak47_inventory",[278,387,285],{},[278,389,323],{},[260,391,392,397,399],{},[278,393,394],{},[25,395,396],{},"jpr-inventory",[278,398,285],{},[278,400,323],{},[260,402,403,408,410],{},[278,404,405],{},[25,406,407],{},"one_inventory",[278,409,285],{},[278,411,323],{},[260,413,414,417,419],{},[278,415,416],{},"QBCore / Qbox built-in inventory",[278,418,285],{},[278,420,421],{},"Fine if you stay on the framework default",[260,423,424,427,430],{},[278,425,426],{},"ESX built-in inventory",[278,428,429],{},"Partial — no item metadata; collected evidence items lose their sample data",[278,431,432],{},"Not recommended — switch to a metadata-capable inventory",[260,434,435,438,440],{},[278,436,437],{},"vRP built-in inventory",[278,439,429],{},[278,441,432],{},[44,443,445],{"id":444},"add-police-items","Add police items",[15,447,448,449,452,453,457],{},"Add the following items to your inventory script. Use the preview images inside ",[25,450,451],{},"sky_policejob/config/inventory"," so they match the UI. For ready-to-copy definitions see the ",[109,454,456],{"href":455},"../reference/inventories","Inventory Items"," page.",[15,459,460],{},"Equipment & tools:",[19,462,463,468,473,478,483,488,493,498,503,508,513,518],{},[22,464,465],{},[25,466,467],{},"cctvcam",[22,469,470],{},[25,471,472],{},"bodycam",[22,474,475],{},[25,476,477],{},"speedcam",[22,479,480],{},[25,481,482],{},"gps_tracker",[22,484,485],{},[25,486,487],{},"ankle_monitor",[22,489,490],{},[25,491,492],{},"wheelclamp",[22,494,495],{},[25,496,497],{},"welder",[22,499,500],{},[25,501,502],{},"fixtool",[22,504,505],{},[25,506,507],{},"cleaning_alcohol",[22,509,510],{},[25,511,512],{},"code_list",[22,514,515],{},[25,516,517],{},"wire_cutter",[22,519,520],{},[25,521,522],{},"cigarette",[15,524,525,526,529],{},"Restraints (required for the cuffing / transport flow — without them ",[25,527,528],{},"RegisterUsableItem"," silently does nothing):",[19,531,532,537,542,547],{},[22,533,534],{},[25,535,536],{},"handcuffs",[22,538,539],{},[25,540,541],{},"zipties",[22,543,544],{},[25,545,546],{},"legcuffs",[22,548,549],{},[25,550,551],{},"headbag",[15,553,554],{},"Evidence field kit:",[19,556,557,562,567,572,577,582,587,592,597],{},[22,558,559],{},[25,560,561],{},"saliva_kit",[22,563,564],{},[25,565,566],{},"blood_kit",[22,568,569],{},[25,570,571],{},"collected_fingerprint",[22,573,574],{},[25,575,576],{},"fingerprint_kit",[22,578,579],{},[25,580,581],{},"fingerprint_scanner",[22,583,584],{},[25,585,586],{},"hydrogen_peroxide",[22,588,589],{},[25,590,591],{},"collected_saliva",[22,593,594],{},[25,595,596],{},"collected_casing",[22,598,599],{},[25,600,601],{},"collected_blood",[44,603,605],{"id":604},"disable-duplicate-salaries","Disable duplicate salaries",[15,607,608,609,612,613,616],{},"Sky Jobs Base pays salaries for configured jobs. Set the framework salary values for every police grade to ",[25,610,611],{},"0"," (for example in the ",[25,614,615],{},"job_grades"," table) — leaving both salary systems active produces duplicate payments.",[15,618,619,620,623,624,74],{},"If you prefer to keep your framework or an external payroll system instead, disable the built-in payroll by setting ",[25,621,622],{},"Config.Salary.enabled = false"," in ",[25,625,626],{},"sky_jobs_base/config/config.lua",[44,628,630],{"id":629},"configure-administrator-access","Configure administrator access",[15,632,633,634,638,639,457],{},"Install the global ",[109,635,637],{"href":636},"/docs/installation#permissions-bootstrap","permissions bootstrap",", assign your administrator group, and review the ",[109,640,642],{"href":641},"./permissions","Permissions",[44,644,646],{"id":645},"grant-boss-permissions","Grant boss permissions",[15,648,649,650,653,654,74],{},"Run ",[25,651,652],{},"/setboss"," once for the highest police grade after a fresh installation or after clearing ",[25,655,656],{},"sky_job_permissions",[15,658,659,660,663,664,74],{},"For example, a police job whose highest grade is ",[25,661,662],{},"5"," should be configured with ",[25,665,666],{},"/setboss police 5",[44,668,670],{"id":669},"configure-the-job","Configure the job",[15,672,673,674,677,678,681,682,686],{},"Restart the server, run ",[25,675,676],{},"/jobconfig",", and select ",[97,679,680],{},"Police Jobs",". Configure jobs and enabled systems before placing station points. See the ",[109,683,685],{"href":684},"./configuration","Configuration"," page for the full workflow.",[44,688,690],{"id":689},"build-the-stations","Build the stations",[15,692,693,694,698],{},"Stations, jails, social work zones, and impound lots are placed through the Job Configurator. Follow the ",[109,695,697],{"href":696},"./station-setup","Station Setup"," page to place the duty terminal, storage, and enforcement points.",[10,700,702],{"id":701},"first-start-checklist","First-start checklist",[19,704,705,708,713,716,719,722],{},[22,706,707],{},"The server console shows no missing dependency or database errors.",[22,709,710,712],{},[25,711,676],{}," lists Police Jobs.",[22,714,715],{},"The police job and its highest grade exist in the framework.",[22,717,718],{},"Required items exist in the selected metadata-capable inventory.",[22,720,721],{},"The police tablet shows the expected applications.",[22,723,724],{},"A test officer can go on duty, restrain a suspect, and complete a jail sentence.",[726,727,730],"callout",{"color":728,"icon":729},"info","i-lucide-info",[15,731,732,733,735,736,739,740,743],{},"Most day-to-day settings are managed through ",[25,734,676],{}," when ",[25,737,738],{},"Config.UseJobConfigurator"," is enabled. Static and advanced settings remain in the open ",[25,741,742],{},"config"," directory.",[10,745,747],{"id":746},"next-steps","Next steps",[19,749,750,754,758,762],{},[22,751,752],{},[109,753,685],{"href":684},[22,755,756],{},[109,757,697],{"href":696},[22,759,760],{},[109,761,642],{"href":641},[22,763,764],{},[109,765,456],{"href":455},[10,767,268],{"id":768},"support",[15,770,771],{},"Need help? Our support team is always ready to assist.",[773,774],"u-button",{"color":775,"icon":776,"label":777,"target":778,"to":779,"variant":780},"neutral","i-simple-icons-discord","Join Discord","_blank","https://discord.gg/sky-systems","subtle",[782,783,784],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":143,"searchDepth":150,"depth":164,"links":786},[787,788,789,790,791],{"id":12,"depth":164,"text":13},{"id":38,"depth":164,"text":39},{"id":701,"depth":164,"text":702},{"id":746,"depth":164,"text":747},{"id":768,"depth":164,"text":268},"Install Sky Police Job, prepare its dependencies and database, and complete the first server setup.","md",null,{},true,"/docs/jobs/policejob/setup/installation",{"title":5,"description":792},{"loc":797},"1.docs/0.jobs/1.policejob/2.setup/1.installation","PVIBsqtgvSjaf_VFmW7M9HaU9AMDnUS1v2DCmwsQStU",[803,808],{"title":804,"path":805,"stem":806,"description":807,"children":-1},"Overview","/docs/jobs/policejob/overview","1.docs/0.jobs/1.policejob/1.overview","Start here for an overview of Sky Police Job, its main systems, setup path, and documentation sections.",{"title":685,"path":809,"stem":810,"description":811,"children":-1},"/docs/jobs/policejob/setup/configuration","1.docs/0.jobs/1.policejob/2.setup/2.configuration","Understand the Job Configurator, how to create a police job, feature toggles, and the safe configuration workflow.",[],1783080560018]