Umbrel-CLI: Creating a more useful way to run scripts

I was modifying my umbrel apps docker-compose to give specific ones access to persistant storage (context: I have a large media collection and just needed to point my plex and *arr’s to the correct directory) and was finding the process of going into the specific scripts directory, looking into the community or through the scripts themselves to find out what they do, then running the script just very extra and not necessarily convient to use.

So I propose this solution, a one stop Umbrel-cli that would be bound to bin so that it can be called without having to go into scripts. I think this will make it easier for users to both find what commands they have access to vs which ones are to be ran under the hood as well as centralize all user accessible scripts so that their use and documentation can be found easier than the existing method.

I am willing to build this feature as it will be useful, if even for just myself but, I wanted to post my current work in documenting the current scripts that are accessible to users with their purpose.

If you see a problem or missing command or script that is available to be ran by the user please let me know. This is will be my first open source contribution so if anyone has any tips to get started (Im thinking either shell or python script and allowing the user to run it like an application to avoid needing to enter any specific directories) or if anyone wants to test this after I get a running version, please reach out any help is greatly appreciated.

2 Likes

Here is a list of script files and their commands that I have so far (will work on formatting of this post as I have time to make it read easier):

Umbrel – root call command ( if blank should report either umbrel-details or help command)

OS only commands:

umbrel-details: like umbrels version of neofetch

debug: prints off umbrels debug log
   
change-password: changes the users password

Agnostic commands:

backup: creates umbrel backup

install: installs umbrel

start: starts umbrel instance

stop: stops umbrel instance

configure: configures umbrel

app: Issues commands to specific umbrel apps
	commands:
	
	install: pulls down image and starts app

	uninstall: removes image & destroys app data

	reinstall: uninstall then installs app

	start: starts installed app

	stop: stops installed app

	restart: restarts installed app

	compose: passes all arguments to docker-compose

	ls-installed: lists installed apps

	update: updates installed app


repo: manages local umbrel app repos
	commands:

	add: add app repo

	remove: remove app repo
	update: update local app repos

	branch: set the branch for a given local app repo

	checkout: Checkout an app repo (branch is optional)

	path: get the absolute path for a given local app repo

update: update umbrel (would be useful to people who are actively modifying or who just want to use the cli for their umbrel)
	command:

	ota: over the air release update

	path: copy over new releases from path

	repo: update from specified repo

Useful scripts not yet available:

restart: stops then starts umbrel

external-storage: allow user to manage external storage devices
	commands:
	
	list: list all external storage devices (minimum should be mounted devices but all devices would be very useful)

	mount: mount storage devices

	unmount: unmount storage devices
3 Likes

I have finished creating my umbrel-cli. It is but a quick dropin script that is then setup to be callable on the terminal by calling ‘umbrel’. This will let the user configure, stop, start and backup their umbrel as well as manage apps and repos running under Umbrel as well.

If you use this dropin please let me know and if it gets enough traction I will see how to get it setup and running when umbrel installs and send a push request up to the official umbrel team.

1 Like

Hey @B0G0311, thanks this is really interesting. I usually refer people to our repo where they can see the different scripts there, but this is much better.
I will share this with the team!

2 Likes

That’s awesome, I’m glad that to see that its useful for people. I actually had to push a setup breaking fix today because I had a small typo, should be working now.

Are you saying you can ADD an app repo ? So if the app is out of date you add the repo containing the latest version?

1 Like

Asl would love to see your thoughts around the storage mounting scripts. I am mounting both physical and smb shares to certain apps and use a bash script to update or restore the volume section of the docker-compose.yml file after an app is updated.

1 Like

I have yet to fully explore the external-storage options yet. My immediate thought, is to use the terminal command to just front end umount or similar command for the mount and unmount operations. The biggest hardship for adding volumes to the specific docker container would be that managing it would be easiest accomplished through the webview, possibly when the user installs the container (unless much further options/fleshing out of the settings menu happens Idk how I would implement it for already installed apps) it would ask if the user wants to attach any volumes and would save that for persistence through updates.

I’m honestly not too certain on its function, I understood it as adding a replacement to the app repo that enables the store if you wanted to manage that yourself for more stringent version control. However, I did not make the script because as of right not umbrel-cli just uses the previously existing scripts and makes it easier for the end user to access.

If anyone could provide further explanation on the purpose of the repo script that would genuinely be very helpful.

I updated umbrel-cli as it should now not only contain access to all user accessible scripts but that the setup should now be pretty seamless to enable you to be ready to roll out using umbrel-cli after the steps involved in the README.md.

This being said I have not tested on other hardware and do not own an Umbrel Home, meaning that I cannot test to ensure that those commands are truly functional. If you run into any errors please report an issue on Github; pull requests are also welcome.

Also important to mention how to run the scripts, I’m not sure if there’s a shorter command than the following:

certainly, I actually have some instructions on install and setup on my github. with umbrel-cli the proper way to input the command you attached would simply be ‘umbrel stop’ or ‘umbrel app stop electrs’

github: umbrel-cli

Awesome. I would like to do something similar, point to an external drive to store various (media) files. Could you give step by step directions? Im a noob but learn quickly :v:

@shiva I’m afraid that I’m not too sure I know what you’re asking. Do you want to create a script to do this quickly for you or do you simply just want to move the docker volumes to that point to media files onto an external device?

Hmm. Not sure. Just want a way to direct downloaded files to store on an external drive (rather than the internal ssd where Umbrel is installed). As of now everything stores on the same disk. Its a mini pc and right now i only have internal disk but its getting full and im planning to get an external for extra storage…

I have created a new post to help people with info and steps on how to connect and use external storage devices. It is currently pending approval but the mods typically don’t take long to accept them. I am not sure if you have an Umbrel Home (I do not and thus cannot give super accurate steps on its best practice) but if you do Umbrel-cli does include the mounting script for it, I just need people to test it so that I can validate if it works or not.

The guide is for the remainder of linux devices, although, barring some unknown variable, it should also work on Umbrel Home as well. I will tag the new post here as soon as it is available for you though in case you wish to try it.

Thanks. I have a mini pc with Ubuntu and Umbrel on that… only one internal ssd so far but plan to add external.