Nikolay Tatarinov dda35baeca Implement HTTP timeout configurations and enhance API documentation
- Added optional HTTP server timeout configurations (`HNHMAP_READ_TIMEOUT`, `HNHMAP_WRITE_TIMEOUT`, `HNHMAP_IDLE_TIMEOUT`) to `.env.example` and updated the server initialization in `main.go` to utilize these settings.
- Enhanced API documentation for the `rebuildZooms` endpoint to clarify its background processing and polling mechanism for status updates.
- Updated `configuration.md` to include new timeout environment variables for better configuration guidance.
- Improved error handling in the client for large request bodies, ensuring appropriate responses for oversized payloads.
2026-03-04 11:59:28 +03:00

hnh-map

Automapper server for HnH, (mostly) compatible with https://github.com/APXEOLOG/hnh-auto-mapper-server

The Docker image is built from sources in this repository.

Ports: In production the app listens on 8080. For local development with docker-compose.dev.yml, the frontend runs on 3000 and the backend on 3080 (to avoid conflicts with other services on 8080).

Run it via whatever you feel like. The app expects /map to be mounted as a volume (database and images are stored here):

docker build -t hnh-map .
docker run -v /srv/hnh-map:/map -p 80:8080 hnh-map

Set it up under a domain name however you prefer (nginx reverse proxy, traefik, caddy, apache, whatever) and point your auto-mapping supported client at it (like Purus pasta).

Documentation

  • Architecture — high-level design and backend layout (cmd/hnh-map, internal/app)
  • API — HTTP API (auth, cabinet, map data, admin)
  • Configuration — environment variables and flags
  • Development — local run, Docker Compose dev, build
  • Deployment — Docker, reverse proxy, backups

See also CONTRIBUTING.md for development workflow.

In production the app serves static assets from the frontend/ directory; that directory is the build output of the app in frontend-nuxt/ (see docs/development.md).

Only other thing you need to do is setup users and set your zero grid.

First login: username admin, password from HNHMAP_BOOTSTRAP_PASSWORD (in dev Compose it defaults to admin). Go to the admin portal and hit "ADD USER". Don't forget to toggle on all the roles (you'll need admin, at least)

OAuth (Google)

To enable "Login with Google", set HNHMAP_OAUTH_GOOGLE_CLIENT_ID, HNHMAP_OAUTH_GOOGLE_CLIENT_SECRET, and HNHMAP_BASE_URL (your app's full URL). Create OAuth credentials in Google Cloud Console and add the callback URL {HNHMAP_BASE_URL}/map/api/oauth/google/callback to Authorized redirect URIs. See deployment.md for details.

Once you create your first user, you'll get kicked out and have to log in as it. The admin user will be gone at this point. Next you'll want to add users for anyone else, and then you'll need to create your tokens to upload stuff.

You'll probably want to set the prefix (this gets put at the front of the tokens, and should be something like http://example.com) to make it easier to configure clients.

The first client to connect will set the 0,0 grid, but you can wipe the data in the admin portal to reset (and the next client to connect should set a new 0,0 grid)

Roles

  • Map: View the map
  • Upload: Send character, marker, and tile data to the server
  • Admin: Modify server settings, create and edit users, wipe data
Description
No description provided
Readme 609 KiB
Languages
Go 42.3%
Vue 30.6%
TypeScript 22.5%
CSS 4.1%
Makefile 0.3%
Other 0.1%