# Add support two new source types for applications in PVR (pvr, rootfs) Until right now PVR let us manage in an easy manner to create and manage applications from docker containers, but we could run containers that are built for another source. Now we are adding two new sources called `pvr` and `rootfs`: - **pvr**: Manage applications using a PVR repository URL, this allows an easy way to share components from another PV repository (example: hub.pantacor.com). In that way when you install an application that application will have all the necessary configurations needed to run on pantavisor without any extra work. - **rootfs**: Manage applications using a plain root filesystem inside a tar or in a folder, this will allow developers that have already a root filesystem deployed on their devices imported to pantavisor without the need of creating a docker container, instead `pvr` will convert this root filesystem into an LXC container directly and could be configured as any other pantavisor container, that means, docker configuration, volumes, pantavisor arguments and more. ## How to use rootfs type We now can create an app, install an app, and update an app using as source a root filesystem, that filesystem could be as a tar in local for the computer is running the PVR, could be a plain folder with the filesystem inside, or could be an URL where the tar is to be downloaded. #### Add app from rootfs ``` pvr app add --from=~/Desktop/pvwebstatus -t rootfs pvwebstatus ``` This will create a new application folder with these files: ``` pvwebstatus/ ├── lxc.container.conf ├── root.squashfs ├── root.squashfs.rootfs-digest ├── run.json └── src.json ``` The Source file will have a rootfs_url argument and rootfs_digest to track the filesystem digest. If you need to add some docker_config on creation to the app, you could use all the parameters supported. Example: ``` pvr app add --from=~/Desktop/pvwebstatus --config-json=pvwebstatus.config.json -t rootfs pvwebstatus ``` Where the `pvwebstatus.config.json` is a JSON configuration. ```json { "ArgsEscaped": true, "Cmd": [ "/app/pantavisor-web-status" ], "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "WorkingDir": "/app" } ``` #### Install app from rootfs In order to install will as with any other type: ``` pvr app install pvwebstatus ``` #### Update app from rootfs Here you can update like a normal docker container: ``` pvr app update pvwebstatus ``` But you can update from another tar or an URL ``` pvr app update --from=~/Desktop/pvwebstatus.tar pvwebstatus ``` ## How to use pv type Another source that could be used as a source for an application is a device description inside your computer or from a PV repository URL. #### Add app from pvr You could use any PVR repository compatible URL, which could be a local .pvr folder or a remote repository URL. ``` pvr app add -t pvr --from https://pvr.pantahub.com/highercomve/one_marketplace_production#tailscale tailscale ``` Then install and update will work exactly the same way as previously described for rootfs.