App.config.sample in repo missing

Trying to follow the installation instructions to build a non-docker installation, I got stuck. The openrouteservice/WebContent/WEB-INF/app.config.sample is missing in the repo…

Where do I find it?

I found one here:
../openrouteservice/src/main/resources/app.config
Unfortunately, that does not solve all my problems.
My profiles are not recognized and the graphs folder does not seem to exist. I know that the graphs root can be edited via app.config, but related to which parent folder?
I set it in app.config to openrouteservice/graphs/
But I never find it anywhere, and the log gives me these errors:

 Starting Application v6.0.0 on ors with PID 668 (/var/lib/tomcat8/webapps/ors/WEB-INF/classes started by tomcat8 in /var/lib/tomcat8)
2020-03-07 22:35:39,638 DEBUG [ors.Application] - Running with Spring Boot v2.0.4.RELEASE, Spring v5.0.8.RELEASE
2020-03-07 22:35:39,657 INFO [ors.Application] - No active profile set, falling back to default profiles: default
2020-03-07 22:35:58,600 INFO [ors.Application] - Started Application in 25.197 seconds (JVM running for 44.748)
2020-03-07 22:35:59,489 INFO [routing.RoutingProfileManager] -  Total - 10,00 GB, Free - 9,92 GB, Max: 10,00 GB, Used - 76,44 MB
2020-03-07 22:35:59,501 INFO [routing.RoutingProfileManager] -
2020-03-07 22:35:59,607 INFO [routing.RoutingProfileManager] - ====> Initializing profiles from 'openrouteservice/src/main/files/bremen-latest.osm.pbf' (1 threads) ...
2020-03-07 22:35:59,608 INFO [routing.RoutingProfileManager] -
2020-03-07 22:35:59,632 INFO [routing.RoutingProfileManager] -
2020-03-07 22:35:59,717 INFO [routing.RoutingProfile] - [1] Profiles: 'driving-car', location: 'openrouteservice/graphs/car'.
2020-03-07 22:36:00,564 ERROR [routing.RoutingProfileManager] - java.util.concurrent.ExecutionException: java.lang.RuntimeException: Directory openrouteservice/graphs/car does not exist and cannot be created to place lock file there: openrouteservice/graphs/car/gh.lock
2020-03-07 22:36:00,565 ERROR [routing.RoutingProfileManager] - Failed to initialize RoutingProfileManager instance.
java.util.concurrent.ExecutionException: java.lang.RuntimeException: Directory openrouteservice/graphs/car does not exist and cannot be created to place lock file there: openrouteservice/graphs/car/gh.lock
        at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[?:1.8.0_242]
        at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[?:1.8.0_242]
        at org.heigit.ors.routing.RoutingProfileManager.initialize(RoutingProfileManager.java:162) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfileManager.getInstance(RoutingProfileManager.java:57) ~[classes/:6.0.0]
        at org.heigit.ors.servlet.listeners.ORSInitContextListener.lambda$contextInitialized$0(ORSInitContextListener.java:40) ~[classes/:6.0.0]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242]
Caused by: java.lang.RuntimeException: Directory openrouteservice/graphs/car does not exist and cannot be created to place lock file there: openrouteservice/graphs/car/gh.lock
        at com.graphhopper.storage.NativeFSLockFactory$NativeLock.tryLock(NativeFSLockFactory.java:110) ~[graphhopper-core-v0.12.2.jar:?]
        at com.graphhopper.GraphHopper.process(GraphHopper.java:683) ~[graphhopper-core-v0.12.2.jar:?]
        at com.graphhopper.GraphHopper.importOrLoad(GraphHopper.java:666) ~[graphhopper-core-v0.12.2.jar:?]
        at org.heigit.ors.routing.graphhopper.extensions.ORSGraphHopper.importOrLoad(ORSGraphHopper.java:130) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfile.initGraphHopper(RoutingProfile.java:173) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfile.<init>(RoutingProfile.java:119) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:35) ~[classes/:6.0.0]
        at org.heigit.ors.routing.RoutingProfileLoader.call(RoutingProfileLoader.java:21) ~[classes/:6.0.0]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_242]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_242]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_242]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_242]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_242]
        ... 1 more
