Installation - cleverdevil/squishy GitHub Wiki

Installing Squishy

Squishy is designed to be run in Docker, which simplifies installation and ensures compatibility across different systems. This guide will walk you through the installation process.

System Requirements

  • A Linux-based system with Docker and Docker Compose installed
  • Sufficient storage space for your media and transcoded files
  • For hardware acceleration: A compatible GPU with proper drivers installed

Docker Installation

  1. Clone the repository:

    git clone https://github.com/cleverdevil/squishy.git
    cd squishy
    
  2. Modify the Docker Compose file:

    # Create a copy of the example file
    cp docker-compose.yml.example docker-compose.yml
    
    # Edit the file with your preferred editor
    nano docker-compose.yml
    
  3. Configure the Docker Compose file:

    • Uncomment and edit the media path volume mounts for both Squishy and your media server (Jellyfin or Plex)
    • Uncomment the appropriate GPU/hardware acceleration settings if needed
    • Choose either Jellyfin or Plex (comment out the one you don't use)
  4. Start the containers:

    docker compose up --build
    
  5. Access Squishy:

    • Open your browser and navigate to http://your-host:5101
    • Follow the onboarding wizard to complete setup

Hardware Acceleration Setup

Squishy currently supports VA-API for hardware accelerated transcoding. Support for other acceleration methods could be added if there is a strong demand from users.

Configuring VA-API in Docker

The provided Docker setup includes VA-API configuration with these key components:

  1. Required packages in the Dockerfile:

    • libva-dev - Main VA-API implementation
    • va-driver-all - All available VA-API drivers
    • mesa-va-drivers - Mesa VA-API drivers
    • intel-media-va-driver - Intel Media Driver for VAAPI (iHD)
    • i965-va-driver - Intel i965 driver for older GPUs
  2. Device mappings in docker-compose.yml:

    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
    
  3. Environment variables:

    environment:
      - LIBVA_DRIVER_NAME=iHD
      - LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri
    
  4. Group permissions for GPU access:

    group_add:
      - video
      - "105"  # Render group GID (may vary by system)
    

Hardware Acceleration Troubleshooting

If you're having issues with hardware acceleration:

  1. Check if your GPU is accessible inside the container:

    docker exec -it squishy ls -la /dev/dri
    
  2. Verify VA-API is working:

    docker exec -it squishy vainfo --display drm --device /dev/dri/renderD128
    
  3. Check the driver being used:

    • For Intel GPUs, try both i965 and iHD drivers by modifying the LIBVA_DRIVER_NAME environment variable
    • For modern Intel GPUs (10th gen+), iHD is recommended
    • For older Intel GPUs, i965 might work better
  4. Examine Squishy logs for hardware acceleration detection:

    docker logs squishy | grep -i "hardware"
    
  5. Adjust permissions and group IDs if necessary:

    • The render device group ID might differ on your system (typically 105 or 109)
    • Ensure the user in the container has access to the required groups

Advanced Configuration

For advanced hardware acceleration setup, you may need to modify the entrypoint.sh script which automatically configures hardware acceleration on container startup:

  1. The script detects available DRI devices
  2. It adjusts group permissions for proper GPU access
  3. It tests both iHD and i965 drivers to determine compatibility
  4. It configures the appropriate environment variables for your hardware

These configurations can be further customized in your environment depending on your specific hardware setup.