{
  "id": 20192775,
  "title": "How I Turned My Idle RTX 4060 into the Backend for a Free Audio Separation Website",
  "url": "https://urgent.news/2026/11/15/how-i-turned-my-idle-rtx-4060-into-the-backend-for-a-free-audio",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-15T15:20:42.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/uvr_online/how-i-turned-my-idle-rtx-4060-into-the-backend-for-a-free-audio-separation-website-19dj"
  },
  "original_language": "en",
  "account": "An idle RTX 4060 graphics card was repurposed to serve as the backend for a free audio separation website called UVR Online. Users could upload songs, select a separation model, and download the separated tracks. The website operated in the cloud, while the audio inference ran on the local computer in China. No public IP address or port forwarding was required at the home location.\n\nThe architecture consisted of several components: the browser for uploading and downloading audio files, Cloudflare R2 for private storage, a Next.js interface and Next.js for task pages and audio players, a Go API for task creation, permissions, upload authorization, and coordination between workers, PostgreSQL for task state management, Redis for rate limiting, Cloudflare R2 for holding private input and output files, and Python, PyTorch CUDA, FFmpeg for audio validation, separation, and encoding locally.\n\nThe separation engine used existing models from the UVR ecosystem and headless inference code. The local PC would pull work from the cloud server, which communicated with the home computer using outbound HTTPS requests. Each task involved downloading the input using a signed URL, checking the audio with ffprobe, running the selected model on the GPU, encoding and uploading the results to R2, and reporting completion to the API.\n\nThe browser also uploaded directly to R2, keeping large audio files out of the application server's data path. To handle incomplete tasks, claimed tasks had a lease and an attempt token. The Worker renewed the lease while the task was being worked on, and if the lease expired, the server could requeue the task within its retry limit. Claiming tasks was atomic in PostgreSQL, and completion was idempotent.\n\nThe bottleneck during the project proved to be file transfer, particularly over a slow VPN route. The size of the audio files also played a significant role, with larger MP3s expanding into much bigger uncompressed tracks. Therefore, the export format became an important infrastructure decision and user preference.\n\nThe setup allowed for the reuse of existing hardware while keeping the public website separate from the GPU machine. It also provided a pathway to future Workers if needed. However, the operation was largely dependent on the local PC, home connection, and available upload bandwidth.",
  "summary": "I had an RTX 4060 in my Windows PC that wasn’t getting much gaming time. Instead of leaving it idle, I connected it to a website. The result is UVR Online: users upload a song, choose a separation model, then listen to and download the separated tracks. The website runs in the cloud. The actual audio inference runs on my local computer in China, serving users around the world. I didn’t need a…",
  "key_points": [
    "Idle RTX 4060 repurposed as backend for UVR Online website",
    "Audio separation tasks run locally in China, website in cloud",
    "Architecture includes Go API, PostgreSQL, Redis, Python, PyTorch"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}