[![Build Status](https://drone.deadbeef.codes/api/badges/steven/lineageos-ota-server/status.svg)](https://drone.deadbeef.codes/steven/lineageos-ota-server) # lineageos-ota-server A highly-scalable and lightweight OTA Server for LineageOS. The OTA server supports a single device model (eg: Google Pixel), if you intend to have OTA's available for a variety of device models, just create an additional OTA server instance for each device. ![alt text][logo] [logo]: https://deadbeef.codes/steven/lineageos-ota-server/raw/branch/main/ota-logo.jpg "LineageOS OTA Server" ### docker compose example The service listens on port 8080 by default. Mount the output directory for the builds of the device you wish to serve to the /out folder. Also, mount a persistent public directory which will be served publicly. The public folder can be shared across multiple OTA server instances if you wish. ```yaml version: '3.8' lineageos-ota: image: registry.deadbeef.codes/lineageos-ota-server:latest restart: always expose: - "8080" volumes: - /data/android/lineage/out/target/product/sunfish:/out - /data/android/public/sunfish:/public ``` ### How to point device to OTA server The recommended way is to include the configuration inside your build of the ROM. We do this by by including the URL as a system build.prop by doing the following: Create new file /data/android/lineage/vendor/lineage/build/core/deadbeef-ota.mk ```makefile # deadbeef.codes LineageOS OTA update server - replace with your own URL - example below may be parsed as https://lineageos-ota-bluejay.deadbeef.codes ADDITIONAL_SYSTEM_PROPERTIES += \ lineage.updater.uri=https://lineageos-ota-{device}.deadbeef.codes ``` Edit /data/android/lineage/vendor/lineage/build/core/main.mk to include deadbeef-ota.mk ```makefile # Include LineageOS versions include $(TOPDIR)vendor/lineage/build/core/main_version.mk # Include deadbeef.codes OTA server include $(TOPDIR)vendor/lineage/build/core/deadbeef-ota.mk ```