Until major ui changes we will not leave version 3 for now!
This project implements a FastAPI backend and a menu-driven CLI to manage a hosting-company simulation game server on Ubuntu Linux.
- Ubuntu Linux LTS
- Python 3.10 or newer
- If missing, install system packages (root):
sudo python3 gamectl.py sysdeps - Ensure
pipis installed:sudo apt-get install -y python3-pip python3 gamectl.py installpython3 gamectl.py start 8000- Open
http://localhost:8000/health - Optional: set env vars
APP_TICK_SECONDS,APP_SIM_ENABLED,APP_SECRET - Apply DB migrations:
python3 gamectl.py migrate
python3 gamectl.py menuopens the interactive menu.python3 gamectl.py installinstalls dependencies in.venv.python3 gamectl.py uninstallremoves installed packages.python3 gamectl.py start [port]starts the server and writes a PID file.python3 gamectl.py stopstops a running server.python3 gamectl.py status [port]checks process and HTTP health.
- Server logs:
logs/app.log - Process logs:
logs/server.out.log,logs/server.err.log
See API.md.
- Dynamic Economy: Real-time hosting simulation with hardware cycles and customer lifecycle.
- Advanced Server Builder: Visual drag-and-drop assembly with compatibility logic (CPU sockets, RAM slots, PCIe).
- Distressed Asset Marketplace: Purchase bankrupt infrastructure (datacenters, servers, networks) at discount.
- Specialized Datacenters: AI-focused (GPU-heavy), Web-focused, CDN, and Cloud-focused facilities.
- Support & Ticketing: Full-featured support system with AI auto-responses powered by Ollama (
gemma3:270m). - Service Management: Hosting/domain transfers, delinquency/recovery logic, and archiving plans.
- Global Network: Manage multiple locations, ISPs, and ASN peering.
- The simulation engine is currently focused on backend state management; advanced real-time traffic visualizers are in development.
- Authentication uses JWT tokens; basic player/admin/system roles are implemented.
- Persistence is handled via SQLite with Alembic migrations.
psu_grades.csvram_types.csvserver_cpus.csvserver_gpus.csvserver_motherboards.csvserver_racks.csvserver_types.csvbackup_generators.csv
Product tiles and “Details & Buy” dialogs optionally render an image. Images are loaded from:
- Base folder:
/home/kali/hosting-company/ui/assets/ - Product image folder:
/home/kali/hosting-company/ui/assets/components/ - Placeholder image (used when the product image is missing):
/home/kali/hosting-company/ui/assets/placeholder.svg
Filename format
The UI constructs the filename from the product category + vendor + model:
{safe(category)}_{safe(vendor)}_{safe(model)}.png
Where safe(x) is:
- Lowercased
- Every character not in
a-zor0-9becomes_
So the final path is:
ui/assets/components/{safe(category)}_{safe(vendor)}_{safe(model)}.png
Examples
-
Server:
- Category:
server - Vendor:
Supermicro - Model:
SYS-221H-TN24R - Filename:
server_supermicro_sys_221h_tn24r.png
- Category:
-
Rack:
- Category:
rack - Vendor:
APC - Model:
NetShelter SX 42U - Filename:
rack_apc_netshelter_sx_42u.png
- Category:
-
OS license:
- Category:
os_license - Vendor:
Canonical - Model:
Ubuntu Server 22.04 LTS - Filename:
os_license_canonical_ubuntu_server_22_04_lts.png
- Category:
Categories currently used by the shop UI
server,rack,cpu,gpu,ram,motherboard,psu,backup_generator,router,switch,ddos_gear,os_license
Below is the complete list of expected image filenames for every product currently in the shop catalog. Place PNG files with these exact names under:
ui/assets/components/
If an image is missing, the UI falls back to ui/assets/placeholder.svg.
backup_generator_atlas_copco_qes_100.pngbackup_generator_caterpillar_c15_500kw.pngbackup_generator_cummins_300kw_ng.pngbackup_generator_cummins_c150d2.pngbackup_generator_generac_150kw_ng.pngbackup_generator_generac_sd080.pngbackup_generator_kohler_kd70.pngbackup_generator_mtu_16v2000_800kw.png
cpu_amd_epyc_7001__naples__32c_64t_sp3.pngcpu_amd_epyc_7002__rome__64c_128t_sp3.pngcpu_amd_epyc_7003__milan__64c_128t_sp3.pngcpu_amd_epyc_8004__siena__64c_128t_sp6.pngcpu_amd_epyc_9004__bergamo__128c_256t_sp5.pngcpu_amd_epyc_9004__genoa__96c_192t_sp5.pngcpu_ampere_altra_altra_80c_80t_proprietary_lga.pngcpu_ampere_altra_altra_max_128c_128t_proprietary_lga.pngcpu_intel_xeon_d_d_2100_series_18c_36t_bga__soc_.pngcpu_intel_xeon_e5_broadwell_ep__v4__22c_44t_lga2011_3.pngcpu_intel_xeon_e5_haswell_ep__v3__18c_36t_lga2011_3.pngcpu_intel_xeon_scalable_1st_gen__skylake_sp__28c_56t_lga3647.pngcpu_intel_xeon_scalable_2nd_gen__cascade_lake_sp__28c_56t_lga3647.pngcpu_intel_xeon_scalable_3rd_gen__ice_lake_sp__40c_80t_lga4189.pngcpu_intel_xeon_scalable_4th_gen__sapphire_rapids__56c_112t_lga4677.pngcpu_intel_xeon_scalable_5th_gen__emerald_rapids__64c_128t_lga4677.png
ddos_gear_a10_thunder_tps_4435.pngddos_gear_a10_thunder_tps_5440.pngddos_gear_akamai_prolexic__on_prem_.pngddos_gear_aws_aws_shield_advanced.pngddos_gear_cloudflare_magic_transit__edge_.pngddos_gear_corero_smartwall_tdd_1400.pngddos_gear_corero_smartwall_tdd_2800.pngddos_gear_f5_big_ip_afm.pngddos_gear_f5_silverline_ddos_protection.pngddos_gear_fastly_ddos_protection.pngddos_gear_fortinet_fortiddos_1000f.pngddos_gear_fortinet_fortiddos_3000f.pngddos_gear_google_cloud_armor_enterprise.pngddos_gear_imperva_ddos_protection.pngddos_gear_microsoft_azure_ddos_protection.pngddos_gear_netscout_arbor_tms_2600.pngddos_gear_netscout_arbor_tms_2900.pngddos_gear_ovhcloud_vac_anti_ddos.pngddos_gear_qiniu_qiniu_anti_ddos.pngddos_gear_radware_defensepro_1000.pngddos_gear_radware_defensepro_8000.pngddos_gear_tencent_cloud_anti_ddos_advanced.png
gpu_amd_instinct_mi100.pnggpu_amd_instinct_mi210.pnggpu_amd_instinct_mi250x.pnggpu_amd_instinct_mi300x.pnggpu_intel_data_center_gpu_max_1550.pnggpu_intel_flex_170.pnggpu_nvidia_a10.pnggpu_nvidia_a100_40gb.pnggpu_nvidia_a100_80gb_pcie.pnggpu_nvidia_a100_80gb_sxm4.pnggpu_nvidia_a40.pnggpu_nvidia_h100_80gb_pcie.pnggpu_nvidia_h100_80gb_sxm5.pnggpu_nvidia_l40.pnggpu_nvidia_t4.pnggpu_nvidia_v100_16gb.pnggpu_nvidia_v100_32gb_sxm2.png
motherboard_dell_mx740c.pngmotherboard_dell_mx760c.pngmotherboard_dell_r260.pngmotherboard_dell_r360.pngmotherboard_dell_r470.pngmotherboard_dell_r570.pngmotherboard_dell_r660.pngmotherboard_dell_r740.pngmotherboard_dell_r760.pngmotherboard_dell_r760xa.pngmotherboard_dell_r7615.pngmotherboard_dell_r7625.pngmotherboard_dell_r860.pngmotherboard_dell_r960.pngmotherboard_dell_t160.pngmotherboard_dell_t360.pngmotherboard_dell_t560.pngmotherboard_dell_xe8640.pngmotherboard_dell_xe9680.pngmotherboard_dell_xr5610.pngmotherboard_dell_xr7620.pngmotherboard_gigabyte_mz72_hb0.pngmotherboard_gigabyte_mz73_lm1.pngmotherboard_gigabyte_r272_ae0.pngmotherboard_hpe_apollo_6000_gen10_plus.pngmotherboard_hpe_bl460c_gen9.pngmotherboard_hpe_dl325_gen11.pngmotherboard_hpe_dl360_gen10.pngmotherboard_hpe_dl360_gen11.pngmotherboard_hpe_dl380_gen11.pngmotherboard_hpe_dl385_gen11.pngmotherboard_hpe_dl385_gen11__gpu_.pngmotherboard_hpe_dl580_gen11.pngmotherboard_hpe_ml350_gen11.pngmotherboard_hpe_synergy_480_gen10.pngmotherboard_supermicro_h11dsi.pngmotherboard_supermicro_h12dsi.pngmotherboard_supermicro_h13dei.pngmotherboard_supermicro_h13si.pngmotherboard_supermicro_x11dpi_nt.pngmotherboard_supermicro_x11spa_tf.pngmotherboard_supermicro_x12dpi_n6.pngmotherboard_supermicro_x13dei_ln4.png
os_license_canonical_ubuntu_server_18_04_lts.pngos_license_canonical_ubuntu_server_20_04_lts.pngos_license_canonical_ubuntu_server_22_04_lts.pngos_license_microsoft_windows_server_2016_standard.pngos_license_microsoft_windows_server_2019_datacenter.pngos_license_microsoft_windows_server_2022_datacenter.pngos_license_oracle_oracle_linux_8.pngos_license_oracle_oracle_linux_9.pngos_license_red_hat_rhel_8.pngos_license_red_hat_rhel_9.pngos_license_suse_sles_15_sp4.pngos_license_vmware_vsphere_7_essentials_plus.pngos_license_vmware_vsphere_8_enterprise_plus.pngos_license_vmware_vsphere_hypervisor_free.png
psu_apc_smart_ups_10kva_rackmount.pngpsu_dell_1100w_platinum.pngpsu_dell_1600w_platinum.pngpsu_generic_80_plus_bronze_650w.pngpsu_generic_80_plus_bronze_850w.pngpsu_generic_80_plus_gold_1000w.pngpsu_generic_80_plus_gold_1200w.pngpsu_generic_80_plus_gold_1500w.pngpsu_generic_80_plus_gold_750w.pngpsu_generic_80_plus_platinum_1000w.pngpsu_generic_80_plus_platinum_1500w.pngpsu_generic_80_plus_platinum_2000w.pngpsu_generic_80_plus_platinum_750w.pngpsu_generic_80_plus_silver_1000w.pngpsu_generic_80_plus_silver_1200w.pngpsu_generic_80_plus_silver_300w.pngpsu_generic_80_plus_silver_650w.pngpsu_generic_80_plus_titanium_1750w.pngpsu_generic_80_plus_titanium_3000w.pngpsu_generic_80_plus_titanium_500w.png
rack_apc_netshelter_sx.pngrack_dell_4220.pngrack_generic_open_frame_2_post.pngrack_generic_open_frame_4_post.pngrack_generic_standard_42u_rack.pngrack_hpe_rack_g2_600mm.pngrack_supermicro_42u_rack.png
ram_generic_ddr4_ecc_128gb_3200mt_s.pngram_generic_ddr4_ecc_16gb_3200mt_s.pngram_generic_ddr4_ecc_32gb_3200mt_s.pngram_generic_ddr4_ecc_4gb_2666mt_s.pngram_generic_ddr4_ecc_64gb_3200mt_s.pngram_generic_ddr4_ecc_8gb_2933mt_s.pngram_generic_ddr5_ecc_1024gb_5600mt_s.pngram_generic_ddr5_ecc_256gb_5600mt_s.pngram_generic_ddr5_ecc_512gb_5600mt_s.png
router_arista_7280r3.pngrouter_arista_7504r.pngrouter_cisco_asr_1001_x.pngrouter_cisco_asr_1002_x.pngrouter_cisco_asr_9001.pngrouter_cisco_asr_9901.pngrouter_cisco_ncs_540.pngrouter_cisco_ncs_5501_se.pngrouter_cisco_ncs_560.pngrouter_fortinet_fortigate_2000f.pngrouter_huawei_ne40e_x8a.pngrouter_huawei_ne8000_m8.pngrouter_juniper_mx10003.pngrouter_juniper_mx204.pngrouter_juniper_mx304.pngrouter_juniper_mx480.pngrouter_juniper_ptx10002_36qdd.pngrouter_juniper_ptx10004.pngrouter_mikrotik_ccr2216_1g_12xs_2xq.pngrouter_nokia_7250_ixr_6.pngrouter_nokia_7750_sr_1.pngrouter_nokia_7750_sr_2.pngrouter_ubiquiti_uisp_router_pro.png
server_dell_mx740c.pngserver_dell_mx760c.pngserver_dell_poweredge_r740.pngserver_dell_r660.pngserver_dell_r760.pngserver_dell_r760xa.pngserver_dell_r7615.pngserver_dell_r7625.pngserver_dell_r860.pngserver_dell_r960.pngserver_dell_xe8640.pngserver_dell_xe9680.pngserver_dell_xr5610.pngserver_dell_xr7620.pngserver_gigabyte_mz73_lm1_rack.pngserver_gigabyte_r272_ae0.pngserver_hpe_apollo_6000_gen10_plus.pngserver_hpe_bl460c_gen9.pngserver_hpe_dl325_gen11.pngserver_hpe_dl360_gen10.pngserver_hpe_dl360_gen11.pngserver_hpe_dl380_gen11.pngserver_hpe_dl385_gen11.pngserver_hpe_dl580_gen11.pngserver_hpe_ml350_gen11.pngserver_hpe_proliant_dl380_gen10.pngserver_hpe_synergy_480_gen10.pngserver_supermicro_h12_2p_rack.pngserver_supermicro_h13_2p_rack.pngserver_supermicro_superserver_1029p.pngserver_supermicro_x11_2p_rack.pngserver_supermicro_x12_2p_rack.pngserver_supermicro_x13_2p_rack.png
server_chassis_dell_mx740c.pngserver_chassis_dell_mx760c.pngserver_chassis_dell_r660.pngserver_chassis_dell_r760.pngserver_chassis_dell_r760xa.pngserver_chassis_dell_r7615.pngserver_chassis_dell_r7625.pngserver_chassis_dell_r860.pngserver_chassis_dell_r960.pngserver_chassis_dell_xe8640.pngserver_chassis_dell_xe9680.pngserver_chassis_dell_xr5610.pngserver_chassis_dell_xr7620.pngserver_chassis_gigabyte_mz73_lm1_rack.pngserver_chassis_gigabyte_r272_ae0.pngserver_chassis_hpe_apollo_6000_gen10_plus.pngserver_chassis_hpe_bl460c_gen9.pngserver_chassis_hpe_dl325_gen11.pngserver_chassis_hpe_dl360_gen10.pngserver_chassis_hpe_dl360_gen11.pngserver_chassis_hpe_dl380_gen11.pngserver_chassis_hpe_dl385_gen11.pngserver_chassis_hpe_dl580_gen11.pngserver_chassis_hpe_ml350_gen11.pngserver_chassis_hpe_synergy_480_gen10.pngserver_chassis_supermicro_h12_2p_rack.pngserver_chassis_supermicro_h13_2p_rack.pngserver_chassis_supermicro_x11_2p_rack.pngserver_chassis_supermicro_x12_2p_rack.pngserver_chassis_supermicro_x13_2p_rack.png
server_used_dell_r720.pngserver_used_dell_r720xd.pngserver_used_dell_r730.pngserver_used_dell_r730xd.pngserver_used_gigabyte_g481_s80.pngserver_used_nvidia_dgx_1.pngserver_used_supermicro_4029gp_trt.png
switch_arista_7050x3.pngswitch_arista_7060cx_32s.pngswitch_arista_7060dx5_64s.pngswitch_arista_7060x5.pngswitch_cisco_catalyst_9500_48y4c.pngswitch_cisco_nexus_9236c.pngswitch_cisco_nexus_93180yc_fx.pngswitch_cisco_nexus_93180yc_fx3.pngswitch_cisco_nexus_9336c_fx2.pngswitch_cisco_nexus_9364c.pngswitch_dell_powerswitch_s5232f_on.pngswitch_dell_powerswitch_s5248f_on.pngswitch_dell_powerswitch_z9664f_on.pngswitch_extreme_networks_slx_9740.pngswitch_hpe_aruba_cx_8325_48y8c.pngswitch_hpe_aruba_cx_8400.pngswitch_hpe_aruba_cx_9300.pngswitch_juniper_qfx10008.pngswitch_juniper_qfx5120_48y.pngswitch_juniper_qfx5220_32cd.pngswitch_netgear_m4300_96x.pngswitch_nvidia_mellanox_sn3700.pngswitch_nvidia_mellanox_sn4600.pngswitch_ubiquiti_unifi_switch_enterprise_xg_24.png
- Use non-privileged ports (
>=1024) when not running as root.
- On a clean Ubuntu system:
- Install Python 3.10+.
- Run
sudo python3 gamectl.py sysdepsifpython3-venvis missing. - Run
sudo apt-get install -y python3-pipif pip is missing. - Run
python3 gamectl.py install. - Start with
python3 gamectl.py start 8000. - Verify
GET /healthandGET /hardware/datasets. - Verify gameplay: create a company and request a loan.
- Verify auth:
POST /auth/signup, then call gameplay endpoints withAuthorization: Bearer <token>. - Run
python3 gamectl.py migratebefore using DB-backed endpoints in production.
- Copy
deploy/systemd/hosting_game.serviceto/etc/systemd/system/. sudo systemctl daemon-reloadsudo systemctl enable hosting_gamesudo systemctl start hosting_game- Logs via
journalctl -u hosting_game -f