# How to Replace Your Subscriptions with a Raspberry Pi

Source: https://www.youtube.com/watch?v=mxYLrubioZI
Recap page: https://rapidrecap.app/video/mxYLrubioZI
Generated: 2026-09-13T23:25:09.323+00:00

---
## The Gist

Replace paid cloud storage and streaming subscriptions by configuring a Raspberry Pi 5 with an external SSD, running Immich for photo backups and Jellyfin for media streaming.

## Quick Overview

Eliminate ongoing subscription costs by turning a Raspberry Pi 5 into a self-hosted media and photo server using Docker containers. The installation involves flashing Raspberry Pi OS Lite, assembling the hardware kit with a fan and heat sinks, mounting an external Samsung SSD, and deploying Immich and Jellyfin. Remote access is established via Tailscale, and local file sharing is configured with Samba.

**Key Points:**
- The hardware setup utilizes a CanaKit Raspberry Pi 5 Starter Kit with 8 gigabytes of RAM, a 128 gigabyte microSD card, and a 1TB Samsung external SSD.
- Raspberry Pi OS Lite is flashed onto the boot card using the Raspberry Pi Imager tool with customized hostname and SSH access.
- Hardware assembly requires snapping the case together, attaching the heat sink, and plugging the PWM fan into the correct port.
- Docker and Docker Compose are installed via official script pipelines to manage self-hosted application containers.
- Immich is deployed via Docker Compose with dedicated environment variables to handle photo backups and local library storage.
- Jellyfin is installed in a container to stream movies and television shows from the attached SSD without hardware transcoding acceleration.
- Tailscale is configured to provide secure remote access to the server from external devices without port forwarding.
- Samba is installed to enable network file sharing, allowing Windows and Mac computers to map the Pi storage drive permanently.

![Screenshot at 18:59: Big Buck Bunny streams successfully inside the Jellyfin web interface after setting up the media library.](https://ss.rapidrecap.app/screens/mxYLrubioZI/00-18-59.jpg)

**Context:** Commercial cloud storage and streaming services charge recurring monthly subscriptions and raise privacy concerns. A local homelab built on affordable single-board hardware like the Raspberry Pi 5 provides an alternative with complete data ownership.

## Detailed Analysis

The tutorial demonstrates the complete build of a self-hosted media and photo server using a Raspberry Pi 5. After preparing the hardware components, including a CanaKit case and a 1TB external SSD, Raspberry Pi OS Lite is flashed onto a microSD card with predefined SSH and user settings. The system is booted and connected to the local network via Ethernet. Terminal commands update the operating system and configure the external drive by formatting it to ext4 and updating the fstab file for permanent mounting. Docker and Docker Compose are installed to orchestrate containers. Immich is set up with a Docker compose file and environment variables to handle personal photo backups, while Jellyfin is deployed for video streaming. Tailscale acts as the secure VPN layer for remote access across mobile and desktop devices. Finally, Samba is installed and configured to let network computers map the Pi storage drive as a local network folder.

### Hardware Assembly and Operating System Setup

Gather the necessary components and flash the operating system onto the boot card.

- Use the CanaKit Raspberry Pi 5 Starter Kit containing the board, power supply, case, and an 8 gigabyte RAM configuration.
- Insert the 128 gigabyte microSD card into a USB card reader and connect it to a computer.
- Download the Raspberry Pi Imager software, select the Raspberry Pi 5 model, and choose Raspberry Pi OS Lite 64-bit.
- Configure custom settings in the imager, including the hostname media, a user account, time zone, and SSH authentication.

![Screenshot at 01:38: The Raspberry Pi Imager writes the OS Lite image to the storage device.](https://ss.rapidrecap.app/screens/mxYLrubioZI/00-01-38.jpg)

### Physical Assembly of the Raspberry Pi

Assemble the case, heat sink, and fan to maintain optimal thermal performance.

- Unpack the CanaKit case pieces and prepare the board for installation.
- Attach the black metal heat sink onto the main processor chips using the pre-applied thermal adhesive.
- Plug the fan's colored wires into the fan port on the Pi board, ensuring the yellow wire faces outward.
- Snap the bottom case, middle piece, and top fan cover together around the assembled board.

![Screenshot at 02:25: The fully assembled Raspberry Pi 5 sits inside its black CanaKit case.](https://ss.rapidrecap.app/screens/mxYLrubioZI/00-02-25.jpg)

### Drive Formatting and Mounting

Format the external SSD and mount it permanently to the file system.

- Plug the power supply, Ethernet cable, and the Samsung 1TB external SSD into the Raspberry Pi.
- Establish an SSH connection from a computer terminal using the user credentials created during imaging.
- Run system update commands followed by a system reboot to apply software upgrades.
- Format the external drive with an ext4 file system using parted and mkfs commands, then mount it and update /etc/fstab for persistence.

![Screenshot at 07:22: The nano editor updates the /etc/fstab file with the external drive UUID.](https://ss.rapidrecap.app/screens/mxYLrubioZI/00-07-22.jpg)

### Installing Docker and Immich

Deploy Docker and launch the Immich container stack for photo management.

- Create dedicated directory structures for Immich libraries and database files on the external drive.
- Install Docker and Docker Compose using the official installation script and add the user to the docker group.
- Download the Immich docker compose configuration and environment files from the official repository.
- Edit the .env file to adjust upload paths and time zones, then start the container stack using docker compose up -d.

![Screenshot at 11:18: The Immich welcome screen loads in the web browser on port 2283.](https://ss.rapidrecap.app/screens/mxYLrubioZI/00-11-18.jpg)

### Installing Jellyfin

Configure Jellyfin to stream video content from local media folders.

- Create configuration and cache directories for Jellyfin inside the home directory.
- Write a Docker Compose configuration for Jellyfin mapping the media directory on the external drive as read-only.
- Start the Jellyfin container and access the web setup wizard on port 8096 to create an admin user.
- Disable hardware transcoding acceleration in the Jellyfin dashboard since the Raspberry Pi lacks a compatible GPU encoder.

![Screenshot at 14:31: The Jellyfin setup wizard prompts for a server name and language.](https://ss.rapidrecap.app/screens/mxYLrubioZI/00-14-31.jpg)

### Network File Sharing with Samba

Set up Samba to enable easy drag-and-drop file transfers from client computers.

- Install the samba and samba-common-bin packages using apt install.
- Append a media share configuration to the smb.conf file pointing to the external storage mount path.
- Create a dedicated Samba password for the user account using the smbpasswd command.
- Map the network drive on Windows File Explorer or Mac Finder to access the server storage permanently.

![Screenshot at 16:48: The terminal displays the Samba configuration block verifying the media share settings.](https://ss.rapidrecap.app/screens/mxYLrubioZI/00-16-48.jpg)

### Remote Access with Tailscale

Install Tailscale to enable secure access to the homelab from outside the local network.

- Run the Tailscale install script in the terminal to add the repository and package to the Pi.
- Execute sudo tailscale up and authenticate the device through a web browser login prompt.
- Disable key expiry in the Tailscale admin console to prevent the server connection from lapsing after six months.
- Install the Tailscale client on mobile devices to access Immich and Jellyfin remotely without relying on Wi-Fi.

![Screenshot at 19:48: The Tailscale admin panel shows the machine settings where key expiry is disabled.](https://ss.rapidrecap.app/screens/mxYLrubioZI/00-19-48.jpg)

