Skip to content

🎞 Pinchflat

Pinchflat is a self-hosted app for downloading YouTube content built using yt-dlp.

This app is being used to automatically download videos from YouTube and store them on my NFS share so that I can stream the videos to my Apple TV via Infuse without having to watch commercials and take up bandwidth every time a video is rewatched.

🛠 Installation

Default Port: 8945

homelab/docker/pinchflat

task up
docker compose up

âš™ Config

I am currently investigating how to format the metadata for Infuse to properly pickup the video automatically. I also need to figure out how to setup Infuse.

homelab/docker/pinchflat/.env

CONTAINER_NAME=pinchflat
homelab/docker/pinchflat/compose.yaml
---

services:
  pinchflat:
    container_name: pinchflat
    image: ghcr.io/kieraneglin/pinchflat:v2025.6.6
    env_file:
      - .env
    environment:
      - TZ=America/Los_Angeles
    ports:
      - '8945:8945'
    restart: always
    volumes:
      - /root/git/nicholaswilde/homelab/docker/pinchflat/config:/config
      - /mnt/storage/youtube:/downloads

Traefik

homelab/pve/traefik/conf.d/pinchflat.yaml
---
http:
 #region routers 
  routers:
    pinchflat:
      entryPoints:
        - "websecure"
      rule: "Host(`pinchflat.l.nicholaswilde.io`)"
      middlewares:
        - default-headers@file
        - https-redirectscheme@file
      tls: {}
      service: pinchflat
#endregion
#region services
  services:
    pinchflat:
      loadBalancer:
        servers:
          - url: "http://192.168.2.138:8945"
        passHostHeader: true

Task List

task: Available tasks for this project:
* decrypt:       Decrypt sensitive configuration files using SOPS.
* default:       List all available tasks.
* encrypt:       Encrypt sensitive configuration files using SOPS.
* export:        Export the task list to `task-list.txt`.
* init:          Initialize the application's environment and configuration files.
* pull:          Pull Docker images for the application.
* restart:       Restart the application's Docker containers.
* status:        Check the status of the application's Docker containers.
* stop:          Stop the application's Docker containers.
* up:            Run Docker Compose in the foreground.
* up-d:          Run Docker Compose in the background.
* update:        Update the application or its running containers.
* upgrade:       Upgrade the application by pulling the latest changes and updating.
* watch:         Watch the application's Docker container logs.

🔗 References