Add comprehensive README with project status, roadmap, and infrastructure docs

This commit is contained in:
Aelith 2026-06-16 13:52:55 -04:00
parent 210cf6b73a
commit 52f015e8e2

150
README.md Normal file
View file

@ -0,0 +1,150 @@
# Nerdhalla Valheim World Map
**Vanilla Valheim community server tools** — no mods, no BepInEx. Everything runs off the world save file.
## 🌐 Live Sites
| Site | URL | Purpose |
|---|---|---|
| **Nerdhalla Community** | https://nerdhalla.nerdcade.cc | Map viewer, POI browser, server status |
| **Forgejo (source)** | https://git.sweeney.fyi/aelith/valheim-map | Git repo for all code |
## 🗺️ What's Here
### Data Pipeline
| Step | Script | Output |
|---|---|---|
| Decode tiles | `decode_valheim_tiles.py` | 16 × 1024×1024 PNGs (composite, biome, height) |
| Stitch tiles | `valheim_decode_tiles.py` | 4096×4096 world images |
| Build POI DB | `build_db.py` | SQLite DB with 11,309 locations |
| Build viewer | `build_viewer.py` | Leaflet HTML with 3 map layers |
| Parse .db | `parse_valheim_db.py` | ZPackage → JSON conversion |
### Web Viewer (`index.html`)
- Leaflet map with 3 layers: composite, biome, height
- 11,309 POI markers with category icons (boss, dungeon, resource, etc.)
- Coordinate display on hover
- POI browser with search + category filter
- Server status indicator (checks Nerdcade via SSH)
### API Server (`api_server.py`)
- `GET /api/status` — Nerdcade server online/offline check
- `GET /api/pois?limit=N&search=X&category=Y` — POI queries
### Infrastructure
- **Caddy** — reverse proxy with auto-TLS for nerdhalla.nerdcade.cc + git.sweeney.fyi
- **Forgejo** — bare metal (migrated from Docker), git.sweeney.fyi:3000
- **nerdhalla-api** — systemd service, port 8081
## 📊 World Stats
| Property | Value |
|---|---|
| Seed | `yzZ5fr2tGa` |
| Map Size | ~10 km × 10 km (4096 × 4096 px) |
| Biomes | Meadows, Black Forest, Swamp, Mountain, Plains, Ocean, Mistlands |
| Total POIs | 11,309 |
| Best Tar Pit | (1210, -4159) — 5 tar pits within 200m |
## 🚧 Roadmap
### Phase 1 — POI Database ✅
- [x] Decode 16 map tiles from world save
- [x] Stitch into 4096×4096 composite/biome/height images
- [x] Build SQLite DB from `locations.json` (11,309 POIs)
- [x] Spatial queries for base location hunting
### Phase 2 — Web Viewer ✅
- [x] Leaflet map with 3 tile layers
- [x] POI markers with category icons
- [x] Search + category filter
- [x] Coordinate display
- [x] Server status indicator
- [x] TLS via Caddy
- [x] API backend for POI queries
### Phase 3 — Fog-of-War ⏳
- [ ] **Blocked:** Need player `.fch` files from local machines
- [ ] Extract explored/unexplored bitmap per player
- [ ] Overlay on map viewer
- [ ] Merge multiple players' exploration data
### Phase 4 — Cartography Sync 🔮
- [ ] **Undecided approach:**
- Option 1: ServerSideMap mod (requires BepInEx — some players don't want this)
- Option 2: Periodic merge script (pull `.fch` files, merge explored data)
- Option 3: Cartography table automation (in-game solution)
### Phase 5 — Automation 🔮
- [ ] Cron job to periodically pull `Nerdhalla.db` from Nerdcade
- [ ] Auto-regenerate map tiles on world update
- [ ] Push updated data to site
## 🛠️ Infrastructure
### Services on Boston-VPS
| Service | Type | Port | Notes |
|---|---|---|---|
| Caddy | Bare metal | 80/443 | Reverse proxy, auto-TLS |
| Forgejo | Bare metal | 3000 | Git server, git.sweeney.fyi |
| nerdhalla-api | Bare metal | 8081 | Python API server |
| Hermes Gateway | Bare metal | 8642/8644 | Fleet COO agent |
### Docker Cleanup (June 2026)
- Forgejo migrated from Docker to bare metal (saved ~450 MB virtual overhead)
- Dead containers removed: `hermes-fa98be67` (exited), `vllm-compression` (never started)
- 9.2 GB reclaimed from unused images
- Docker still installed but only used if needed
## 🔧 Quick Commands
```bash
# Restart API
sudo systemctl restart nerdhalla-api
# Restart Forgejo
sudo systemctl restart forgejo
# Restart Caddy
sudo systemctl reload caddy
# View logs
sudo journalctl -u nerdhalla-api -n 50 --no-pager
sudo journalctl -u forgejo -n 50 --no-pager
sudo tail -f /var/log/caddy/nerdhalla.log
```
## 📁 File Layout
```
/var/www/nerdhalla/ # Site root
├── index.html # Main site
├── api_server.py # Python API
├── world_composite.png # 4096×4096 map images
├── world_biome.png
├── world_height.png
├── 00-00_*.png # Individual tile images (16 tiles × 3 layers)
└── ...
/srv/forgejo/ # Forgejo data
└── data/
├── gitea/ # Config, DB, attachments
└── git/repositories/ # Git repos
/etc/caddy/
├── Caddyfile # Main config (imports sites-enabled/)
└── sites-enabled/
├── nerdhalla.conf # nerdhalla.nerdcade.cc
└── git.conf # git.sweeney.fyi
```
## 🔗 Related
- **Nerdcade server:** `aelith@100.86.206.39:46129`
- **World saves:** `/home/amp/.ampdata/instances/Valheim/.config/unity3d/IronGate/Valheim/worlds_local/`
- **Forgejo API token:** stored in Hermes memory