Admin Panel
The admin panel runs at http://localhost:8080 from the server machine, or http://<server-ip>:8080 from any device on the same network. Six sections in the sidebar — quick tour below. Most of the time you won’t need to come back here once your server is set up.
💡 First login. Use the default credentials
admin/admin. The server immediately redirects you to a forced password-change screen — pick a strong one to reach the dashboard. Locked out? See Forgot the admin password at the bottom of this page.
[image] Admin panel home with sidebar visible
Sections at a glance
| Section | What you do here |
|---|---|
| Overview | See server status and system information at a glance. |
| Registered devices | Track which ESP32s have ever connected. |
| Users | Manage accounts on this server, reset forgotten passwords. |
| Settings | Set the server name and ports. |
| Data retention | Configure how long sensor data is kept. |
| Backups | Auto-snapshot the database for safety. |
Overview
The Overview tab is the dashboard of the admin panel. It refreshes every 10 seconds.
Server status shows a live count of accounts, projects, devices, devices currently online, app sessions, and TCP connections from devices.
System information shows the local IP, the HTTP port, the TCP port, server uptime, version, database size on disk, Java runtime, and OS.
💡 The Local IP shown here is what your phone needs in the app’s connection sheet.
[image] Overview screen with Server status and System Information
Registered devices
Lists every device that has ever connected to your server, across all projects.
Each row shows the device Name, the Project ID it belongs to (truncated for readability), its Status (Online / Offline), and Last seen — the timestamp of the latest connection.
A device is Online when its TCP socket to the server is active. Offline means the device disconnected at the timestamp shown — your sketch may have rebooted, lost Wi-Fi, or simply been powered off.
[image] Registered devices table
Users
Lists every account on this server.
Each row shows the Username, Role (admin or regular), and Created date. A Reset password button opens a small form where you type the new password yourself (minimum 8 characters), confirm, and the change is applied immediately. You then communicate the new password to the user the way you choose — there’s no email-based reset on a self-hosted server.
This flow works for any account, including your own admin account: if you want to rotate your admin password, just click Reset password on your own row and set a new one. The ~/.instantiot/reset-admin sentinel file (see Forgot the admin password at the bottom of this page) is only needed when you’re locked out and can’t log in to use this button.
[image] Users table with Reset password buttons [image] Reset password dialog with the new-password input field
Settings
Server-wide configuration in three fields.
- Server name — the name your phone sees in the app’s discovery list.
- HTTP port — the port the admin panel and the app use. Default
8080. - TCP port — the port your ESP32 devices connect to. Default
9001.
Saving changes the configuration and offers a Restart server button. After restart, connected devices reconnect automatically.
[image] Settings screen with port configuration
Data retention
The server stores everything your devices push. To prevent the database from growing forever, the server summarizes old measurements and trims the raw data on a schedule.
| Field | Default | What it controls |
|---|---|---|
| Keep every measurement for (days) | 7 | Full-detail readings — kept this many days, then replaced by summaries. |
| Keep text events for (days) | 1 | Non-numeric events such as messages or logs. |
| Save a measurement at most every (seconds) | 5 | Throttles disk writes when a sensor pushes very fast. Your app still sees real-time. Use 0 to save every reading. |
| Keep minute-by-minute summaries for (days) | 90 | One summary point per minute. |
| Keep hourly summaries for (days) | 365 | One summary point per hour. |
| Keep daily summaries for (days) | -1 | One per day. -1 means forever. |
| Refresh summaries every (minutes) | 60 | How often summaries are rebuilt and old data is cleaned up. |
Changes apply automatically — no restart needed.
[image] Data retention configuration
Backups
Automatic snapshots of the database, so you can roll back if something goes wrong.
Three controls: an Auto-backup toggle, an Interval (24 h default), and a Keep N latest retention (30 default). A Backup now button takes a manual snapshot at any time.
Below, the list of available snapshots shows the date, size, and a Restore button per snapshot.
⚠️ A Restore replaces the current database with the snapshot. The server stops, restores, and restarts. Plan accordingly.
[image] Backups screen with snapshot list
Forgot the admin password
There is no network-based recovery — by design, the admin panel has zero attack surface for password reset. Recovery is filesystem-based: anyone who can write to the server’s data directory clearly owns the machine.
On the server machine:
touch ~/.instantiot/reset-admin # or the equivalent path for your install
# then restart the server
On the next boot, the admin password is reset to admin and the marker file is deleted. Log in with admin / admin — the server will redirect you to the forced password-change screen, where you can set a new strong one.
The exact path depends on your install:
| Platform | Path |
|---|---|
| macOS / Windows (per-user app) | ~/.instantiot/reset-admin (%USERPROFILE%\.instantiot\reset-admin on Windows) |
| Linux / Raspberry Pi / Arduino Uno Q (systemd) | /var/lib/instantiot/.instantiot/reset-admin |
Notes
- The admin panel listens on all network interfaces. Any device on the same network can reach it at
http://<server-ip>:8080. To restrict access to localhost only, configure your firewall accordingly. - Most configuration changes (data retention, backups) apply without a restart. Changes to ports and server name require a restart (button in Settings).
Next
→ Apps / Server Mode — Connect from your phone.
→ Library / Manage Connections — Connect your ESP32 from a sketch.
→ Pick your install platform from Overview if you haven’t installed yet.