mirror of
https://github.com/hyperknot/openfreemap.git
synced 2026-05-21 14:02:15 +00:00
docs, readme
This commit is contained in:
12
.ruff.toml
12
.ruff.toml
@@ -2,7 +2,9 @@ target-version = "py310"
|
|||||||
line-length = 100
|
line-length = 100
|
||||||
extend-exclude = ["temp"]
|
extend-exclude = ["temp"]
|
||||||
|
|
||||||
select = [
|
|
||||||
|
|
||||||
|
lint.select = [
|
||||||
"E", # pycodestyle errors
|
"E", # pycodestyle errors
|
||||||
"W", # pycodestyle warnings
|
"W", # pycodestyle warnings
|
||||||
"F", # pyflakes
|
"F", # pyflakes
|
||||||
@@ -18,11 +20,12 @@ select = [
|
|||||||
'DTZ', # flake8-datetimez, https://beta.ruff.rs/docs/rules/#flake8-datetimez-dtz
|
'DTZ', # flake8-datetimez, https://beta.ruff.rs/docs/rules/#flake8-datetimez-dtz
|
||||||
]
|
]
|
||||||
|
|
||||||
ignore = [
|
lint.ignore = [
|
||||||
'A003',
|
'A003',
|
||||||
'E501',
|
'E501',
|
||||||
'E711',
|
'E711',
|
||||||
'E712',
|
'E712',
|
||||||
|
# 'E721', # type comparison
|
||||||
'E741',
|
'E741',
|
||||||
'F401', # unused imports
|
'F401', # unused imports
|
||||||
'F841',
|
'F841',
|
||||||
@@ -36,9 +39,10 @@ ignore = [
|
|||||||
[format]
|
[format]
|
||||||
quote-style = "single"
|
quote-style = "single"
|
||||||
|
|
||||||
[isort]
|
[lint.isort]
|
||||||
known-first-party = ["ssh_lib"]
|
known-first-party = ["ssh_lib"]
|
||||||
lines-after-imports = 2
|
lines-after-imports = 2
|
||||||
|
|
||||||
[flake8-comprehensions]
|
[lint.flake8-comprehensions]
|
||||||
allow-dict-calls-with-keyword-arguments = true
|
allow-dict-calls-with-keyword-arguments = true
|
||||||
|
|
||||||
|
|||||||
13
README.md
13
README.md
@@ -73,7 +73,7 @@ You can run `./host_manager.py --help` to see which options are available. Some
|
|||||||
|
|
||||||
_note: Tile generation is 100% optional, as we are providing the processed full planet files for public download._
|
_note: Tile generation is 100% optional, as we are providing the processed full planet files for public download._
|
||||||
|
|
||||||
The `tile_gen` scripts downloads a full planet OSM extract and runs it through Planetiler.
|
The `tile_gen` script downloads a full planet OSM extract and runs it through Planetiler.
|
||||||
|
|
||||||
The created .mbtiles file is then extracted into a Btrfs partition image using the custom [extract_mbtiles](scripts/tile_gen/extract_mbtiles) script. The partition is shrunk using the [shrink_btrfs](scripts/tile_gen/shrink_btrfs) script.
|
The created .mbtiles file is then extracted into a Btrfs partition image using the custom [extract_mbtiles](scripts/tile_gen/extract_mbtiles) script. The partition is shrunk using the [shrink_btrfs](scripts/tile_gen/shrink_btrfs) script.
|
||||||
|
|
||||||
@@ -87,9 +87,9 @@ A very important part, probably needs the most work in the long term future.
|
|||||||
|
|
||||||
Round Robin DNS based load balancer, script for health checking and updating records.
|
Round Robin DNS based load balancer, script for health checking and updating records.
|
||||||
|
|
||||||
Pushed warnings to a Telegram bot.
|
Pushes warnings to a Telegram bot.
|
||||||
|
|
||||||
Currently it's running in warning-only mode, DNS updates need manual confirmation.
|
Currently it's running in read-only mode, DNS updates need manual confirmation.
|
||||||
|
|
||||||
## Self hosting
|
## Self hosting
|
||||||
|
|
||||||
@@ -103,7 +103,7 @@ The original idea of this project is to avoid using tile servers altogether. Ins
|
|||||||
|
|
||||||
This replaces a running service with a pure, file-system-level implementation. Since the Linux kernel's file caching is among the highest-performing and most thoroughly tested codes ever written, it delivers serious performance.
|
This replaces a running service with a pure, file-system-level implementation. Since the Linux kernel's file caching is among the highest-performing and most thoroughly tested codes ever written, it delivers serious performance.
|
||||||
|
|
||||||
I run some [benchmarks](docs/quick_notes/http_benchmark.md) on a Hetzner server, the aim was to saturate a gigabit connection. At the end, it was able to serve 30 Gbit on localhost, on a cold nginx cache.
|
I run some [benchmarks](docs/quick_notes/http_benchmark.md) on a Hetzner server, the aim was to saturate a gigabit connection. At the end, it was able to serve 30 Gbit on loopback interface, on cold nginx cache.
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
@@ -158,7 +158,6 @@ Bigger tasks:
|
|||||||
Tasks outside the scope of this project:
|
Tasks outside the scope of this project:
|
||||||
|
|
||||||
- Make a successor for the OpenMapTiles schema.
|
- Make a successor for the OpenMapTiles schema.
|
||||||
- Docker image for running this self-hosted on any machine.
|
|
||||||
|
|
||||||
#### Dev setup
|
#### Dev setup
|
||||||
|
|
||||||
@@ -166,7 +165,9 @@ See [dev setup docs](docs/dev_setup.md).
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
v0.1 - everything works. 1 server for tile gen, 2 servers for HTTP host. <- we are here!
|
##### v0.1
|
||||||
|
|
||||||
|
Everything works. 1 server for tile gen, 2 servers for HTTP host. Load-balancing script is running in a read-only mode.
|
||||||
|
|
||||||
## Attribution
|
## Attribution
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ def delete_record(zone_id, *, id_: str, cloudflare_api_token: str):
|
|||||||
res = requests.delete(
|
res = requests.delete(
|
||||||
f'https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records/{id_}',
|
f'https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records/{id_}',
|
||||||
headers=headers,
|
headers=headers,
|
||||||
json=dict(),
|
json={},
|
||||||
)
|
)
|
||||||
res.raise_for_status()
|
res.raise_for_status()
|
||||||
data = res.json()
|
data = res.json()
|
||||||
|
|||||||
@@ -62,14 +62,14 @@ GitHub: [openfreemap](https://github.com/hyperknot/openfreemap) and [openfreemap
|
|||||||
|
|
||||||
## What is the tech stack?
|
## What is the tech stack?
|
||||||
|
|
||||||
The map schema is [OpenMapTiles](https://github.com/openmaptiles/openmaptiles).
|
|
||||||
Special thanks go to [Michael Barry](https://github.com/msbarry) for developing [Planetiler](https://github.com/onthegomap/planetiler). It made it possible to generate the tiles in 5 hours instead of 5 weeks.
|
|
||||||
The [styles](https://github.com/hyperknot/openfreemap-styles) are forked and heavily modified.
|
|
||||||
|
|
||||||
There is no tile server running; only Btrfs partition images with 300 million hard-linked files. This was my idea; I haven't read about anyone else doing this in production, but it works really well.
|
There is no tile server running; only Btrfs partition images with 300 million hard-linked files. This was my idea; I haven't read about anyone else doing this in production, but it works really well.
|
||||||
|
|
||||||
There is no cloud, just dedicated servers. The HTTPS server is nginx on Ubuntu.
|
There is no cloud, just dedicated servers. The HTTPS server is nginx on Ubuntu.
|
||||||
|
|
||||||
|
Special thanks go to [Michael Barry](https://github.com/msbarry) for developing [Planetiler](https://github.com/onthegomap/planetiler). It made it possible to generate the tiles in 5 hours instead of 5 weeks. The map schema is [OpenMapTiles](https://github.com/openmaptiles/openmaptiles).
|
||||||
|
|
||||||
|
The [styles](https://github.com/hyperknot/openfreemap-styles) are forked and heavily modified.
|
||||||
|
|
||||||
## Domains
|
## Domains
|
||||||
|
|
||||||
`tiles.openfreemap.org` - Cloudflare proxied
|
`tiles.openfreemap.org` - Cloudflare proxied
|
||||||
|
|||||||
@@ -29,9 +29,7 @@
|
|||||||
<a href="https://github.com/hyperknot/openfreemap" target="_blank"
|
<a href="https://github.com/hyperknot/openfreemap" target="_blank"
|
||||||
><img src="github.svg" alt="github" height="28"
|
><img src="github.svg" alt="github" height="28"
|
||||||
/></a>
|
/></a>
|
||||||
<a href="https://x.com/hyperknot" target="_blank"
|
<a href="https://x.com/hyperknot" target="_blank"><img src="x.svg" alt="x" height="28" /></a>
|
||||||
><img src="x.svg" alt="x" height="28"
|
|
||||||
/></a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{main}
|
{main}
|
||||||
|
|||||||
Reference in New Issue
Block a user