Transfer node from Pi to Ubuntu Linux Desktop, re-using the external SSD

Hi! Should be simple, but I can’t seem to figure it out. I have Umbrel node working on a Pi 4, been running for a couple of years, blockchain data stored on a 1TB external SSD. I’d like to move the node to a higher powered desktop running Ubuntu, but use the same SSD (just plugged into the new machine).

First I fresh installed Umbrel on Linux, then realized my internal NVME wasn’t going to be big enough. So I plugged the SSD from the Pi into my desktop. It mounted, and I ran the /umbrel/scripts/start from the SSD’s umbrel directory.

To my surprise, Umbrel fired right up! I could access the GUI from a browser and login with my old password, but then none of the apps seemed to load, all remained stuck at “loading”.

Since it’s so close, I feel like I can probably just tweak the mount or something and get the whole thing running, but can’t figure it out yet. Any ideas? Thanks!

Just a follow up for posterity. I got it working, but I’m not exactly sure what did the trick. Node is running, and all of my sats are there and apps are working as previously configured. I THINK it was that I tried actually mounting the external drive to the filesystem. Either that or I just didn’t wait long enough after. I think this would be worth investigating, as more people may be interested in quickly and easily upgrading their nodes to better hardware.

Steps are something like:

  1. Install Umbrel on the new machine to make sure all dependancies are in place, using the normal bash script:
    curl -L https://umbrel.sh | bash
    1.5. Stop that Umbrel instance.
    sudo ~/umbrel/scripts/stop

  2. Plug in the external hard drive and mount it to the filesystem.
    sudo fdisk -l
    sudo mkdir /mnt/usb
    sudo mount /dev/sdb1 /mnt/usb (change “sdb1” to whatever your drive is named in fdisk")

  3. Start the Umbrel instance from the external drive:
    sudo /mnt/usb/umbrel/scripts/start

I’m sure this is wrong, but something like that.

Currently UmbrelOS is at v1.1 or so. A lot of info in this post is not applicable anymore.

I managed to do this with v1.1. Please see my post at Migrate/Re-use UmbrelOS SSD from Raspberry Pi to X86 – Jun Sun's Journal

The key is to mount ssd on PC and create a symlink to /mnt/umbrel-ssd/umbrel under /home/umbrel/umbrel. Of course you need to use systemctl to stop/start umbrel service before and after this linking.

@diamond_wolf Thank you Very much, this worked for me!

I gave ChatGPT your instructions and it gave me these detailed instructions which may be helpful to those not super well verse with the linux command line

  1. Prepare the SSD Disk:

    Make sure the SSD is properly shut down and disconnected from the old server.

  2. Prepare the New Server (Fresh Install of Umbrel OS 1.3 / 1.22):

    You’ve already created a bootable flash drive with Umbrel OS 1.3 and installed it on your new server.
    Boot the new server from the flash drive and complete the Umbrel OS installation process.
    DO NOT install any apps yet, as this is a fresh Umbrel install, and you need to migrate the data from the SSD.

  3. Migrate the SSD Disk:

    Shut down the new server once Umbrel OS is installed.
    Plug the SSD into the new server.

  4. Mount the SSD to the Correct Location:

    Power on the server and open a terminal.

    Create the mount directory for the SSD:

sudo mkdir -p /mnt/umbrel-ssd

This ensures the directory /mnt/umbrel-ssd exists before you mount the SSD.

Find the UUID of your SSD (you will need to match the correct UUID for the SSD):

sudo blkid

This will list all available disks and their UUIDs. Find the UUID for your SSD (it should match the one you were using previously).

Edit /etc/fstab to mount the SSD at /mnt/umbrel-ssd:

sudo nano /etc/fstab

Add the following line (replace UUID=e9ae3217-6a06-4721-b725-78e6524b4272 with your actual SSD UUID):

UUID=e9ae3217-6a06-4721-b725-78e6524b4272 /mnt/umbrel-ssd ext4 defaults 0 0

Save and close the file (Ctrl+X, then Y and Enter to confirm).

Mount the filesystem:

sudo mount -a

Verify the mount: You can verify that the SSD is mounted correctly by checking the mounted filesystems:

df -h

This will list all mounted filesystems and show you the details, including /mnt/umbrel-ssd and its usage.
  1. Stop Umbrel Service:

    Stop the Umbrel service on the new machine before making any changes to the configuration:

    sudo systemctl stop umbrel

  2. Move the Umbrel Data:

    Change to the /home/umbrel directory:

cd /home/umbrel

Backup the current umbrel folder (in case something goes wrong):

mv umbrel umbrel.bak

Create a symbolic link pointing to the data on the SSD:

ln -s /mnt/umbrel-ssd/umbrel umbrel
  1. Start Umbrel Service:

    Finally, restart the Umbrel service:

sudo systemctl start umbrel

I did notice after updates it does not automatically re-mount the disk which is annoying would it be advisable to do the following to avoid that:

  1. Ensure Umbrel is Stopped:

First, stop the Umbrel service to prevent any data changes during the migration:

sudo systemctl stop umbrel

  1. Copy Data from the SSD to the Internal Storage:

To copy the entire umbrel folder from the SSD to the internal storage, you need to decide where you’d like to move the data. For example, you can copy it to the default location on your internal storage, which is /home/umbrel.

Assuming the SSD is mounted at /mnt/umbrel-ssd and you want to move it to /home/umbrel on the internal storage, use the following command:

sudo cp -r /mnt/umbrel-ssd/umbrel /home/umbrel/

This will copy the umbrel folder and all its contents from the SSD to the internal storage.
3. Ensure Proper Ownership and Permissions:

After copying the data, you need to make sure the ownership and permissions are correct. The umbrel user must own the files:

sudo chown -R umbrel:umbrel /home/umbrel/umbrel

  1. Remove the SSD:

After ensuring the data has been copied successfully and the permissions are set, you can safely remove the external SSD from the system.
5. Remove the Mount Point (if no longer needed):

If you no longer want the SSD to mount automatically, you can either remove or comment out the line in /etc/fstab that was used to mount the SSD. You can do this by editing the /etc/fstab file:

sudo nano /etc/fstab

Find the line that mounts the SSD (it will look something like this):

UUID=e9ae3217-6a06-4721-b725-78e6524b4272 /mnt/umbrel-ssd ext4 defaults 0 0

Either remove that line or comment it out by adding a # at the beginning of the line.

Example:

UUID=e9ae3217-6a06-4721-b725-78e6524b4272 /mnt/umbrel-ssd ext4 defaults 0 0

Save and exit (Ctrl + X, then Y and Enter to confirm).
6. Verify Everything:

Ensure that the umbrel folder on /home/umbrel is accessible and has the right permissions.

Start Umbrel again:

sudo systemctl start umbrel

You can also verify that the server is running correctly after the migration by checking the status of the Umbrel service:

sudo systemctl status umbrel