Minetrack/README.md

94 lines
3.1 KiB
Markdown
Raw Normal View History

2020-05-06 00:07:40 +00:00
<p align="center">
2023-12-30 23:03:54 +00:00
<img width="120" height="120" src="assets/images/logo.svg">
2020-05-06 00:07:40 +00:00
</p>
2020-05-06 00:07:40 +00:00
# Minetrack
2023-12-30 23:03:54 +00:00
2020-05-06 00:07:40 +00:00
Minetrack makes it easy to keep an eye on your favorite Minecraft servers. Simple and hackable, Minetrack easily runs on any hardware. Use it for monitoring, analytics, or just for fun. [Check it out](https://minetrack.me).
Minetrack 5 (#143) * remove unused #getServer methods, inline #roundToPoint * replace #safeName regex with incremental ids * remove legacy #setInterval based #updateMojangServices handling * add Tooltip class, move faviconSize to css instead of js * move server id assignment to ServerRegistry * move printPort logic to formatMinecraftServerAddress, add MINECRAFT_DEFAULT_PORTS * simplify ping tracking * rework perc-bar tooltip to not use mousemove event * begin moving graphing logic to GraphDisplayManager * begin merge graph point tracking into graphDisplayManager * centralizing graphing logic into GraphDisplayManager * properly reset GraphDisplayManager when handling disconnects * move individual server graph data into ServerGraph class * constantly run sortServers loop to simplify logic * inline #updateMojangServices method * resize performance improvements * remove legacy bootTime refresh behavior, require manual user refresh * move class defs to core.js * remove unused #isGraphDataVisible arg * remove #toggleControlsDrawer * dont call #updatePercentageBar in #updateServerStatus calls * centralize caption handling * inline #msToTime * remove hackish seconds handling for timestamps * reduce #forEach calls with filter/map * safely fallback to errorMessage if errno/description does not match * Add /images/missing_favicon.png path instead of putting base64 in js * remove debug * cleanup mojang status handling * move historyPlot instance into GraphDisplayManager * cleanup checkbox html generation * cleanup #updateServerStatus * fix up tooltip styling * move jquery code out of core.js * fix add server race condition when initially pinging servers * send error.placeholder=true for pending pings so the frontend can discard later * filter placeholder pings sent by the backend * del assets/images/logo_2014.png * move graph code into graph.js * merge pingTracker into ServerRegistry+ServerGraph * remove todos * simplify getVisibleGraphData * fix potential sortServers race condition when adding * use #show instead of #fadeIn(0) * remove publicConfig.json, send over socket * update docs/CHANGELOG.md * getOrAssign -> getOrCreateId * dont delete graph controls when disconnected * early work cleaning up HTML+CSS structures * cleanup server css elements * cleanup graph control css elements * move base CSS color values into @media(prefers-color-scheme: light) * move CSS magic colors to vars * reduce duplicated CSS color rules * inline body text color CSS * WIP replacing jQuery calls with vanilla JS * WIP replacing jQuery calls with vanilla JS * replace getElementsByClass with querySelectorAll * typeMarker -> serverTypeHTML * use jQuery slim for remaining flot.js dependency * merge setAllGraphVisibility into GraphDisplayManager * break apart element update and redraw logic * add eslint + parcel bundler * auto lint assets/js when building * statically serve favicons/ for faviconOverrides outside of dist/ * only send favicons when changed * move faviconOverride behavior into entry in servers.json * add warning to backend server files * remove .server-favicon-missing class * add Minetrack 5 migration guide * add npm run build step to install.sh * adjust package.json version to 5.0.0 * remove js references from index.html * move logic and behavior out of site.js * cleanup ServerRegistry methods * prevent multiple history graph redraws * add comments * cleanup #addServer usage, move to App * move graph control bindings into GraphDisplayManager * site.js -> main.js, core.js -> servers.js * move Tooltip/Caption into util.js * spacing tweak * format index.html * ensure the frontend does not handling updateHistoryGraph events * prevent versions/record updates if the same value * avoid empty percbar updates, ensure versions are sorted * only include main.js ref in index.html * serve minified copy of font awesome directly * bundle icons.css into main.css, remove Open Sans 400 * add new SVG logo * update docs/CHANGELOG.md * new design, server version grouping * remove start.sh call from install.sh * move graph controls into header with new button * move #handleSettingsToggle back to graph * fix legacy code behavior of currentVersionIndex applying globally * fix header text color in light mode * fix mojang status text color in light mode * fix toggle settings and checkbox colors * tweak button hover color * tweak button hover color * add new status-overlay to avoid complicated DOM management during loading * fix initial graph rendering bug * add comments * update default graph tick sizes * prevent #tooltip from overflowing page * remove localhost spec * prevent minor connection errors from reshuffling layout * update CHANGELOG.md * add message/button for manually loading historical graph on mobile devices * send isGraphVisible to frontend to prevent alert if logToDatabase: false * send timestamp data with record * update docs/CHANGELOG.md * remove clock icon * remove 24h peak timestamp * Only check favicon if present * safely handle undefined/empty knownVersions in #formatMinecraftVersions * merge config.versions and minecraft.json into minecraft_versions.json, simplify index matching behavior * remove localhost url in socket.io config * stub methods/linkage for FocusManager * add #isObjectEqual hack, add event proxying to FocusManager * wip extended stats box * remove server-type badging * tweak mojang unstable color * serve socket.io-client using parcel * fix incorrect mojang status colors * remove legacy capitalization design * redesign focus boxes * update docs/CHANGELOG.md * remove localhost ref * color clock icon * use background-color for hover effect, remove unused var * improve stats focus box icons * change mojang sessions icon to globe * Add favorites system * remove focus boxes * update docs/CHANGELOG.md * remove focus icons from font * simplify graph related event binding * Add Sort By button * store current sortOption in localStorage * update docs/CHANGELOG.md * move magic 0 sortOption to SORT_OPTION_INDEX_DEFAULT * remove localhost ref * merge #settings-toggle, #sort-by and .mojang-status CSS * remove .focus-box CSS * use sortedServerIds for _lastSortedServers * tweak --color-blue * new missing_favicon design to match logo * edit footer CSS/text, remove github icon * replace player count diff counter with GROWTH sort option * italize non-default sort options * add Only Favorites button to auto sync favorites to the visible graph data * add icons to graph control buttons * update docs/CHANGELOG.md * use * to denote non-default sort option instead * remove localhost url in socket.io config * add value highlighting to make sort by easier to read * remove last remaining uppercase text * remove serverTypesVisible from config.json * simplify header CSS, fix spacing with logToDatabase=false * fix inverted text color on highlighted values * remove localhost url in socket.io config * break header into rows on mobile devices Co-authored-by: Hugo Manrique <contact@hugmanrique.me>
2020-04-20 00:27:59 +00:00
2023-12-30 23:03:54 +00:00
### This project is not actively supported
2020-05-06 00:07:40 +00:00
This project is not actively supported. Pull requests will be reviewed and merged (if accepted), but issues _might_ not be addressed outside of fixes provided by community members. Please share any improvements or fixes you've made so everyone can benefit from them.
### Features
2023-12-30 23:03:54 +00:00
2020-05-06 00:07:40 +00:00
- 🚀 Real time Minecraft server player count tracking with customizable update speed.
- 📝 Historical player count logging with 24 hour peak and player count record tracking.
- 📈 Historical graph with customizable time frame.
- 📦 Out of the box included dashboard with various customizable sorting and viewing options.
- 📱(Decent) mobile support.
- 🕹 Supports both Minecraft Java Edition and Minecraft Bedrock Edition.
### Community Showcase
2023-12-30 23:03:54 +00:00
2020-05-06 00:07:40 +00:00
You can find a list of community hosted instances below. Want to be listed here? Add yourself in a pull request!
2023-12-30 23:03:54 +00:00
- <https://mc.fascinated.cc/>
2020-05-06 00:07:40 +00:00
## Updates
2023-12-30 23:03:54 +00:00
2020-05-06 00:07:40 +00:00
For updates and release notes, please read the [CHANGELOG](docs/CHANGELOG.md).
2020-05-06 00:07:40 +00:00
**Migrating to Minetrack 5?** See the [migration guide](docs/MIGRATING.md).
2016-02-24 01:44:15 +00:00
2020-05-06 00:07:40 +00:00
## Installation
2023-12-30 23:03:54 +00:00
2020-05-06 00:07:40 +00:00
1. Node 12.4.0+ is required (you can check your version using `node -v`)
2023-12-30 23:03:54 +00:00
2. Make sure everything is correct in `config.json`.
3. Add/remove servers by editing the `servers.json` file
4. Run `npm install`
5. Run `npm run build` (this bundles `assets/` into `dist/`)
6. Run `node main.js` to boot the system (may need sudo!)
2015-11-09 07:50:45 +00:00
2023-12-30 23:03:54 +00:00
(There's also `install.sh` and `start.sh`, but they may not work for your OS.)
2015-12-11 04:06:27 +00:00
2023-12-30 23:03:54 +00:00
Database logging is disabled by default. You can enable it in `config.json` by setting `logToDatabase` to true.
2020-07-29 10:05:54 +00:00
This requires sqlite3 drivers to be installed.
## Docker
2023-12-30 23:03:54 +00:00
Minetrack can be built and run with Docker from this repository in several ways:
2021-03-30 18:44:54 +00:00
### Build and deploy directly with Docker
2023-12-30 23:03:54 +00:00
2023-12-30 23:32:24 +00:00
```bash
# build image with name minetrack and tag latest
docker build . --tag minetrack:latest
2021-03-30 18:44:54 +00:00
# start container, delete on exit
# publish container port 8080 on host port 80
docker run --rm --publish 80:8080 minetrack:latest
```
2021-03-30 18:44:54 +00:00
2023-12-30 23:03:54 +00:00
The published port can be changed by modifying the parameter argument, e.g.:
- Publish to host port 8080: `--publish 8080:8080`
- Publish to localhost (thus prohibiting external access): `--publish 127.0.0.1:8080:8080`
2021-03-30 18:44:54 +00:00
### Build and deploy with docker-compose
2023-12-30 23:03:54 +00:00
2023-12-30 23:32:24 +00:00
```bash
# build and start service
docker-compose up --build
2021-03-30 18:44:54 +00:00
# stop service and remove artifacts
docker-compose down
```
## Nginx reverse proxy
2023-12-30 23:03:54 +00:00
The following configuration enables Nginx to act as reverse proxy for a Minetrack instance that is available at port 8080 on localhost:
2023-12-30 23:03:54 +00:00
2023-12-30 23:32:24 +00:00
```nginx
server {
server_name minetrack.example.net;
listen 80;
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
}
```