2020-03-07 22:36:00,570 INFO [routing.RoutingProfileManager] - ====> Recycling garbage...
2020-03-07 22:36:00,571 INFO [routing.RoutingProfileManager] - Before:  Total - 10,00 GB, Free - 9,85 GB, Max: 10,00 GB, Used - 144,73 MB
2020-03-07 22:36:00,952 INFO [routing.RoutingProfileManager] - After:  Total - 10,00 GB, Free - 9,95 GB, Max: 10,00 GB, Used - 44,76 MB
2020-03-07 22:36:00,953 INFO [routing.RoutingProfileManager] - ========================================================================
2020-03-07 22:36:00,953 INFO [routing.RoutingProfileManager] - ====> Memory usage by profiles:
2020-03-07 22:36:00,959 INFO [routing.RoutingProfileManager] - Total: 0 B (0,0%)
2020-03-07 22:36:00,959 INFO [routing.RoutingProfileManager] - ========================================================================

The error even persists, if I create the folder manually.

Here is my app.config:

{
  "ors": {
"info": {
  "base_url": "http://localhost/",
  "support_mail": "support@openrouteservice.org",
  "author_tag": "openrouteservice",
  "content_licence": "LGPL 3.0"
},
"services": {
  "matrix": {
    "enabled": true,
    "maximum_routes": 100,
    "maximum_routes_flexible": 25,
    "maximum_search_radius": 5000,
    "maximum_visited_nodes": 100000,
    "allow_resolve_locations": true,
    "attribution": "openrouteservice.org, OpenStreetMap contributors"
  },
  "isochrones": {
    "enabled": true,
    "maximum_range_distance": [
      { "profiles": "any", "value": 50000 },
      { "profiles": "driving-car, driving-hgv", "value": 100000 }
    ],
    "maximum_range_time": [
      { "profiles": "any", "value": 18000 },
      { "profiles": "driving-car, driving-hgv", "value": 3600 }
    ],
    "maximum_intervals": 10,
    "maximum_locations": 2,
    "allow_compute_area": true
  },
  "routing": {
    "enabled": true,
    "mode": "normal",
    "routing_description": "This is a routing file from openrouteservice",
    "routing_name": "openrouteservice routing",
    "sources": ["openrouteservice/src/main/files/bremen-latest.osm.pbf"],
    "init_threads": 2,
    "attribution": "openrouteservice.org, OpenStreetMap contributors",
    "profiles": {
      "active": [
       "car",
        "hgv",
        "bike-regular",
        "bike-mountain",
        "bike-road",
        "bike-electric",
        "walking",
        "hiking",
        "wheelchair"           
      ],
      "default_params": {
        "encoder_flags_size": 8,
        "graphs_root_path": "graphs",
        "elevation_provider": "multi",
        "elevation_cache_path": "cgiar_provider",
        "elevation_cache_clear": false,
        "instructions": true,
        "maximum_distance": 100000,
        "maximum_distance_dynamic_weights": 100000,
        "maximum_distance_avoid_areas": 100000,
        "maximum_waypoints": 50,
        "maximum_snapping_radius": 400,
        "preparation": {
          "min_network_size": 200,
          "min_one_way_network_size": 200,

          "methods": {
            "lm": {
              "enabled": true,
              "threads": 1,
              "weightings": "fastest,shortest",
              "landmarks": 16
            }
          }
        },
        "execution": {
          "methods": {
            "lm": {
              "disabling_allowed": true,
              "active_landmarks": 8
            }
          }
        }
      },
      "profile-car": {
        "profiles": "driving-car",
        "parameters": {
          "encoder_flags_size": 8,
          "encoder_options": "turn_costs=true|block_fords=false|use_acceleration=false",
          "maximum_distance": 100000,
          "elevation": true,
          "maximum_snapping_radius": 350,
          "preparation": {
            "min_network_size": 200,
            "min_one_way_network_size": 200,

            "methods": {
              "ch": {
                "enabled": true,
                "threads": 1,
                "weightings": "fastest"
              },
              "lm": {
                "enabled": false,
                "threads": 1,
                "weightings": "fastest,shortest",
                "landmarks": 16
              },
              "core": {
                  "enabled": true,
                  "threads": 1,
                  "weightings": "fastest,shortest",
                  "landmarks": 64,
                  "lmsets": "highways;allow_all"
              }
            }
          },
          "execution": {
            "methods": {
              "ch": {
                "disabling_allowed": true
              },
              "lm": {
                "disabling_allowed": true,
                "active_landmarks": 6
              },
              "core": {
                "disabling_allowed": true,
                "active_landmarks": 6
              }
            }
          },
          "ext_storages": {
            "WayCategory": {},
            "HeavyVehicle": {},
            "WaySurfaceType": {},
            "RoadAccessRestrictions": {
              "use_for_warnings": true
            }
          }
        }
      },
      "profile-hgv": {
        "profiles": "driving-hgv",
        "parameters": {
          "encoder_flags_size": 8,
          "encoder_options": "turn_costs=true|block_fords=false|use_acceleration=false",
          "maximum_distance": 100000,
          "elevation": true,
          "preparation": {
            "min_network_size": 200,
            "min_one_way_network_size": 200,

            "methods": {
              "ch": {
                "enabled": true,
                "threads": 1,
                "weightings": "fastest"
              },
              "lm": {
                "enabled": true,
                "threads": 1,
                "weightings": "fastest,shortest",
                "landmarks": 16
              },
              "core": {
                "enabled": true,
                "threads": 1,
                "weightings": "fastest,shortest",
                "landmarks": 64,
                "lmsets": "highways;allow_all"
              }
            }
          },
          "execution": {
            "methods": {
              "ch": {
                "disabling_allowed": true
              },
              "lm": {
                "disabling_allowed": true,
                "active_landmarks": 6
              },
              "core": {
                "disabling_allowed": true,
                "active_landmarks": 6
              }

            }
          },
          "ext_storages": {
            "WayCategory": {},
            "HeavyVehicle": {
              "restrictions": true
            },
            "WaySurfaceType": {}
          }
        }
      },
      "profile-bike-regular": {
        "profiles": "cycling-regular",
        "parameters": {
          "encoder_options": "consider_elevation=true|turn_costs=true|block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-bike-mountain": {
        "profiles": "cycling-mountain",
        "parameters": {
          "encoder_options": "consider_elevation=true|turn_costs=true|block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-bike-road": {
        "profiles": "cycling-road",
        "parameters": {
          "encoder_options": "consider_elevation=true|turn_costs=true|block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-bike-electric": {
        "profiles": "cycling-electric",
        "parameters": {
          "encoder_options": "consider_elevation=true|turn_costs=true|block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-walking": {
        "profiles": "foot-walking",
        "parameters": {
          "encoder_options": "block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },
      "profile-hiking": {
        "profiles": "foot-hiking",
        "parameters": {
          "encoder_options": "block_fords=false",
          "elevation": true,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "HillIndex": {},
            "TrailDifficulty": {}
          }
        }
      },

      "profile-wheelchair": {
        "profiles": "wheelchair",
        "parameters": {
          "encoder_options": "block_fords=true",
          "elevation": true,
          "maximum_snapping_radius": 50,
          "ext_storages": {
            "WayCategory": {},
            "WaySurfaceType": {},
            "Wheelchair": {
              "KerbsOnCrossings": "true"
            },
            "OsmId": {}
          }
        }
      }
    }
  }
},
"logging": {
  "enabled": true,
  "level_file": "DEBUG_LOGGING.json",
  "location": "/var/log/ors",
  "stdout": true
}
  }
}

What could cause the profiles not to be recognized? As far as I see it, they are marked as active in the config…
And for testing I changed folder permissions to 777, so I don’t know why ors is unable to create the graphs folder…