Working tegola delpoy
This uses the data from Bonn, Germany which I downloaded from https://github.com/go-spatial/tegola-example-bonn/tree/main
This commit is contained in:
parent
7315b7edba
commit
423c1e6d9f
5 changed files with 118 additions and 0 deletions
57
configs/tegola.toml
Normal file
57
configs/tegola.toml
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
tile_buffer = 64
|
||||
|
||||
[webserver]
|
||||
port = ":9090"
|
||||
|
||||
[cache]
|
||||
type="file" # cache type
|
||||
basepath="/tmp/tegola" # cache specific config
|
||||
|
||||
# register data providers
|
||||
[[providers]]
|
||||
name = "bonn" # provider name is referenced from map layers
|
||||
type = "mvt_postgis" # the type of data provider. currently only supports postgis
|
||||
#uri = "postgres://tegola:supersecret@localhost:5432/tegola?sslmode=prefer" # PostGIS connection string (required)
|
||||
uri = "postgres://tegola:@localhost:/tegola?host=/var/run/postgresql&sslmode=disable" # PostGIS connection string (required)
|
||||
srid = 4326 # The default srid for this provider. If not provided it will be WebMercator (3857)
|
||||
|
||||
|
||||
[[providers.layers]]
|
||||
name = "road"
|
||||
geometry_fieldname = "wkb_geometry"
|
||||
geometry_type="linestring"
|
||||
id_fieldname = "ogc_fid"
|
||||
sql = "SELECT ST_AsMVTGeom(wkb_geometry, !BBOX!) AS wkb_geometry, name, ogc_fid FROM all_roads WHERE wkb_geometry && !BBOX!"
|
||||
|
||||
[[providers.layers]]
|
||||
name = "main_roads"
|
||||
geometry_fieldname = "wkb_geometry"
|
||||
geometry_type="linestring"
|
||||
id_fieldname = "ogc_fid"
|
||||
sql = "SELECT ST_AsMVTGeom(wkb_geometry, !BBOX!) AS wkb_geometry, name, ogc_fid FROM main_roads WHERE wkb_geometry && !BBOX!"
|
||||
|
||||
[[providers.layers]]
|
||||
name = "lakes"
|
||||
geometry_fieldname = "wkb_geometry"
|
||||
geometry_type="polygon"
|
||||
id_fieldname = "ogc_fid"
|
||||
sql = "SELECT ST_AsMVTGeom(wkb_geometry, !BBOX!) AS wkb_geometry, name, ogc_fid FROM lakes WHERE wkb_geometry && !BBOX!"
|
||||
|
||||
[[maps]]
|
||||
name = "bonn"
|
||||
center = [7.0982, 50.7374, 11.0] # set the center of the map so the user is auto navigated to Bonn
|
||||
|
||||
[[maps.layers]]
|
||||
provider_layer = "bonn.road"
|
||||
min_zoom = 10
|
||||
max_zoom = 20
|
||||
|
||||
[[maps.layers]]
|
||||
provider_layer = "bonn.main_roads"
|
||||
min_zoom = 5
|
||||
max_zoom = 20
|
||||
|
||||
[[maps.layers]]
|
||||
provider_layer = "bonn.lakes"
|
||||
min_zoom = 5
|
||||
max_zoom = 20
|
||||
|
|
@ -25,6 +25,7 @@
|
|||
./static-websites.nix
|
||||
./sudo.nix
|
||||
./synapse.nix
|
||||
./tegola.nix
|
||||
./timecardbot.nix
|
||||
./tmux.nix
|
||||
./twenty-crm.nix
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ in {
|
|||
ensureDBOwnership = true;
|
||||
name = databaseUser;
|
||||
}];
|
||||
extensions = ps: with ps; [ h3-pg postgis ];
|
||||
};
|
||||
services.restic.backups."${backupName}-db" = {
|
||||
# We can use this due to overridding restic with unstable
|
||||
|
|
|
|||
58
modules/system/tegola.nix
Normal file
58
modules/system/tegola.nix
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
{ config, configFiles, lib, pkgs, ... }:
|
||||
with lib;
|
||||
|
||||
let
|
||||
databaseName = "tegola";
|
||||
databaseUser = "tegola";
|
||||
group = "tegola";
|
||||
user = "tegola";
|
||||
in {
|
||||
options.myModules.tegola.enable = mkEnableOption "custom tegola configuration";
|
||||
|
||||
config = mkIf config.myModules.tegola.enable {
|
||||
environment = {
|
||||
etc."tegola.toml" = {
|
||||
group = group;
|
||||
source = "${configFiles}/tegola.toml";
|
||||
user = user;
|
||||
};
|
||||
systemPackages = with pkgs; [
|
||||
tegola
|
||||
];
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [ 9090 ];
|
||||
services.postgresql = {
|
||||
enable = true;
|
||||
ensureDatabases = [databaseName];
|
||||
ensureUsers = [{
|
||||
ensureClauses.login = true;
|
||||
ensureDBOwnership = true;
|
||||
name = databaseUser;
|
||||
}];
|
||||
extensions = ps: with ps; [ h3-pg postgis ];
|
||||
};
|
||||
systemd.services."tegola" = {
|
||||
after=["network.target" "network-online.target"];
|
||||
description="Tegola Vector Tile";
|
||||
path = [ pkgs.tegola ];
|
||||
requires=["network-online.target"];
|
||||
serviceConfig = {
|
||||
Group = group;
|
||||
ExecStart = "${pkgs.tegola}/bin/tegola serve --config /etc/tegola.toml";
|
||||
PrivateTmp = true;
|
||||
TimeoutStopSec = "5s";
|
||||
Type = "simple";
|
||||
User = user;
|
||||
WorkingDirectory = "/tmp";
|
||||
};
|
||||
wantedBy = ["multi-user.target"];
|
||||
};
|
||||
users = {
|
||||
groups."${group}" = {};
|
||||
users."${user}" = {
|
||||
group = group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -75,4 +75,5 @@ in {
|
|||
myModules.asterisk.enable = true;
|
||||
myModules.caddy.enable = true;
|
||||
myModules.nidus-sync.enable = true;
|
||||
myModules.tegola.enable = true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue