VRS X Operator's Handbook
- 01. Startup and Login
- 02. General Settings
- 03. Feeds and Merged Feeds
- 04. Server Settings
- 05. Resources and Visuals
- 06. Users and Security
- 07. Backup, Update, Recovery
- 08. Troubleshooting
- 09. Feeds: Smart Ports and MLAT
- 10. Feed Filter
- 11. Merged Feeds
- 12. Resources: Flags and Silhouettes
- 13. Custom Operator Logo
- 14. Aircraft & Operator Colors
- 15. AircraftDB Editor & Custom Photos
01. Startup and Login
Startup and Login
1. First startup
- Start the VRS X service/application.
- Open the admin panel:
- default:
http://localhost:8085/admin - if
AdminPortwas changed:http://<host>:<admin-port>/admin
- default:
- Complete activation (if required).
- Set the administrator password.
2. If the admin panel does not open
The most common issue is a port conflict.
Linux
ss -ltnp | rg ':8085|:5000|:8080'
Windows (PowerShell)
Get-NetTCPConnection -State Listen | Where-Object {$_.LocalPort -in 8080,8085,5000}
If the port is already in use:
- Stop the conflicting application.
- Open the admin panel.
- Change
Admin Portto a free port. - Save the configuration and restart VRS X.
3. Minimal post-install workflow
General Settings- set core radar options.Feeds- add at least one data source.Server Settings- configure ports and network access.- Restart the service.
- Verify:
http://<host>:<web-port>/AircraftList.jsonhttp://<host>:<admin-port>/admin
02. General Settings
General Settings should contain only global radar behavior and presentation options.
What to configure here
- Instance name and high-level identity settings.
- General map behavior and display options.
- User-facing options rather than infrastructure options.
Recommended configuration order
- Set general options.
- Save.
- Go to
Feedsand configure data sources. - Return to visual fine-tuning only after feed data is stable.
Best practices
- Apply small changes and save in steps.
- After major changes, refresh radar and verify
AircraftList.json. - Avoid mixing UI changes and infrastructure changes in one pass.
Current UI behavior notes
Theme modes and map controls
- Available themes in radar UI:
Classic,Futuristic,OverFuture. - Map action controls (zoom, layers, location, visual panel) use a unified button layout.
- In
FuturisticandOverFuture, controls should be displayed as standalone buttons without an extra outer frame around the whole control group. - After frontend updates, use a hard refresh to make sure the latest CSS is loaded.
Mobile aircraft detail sheet
- On mobile viewport, selecting an aircraft opens a bottom sheet in collapsed mode.
- Tap the sheet handle or swipe up to expand the sheet.
- Swipe down (when detail scroll is already at top) to collapse.
- Closing aircraft detail resets sheet state and scroll position.
- UI is safe-area aware (
viewport-fit=cover), so bottom spacing should respect device insets on iOS-like devices.
Aircraft list sorting
- Sortable columns include
Op,ICAO,Reg,Callsign,Alt,Spd. - Sorting preference is persisted in browser storage.
03. Feeds and Merged Feeds
This page is a quick navigator for feed topics.
Recommended order
- Configure feed source and MLAT behavior.
- Configure merged feeds.
- Apply feed filter rules last.
Detailed pages:
Common issue: selected feed still shows too much
Symptom: selecting a specific feed still shows aircraft from other feeds.
Checklist:
- Verify
feedIdmapping in output data. - Verify frontend sends the correct
feedparameter. - Compare
All feedsvs single feed for the same bbox. - Repeat test on a second feed for the same user.
- Remember there is a short stability window: aircraft recently seen by selected feed can remain visible briefly to reduce flicker.
- For merged feeds, filtering remains anchored to selected feed ID (no automatic expansion to all merged sources).
04. Server Settings
Treat Server Settings as infrastructure and maintenance.
1. Web Server Port and Admin Port
Web Server Port
- Port used by the public radar (
/AircraftList.json, map frontend).
Admin Port
- Port used by the admin panel (
/admin). - Recommended: use a dedicated admin port, separate from radar.
If AdminPort = 0 or equals WebServerPort, admin endpoints share the same port as public radar, which increases exposure.
2. Network Binding
This setting controls whether the server listens on:
- localhost only,
- all interfaces (
0.0.0.0) for LAN/VPN/public routing.
A restart is required after changing binding behavior.
3. Radar Visibility
This setting controls radar authentication:
Public- radar is accessible without login.Private- radar requires authentication.
This is independent from Network Binding.
4. Database and Imports
Database File Name
- SQLite database file path/name.
- Changing it may require restart.
Data import options
- OpenSky CSV
- ADS-B Exchange JSON/NDJSON
- Airport CSV (OurAirports-compatible)
- BaseStation SQLite upload (
BaseStation.sqb,.sqlite,.db,.sqlite3)
BaseStation file import note:
- Use the file selector in Server Settings (no manual path typing required).
Replace- swaps the whole DB file and creates a.bakbackup.Merge- keeps current DB file and upserts aircraft records byModeS.
ADSBX note:
basic-ac-db.json.gzincludes nativemilflag support (military classification).- There is no dedicated
governmentfield in this dataset.
Recommended process:
- Confirm source URL is valid and in expected format.
- Run import.
- Check server logs.
- Verify results on map/list.
AircraftDB Editor and custom photos
Dedicated guide:
Quick summary:
ModeSmust stay unique (duplicate create/update is blocked),- editor provides
Load existing aircraftpath for duplicate ICAO conflicts, - custom aircraft photo can be uploaded per ICAO and has priority over PlaneSpotters.
5. Configuration Backup
This section provides:
- settings export,
- settings import.
After importing configuration:
- verify ports,
- verify binding,
- restart service if required.
6. Danger Zone
Clear Application Data removes critical data (configuration, users, mappings, database).
Use only when:
- performing full instance reset,
- current backups exist,
- irreversible data loss is accepted.
05. Resources and Visuals
1. Navigation
This page is a quick navigator for visual resources and marker customization.
Recommended reading:
2. Type Icon Mapping (quick note)
Use Type Icon Mapping after resources are loaded.
Current UI behavior:
- mappings are displayed sorted by
ICAO Type Code, - filter matches both
ICAO Type CodeandIcon Name.
3. If resources are loaded but still not visible
Checklist:
- verify CSV keys match ZIP asset naming,
- clear browser cache,
- confirm icon mapping is not overriding expected silhouette behavior,
- verify aircraft records include the expected type/operator metadata.
4. Theme-related map visuals
- Map controls (zoom, layers, location, visual settings) use one unified visual style.
- In
FuturisticandOverFuture, controls should not have an extra outer frame around grouped buttons. - If old framing still appears after deployment, clear browser cache and reload the page.
06. Users and Security
1. User management
In Users:
- create operator accounts,
- reset/change passwords,
- remove unused accounts.
Avoid using one shared account for multiple operators.
2. Public vs private radar
Radar Visibility controls radar access mode:
Public- no login required for radar view.Private- login required.
This does not replace network-level controls (ports, firewall, binding).
3. Baseline hardening
- Use a dedicated
AdminPort. - Restrict admin port access at firewall level (LAN/VPN admin clients only).
- Use a strong admin password.
- Rotate password after deployment.
- Do not expose admin panel publicly unless required.
4. Safe change procedure
- Apply configuration change.
- Save.
- Restart service when required.
- Verify:
- radar endpoint works,
- admin endpoint works,
- authentication works.
07. Backup, Update, Recovery
1. Minimum backup before changes
Before major changes, create:
- configuration export (
Configuration Export), - database export (
Database Export), - backup of the instance data directory.
2. Update process (operational model)
Safe minimal flow:
- stop service,
- backup,
- replace binaries,
- start service,
- verify endpoints.
Post-update checks:
http://<host>:<web-port>/AircraftList.jsonhttp://<host>:<admin-port>/admin- hard refresh the radar page to load current static assets,
- verify at least one desktop and one mobile UI smoke check.
Recommended UI smoke checks:
- switch theme to
FuturisticandOverFutureand verify map controls have no extra outer frame, - on mobile viewport, open aircraft detail sheet and verify expand/collapse gestures,
- verify aircraft list sorting by
Regworks and persists after page reload, - verify mobile bottom spacing is correct on devices with safe-area insets.
3. Recovery after failed deployment
- Stop service.
- Restore previous binaries.
- Restore configuration and/or database from backup.
- Start service.
- Verify feeds and admin access.
4. What to log after deployment
Track:
- release version,
- date and host,
- changed ports/binding settings,
- endpoint verification results.
08. Troubleshooting
1. /admin returns Invalid url
Most common causes:
- port conflict,
- admin is running on a different port than expected,
- reverse proxy path/port mismatch.
Check:
- which process listens on admin port,
AdminPortandWebServerPortvalues in config,curl -I http://<host>:<admin-port>/adminafter restart.
2. Radar works locally but not on LAN
Check:
Network Bindingis set to all interfaces,- host firewall rules,
- service is listening on
0.0.0.0:<port>.
Linux example:
ss -ltnp | rg ':8080|:5000|:8085'
curl -I http://<lan-ip>:<port>/admin
3. AircraftList.json becomes empty after some time
Possible causes:
- feed connection loss,
- background exception stopping host,
- overload or unstable upstream data patterns.
Check:
- service logs (
journalctl -u vrsx), - feed status and message throughput,
- process uptime after errors.
4. Aircraft positions jump backward or flicker
Common causes:
- MLAT instability,
- low-quality feed or high jitter,
- mixed sources without stable source-priority logic.
Diagnostic flow:
- compare same feed in VRS X vs reference VRS,
- test single feed instead of
All feeds, - compare JSON output over identical bbox/time intervals.
5. Resource import says success, but no visual effect
- Verify
Loadedcounters. - Verify CSV keys match asset names.
- Clear browser cache.
- Verify icon/type mapping and metadata consistency.
6. Map controls show strange outer frames in Futuristic / OverFuture
Symptoms:
- zoom/layer/location control groups have extra rectangular outlines around button stacks.
Recovery steps:
- perform hard refresh (
Ctrl+Shift+RorCmd+Shift+R), - clear site cache and reload,
- verify the active theme is really
FuturisticorOverFuture, - if issue persists, redeploy frontend static assets and refresh again.
7. Mobile aircraft detail sheet does not collapse/expand as expected
Check:
- sheet can expand by tapping handle or swiping up,
- collapse gesture works only when detail content scroll is at top,
- after closing selected aircraft and reopening, sheet should start collapsed.
8. Bottom sheet is clipped by device home indicator (mobile)
Check:
- confirm frontend HTML uses viewport meta with
viewport-fit=cover, - clear browser cache so updated CSS safe-area rules are applied,
- retest on real device (some desktop emulators do not reproduce full safe-area behavior).
9. Marker colors from Aircraft Colors / Operator Colors are not visible
Check:
Color by operatoris enabled in label settings,- mapping key format is valid (
ICAO hexfor Aircraft Colors, operator code for Operator Colors), - if both mappings exist, remember Aircraft Colors override Operator Colors,
- emergency or selected marker style can temporarily override normal tint.
10. Custom operator logo upload is rejected or not used
Common causes:
- invalid proportions (must be
17:4), - image is too small for template (
85x20minimum for downscale path), - existing logo conflict with
overwritedisabled, - invalid operator/type key format.
Check:
- upload with naming rule
OPERATORorOPERATOR-ICAOTYPE, - if prompted, use explicit downscale to
85x20, - confirm
OperatorFlagsList.csvand resource status are updated, - refresh browser cache and verify with specific aircraft type.
11. AircraftDB Editor shows duplicate ICAO conflict
Symptoms:
- save returns conflict and message that aircraft already exists.
Expected behavior:
- app prevents duplicate
ModeSrows, - editor shows
Load existing aircraftaction for the conflicting ICAO.
Resolution:
- load existing record,
- apply edits there,
- save update instead of creating a second record.
12. Custom aircraft photo upload succeeds but detail still shows fallback image
Check:
- ICAO in editor is valid and matches the aircraft (
6hex chars), - custom photo status in editor shows
custom photo available, - hard refresh detail panel to bypass stale browser cache,
- if needed, delete and re-upload photo (system keeps only one custom photo variant per ICAO).
09. Feeds: Smart Ports and MLAT
1. Feed basics
In Feeds, define raw data sources (Beast, BaseStation).
For each feed, configure:
AddressandPortFormatConnectionTypeEnabledVisible in Radar Dropdown- optional
Receiver Location
After save:
- verify connection status,
- verify message counters increase,
- verify
AircraftList.jsonis non-empty.
2. Smart profile ports
Known smart profiles:
30003->[ADS-B] BaseStation/Text30005->[ADS-B] Beast/Binary30105->[MLAT] Beast/Binary30106->[MLAT] BaseStation/Text
When one of these ports is entered, feed editor pre-applies matching format/MLAT defaults.
3. MLAT options
Feed-level MLAT controls:
MLAT Feedforces all positions from feed to be treated as MLAT-derived.- Use
MLAT Feedonly for dedicated MLAT streams without reliable MLAT marker tagging. - For mixed ADS-B + MLAT streams, keep
MLAT Feeddisabled and rely on per-message MLAT detection. Assume DF18 CF1 = ICAOis experimental and should be enabled only for known-compatible sources.
4. Quick verification
- open aircraft detail panel,
- check
Position Source(MLAT positionorADS-B position), - compare behavior before and after MLAT option changes.
5. UI visibility note
Visible in Radar Dropdown controls whether a feed appears in frontend All feeds / feed selector.
10. Feed Filter
1. What Feed Filter does
Feed Filter filters messages before they are propagated to the rest of the system.
2. Main options
Enable Feed Filterenables/disables filtering globally.Prohibit MLAT Positionsstrips MLAT lat/lon/track from BaseStation and drops MLAT Mode-S frames.Block Unfilterable Feedsblocks passthrough/raw feeds that cannot be filtered per message.
3. ICAO filter mode
Blocklist(ProhibitIcaos=true): ICAOs in list/ranges are blocked.Allowlist(ProhibitIcaos=false): only ICAOs in list/ranges are allowed.- Individual ICAO entries must be exactly 6 hex characters.
- ICAO ranges are inclusive (
startandendincluded).
4. Apply behavior
- no service restart required,
- settings are hot-reloaded,
- frontend/admin message indicates changes usually become visible within 2-5 minutes.
5. Safe rollout sequence
- verify raw feed flow first (without filter),
- enable filter with minimal scope,
- validate map and list output after each step,
- only then add additional ICAO rules/ranges.
11. Merged Feeds
1. Purpose
Merged Feeds build one logical output from multiple source feeds.
Recommended model:
- keep physical sources in
Feeds, - expose combined output via merged feeds where needed.
2. Merged feed options
Each merged feed has:
NameSource Feeds(receiverIds)EnabledVisible in Radar DropdownICAO Timeout (ms)Ignore Aircraft with No Position
3. Runtime logic
For each ICAO:
- one source feed is selected as active owner,
- duplicate frames from other sources are suppressed,
- if active source is silent longer than
ICAO Timeout, ownership may switch to another source.
4. ID namespace
Merged feed IDs use dedicated range starting from 10000, reducing collision risk with regular feed IDs.
5. Workflow notes
- Feed editor contains shortcut
Add to merged feedfor smart-profile ports. - Final source assignment should be verified in
Merged Feedspanel. - Merged feeds can be selected as source in
Rebroadcast Servers.
12. Resources: Flags and Silhouettes
1. Upload packages
Typical uploads:
OperatorFlags.zip(orAirlineLogos.zip) + optionalOperatorFlagsList.csvDVSilhouettes.zip(orSilhouettes.zip) + optionalSilhouettes.csv
Supported image formats:
.bmp.png
2. Runtime lookup logic
Operator flags:
- frontend requests
/api/images/operator-flags/{operatorCode}.png?icaoType={type}, - lookup priority is
OPERATOR-ICAOTYPEfirst, thenOPERATOR.
Silhouettes:
- frontend requests
/api/images/silhouette/{icaoType}.png, - lookup first uses
Silhouettes.csv, - fallback tries direct
DVSilhouettes/{icaoType}.bmp/pngfile.
If resource is not found, API returns transparent image instead of broken image icon.
3. CSV behavior on upload
- separately uploaded CSV has priority over CSV found inside ZIP,
- for
flags, if CSV is missing system can regenerateOperatorFlagsList.csvfrom image files, - for
silhouettes, provideSilhouettes.csvfor deterministic mapping.
4. Verification after upload
- check
Loadedcounters in admin panel, - verify operator flags in list/detail,
- verify silhouettes in aircraft detail panel,
- hard refresh browser if old cache is still used.
13. Custom Operator Logo
1. Naming and priority
Allowed naming patterns:
- generic logo:
OPERATOR.bmporOPERATOR.png - type-specific logo:
OPERATOR-ICAOTYPE.bmporOPERATOR-ICAOTYPE.png
Runtime priority:
- type-specific logo is preferred,
- generic logo is fallback.
2. Validation rules
- file type must be
.bmpor.png, - file size limit is
2 MB, - required aspect ratio is
17:4, - template size is
85x20, - if image has valid ratio but larger dimensions, explicit downscale confirmation is required,
- operator code accepts
A-Z,0-9,@,.,_,+,-(2-40chars), - optional ICAO type accepts
A-Z,0-9(2-12chars).
3. Overwrite behavior
- if target logo already exists and
overwrite=false, upload returns conflict, - when saving one extension, counterpart extension for same key is removed to keep deterministic lookup.
4. Storage and metadata
- files are stored in
Images/AirlineLogos, - upload metadata is tracked in
custom-operator-flags.json, - after upload/delete,
OperatorFlagsList.csvis synchronized, - resource service is reloaded immediately.
14. Aircraft & Operator Colors
1. Color priority chain
Marker color priority:
Aircraft Colorsby ICAO hex has highest priority,- if missing,
Operator Colorsis used, - if both missing, default marker color is used.
2. Operator color resolution
Operator Colors lookup order:
- first 3 characters of callsign,
operatorFlagCodefrom aircraft database record.
3. Visual modifiers
Color by operatorin label config must be enabled for custom tinting.- Emergency squawk rendering forces emergency red.
- Selected marker style can force yellow selection (unless
preservemode is used).
4. Admin/API behavior
- both mappings are upsert-style (
PUTcreates or updates existing key), - mappings are persisted in data directory JSON files,
- stored mappings are sorted by key on save.
5. Quick diagnostic checklist
- verify key format (
ICAO hexfor Aircraft Colors, operator code for Operator Colors), - verify
Color by operatoris enabled, - remember Aircraft Colors overrides Operator Colors,
- verify emergency/selection state is not masking expected tint.
15. AircraftDB Editor & Custom Photos
AircraftDB Editor and Custom Photos
1. AircraftDB Editor workflow
- search supports ICAO, registration, owner, manufacturer, and type,
- search returns up to 50 results,
- selecting row loads full record by
AircraftID, - create/update/delete operations refresh database lookup cache.
2. Duplicate ModeS behavior
ModeSis unique (ICAO hex),- creating/updating with existing
ModeSreturns conflict (DUPLICATE_MODES), - UI shows conflict warning and offers
Load existing aircraft, - recommended path is to load existing record and update it instead of creating duplicate.
3. Custom aircraft photo upload
Requirements:
- valid ICAO hex (
[0-9A-F]{6}), - allowed formats:
PNG,JPG/JPEG,WEBP,BMP, - max size:
8 MB, - image signature is validated server-side.
Storage behavior:
- stored path:
Images/AircraftPhotos/{ICAO}.{ext}, - uploading new custom photo removes previous custom variants for same ICAO.
4. Display priority logic
Aircraft detail photo source order:
- custom local aircraft photo,
- PlaneSpotters fallback.
Deleting custom photo restores PlaneSpotters fallback behavior.