Thank you very much pert, I want to maintain a custom library repository within my organization. The proxy solution sounds good, I have found the a git repo with the proxy.
Current working solution is that I am hacking ESP8266 board .json and also zip. In a Travis job downloading the latest ESP8266 board zip, extracting it, adding all my libraries from repos with library.properties into libraries folder, packing it to zip, uploading it to http://mydomain/arduino/esp8266.zip, then modifing checksum and size in my http://mydomain/arduino/package_esp8266_index.json which points to http://mydomain/arduino/esp8266.zip.
It works like a charm, but still there is a maintenance when the original ESP8266 zip and json change, and I can include the libraries from file menu only when ESP8266 board is chosen. So it's not really a solution of choice.
Proxy could do the job, or I am thinking of creating a custom package manager cli utility that will just download and extract libraries into the local Arduino's lib folder directly.
But it would be great if it could work directly in IDE, so I am asking some Java experts here, is the LIBRARY_INDEX_URL used later when the json is actually fetched? How can I set this system variable, can you please point me to the right direction?