Skip to content

Downtify #2412

Description

@MickLesk

Name of the Script

Downtify

Script Type

CT (LXC Container)

Script path

No response

Where does it run?

Proxmox VE host

Does this script support arm64?

arm64 supported

📋 Script Details

Downtify is a self-hosted music downloader with a web interface. Paste a Spotify, YouTube Music or Deezer link, or search by name, and it reads the metadata without a Spotify account or API key, downloads the matching audio from YouTube Music with yt-dlp and tags it with cover art and lyrics. It also has a library with a built-in player, a Playlist Monitor that downloads new tracks from watched playlists and artists, podcasts, M3U export for Jellyfin, Navidrome and Plex, and accounts for several users.

Activity

  1. github-actions commented on Oct 11, 2026

    @github-actions
    Contributor

    The Downtify script is ready for testing. Run it in the Proxmox VE shell (or on an Incus host) to create a container:

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/DevScripts/main/ct/downtify.sh)"
    

    Default credentials:
    Username: admin
    Password: downtify

    Every Downtify server starts with the same login, admin / downtify. Change the password right after the first sign-in in Settings > General > Account. If you forget it, reset it to the default with: cd /opt/downtify && set -a && . /opt/downtify_data/.env && set +a && .venv/bin/python main.py auth-reset
    Downtify serves plain HTTP on port 8000. Do not expose it to the internet directly; put it behind a reverse proxy with HTTPS. Add the proxy's address as DOWNTIFY_TRUSTED_PROXIES= to /opt/downtify_data/.env and have the proxy send X-Forwarded-Host/-Proto/-For, otherwise Downtify answers "Cross-site request refused" when the proxy rewrites the Host header, and rate-limits sign-ins by the proxy's address.
    Music is saved to /opt/downtify_data/downloads. To keep it on a NAS or share it with a media server, bind-mount that folder from the host, e.g. pct set -mp0 /mnt/media/music,mp=/opt/downtify_data/downloads. In an unprivileged container the host folder must be writable by UID 100000.
    Settings, accounts, the Playlist Monitor database and an uploaded cookies.txt live in /opt/downtify_data/data, outside the app directory, so updates keep them. Optional variables from the documentation (TZ, DOWNTIFY_MONITOR_SYNC_TIME, DOWNTIFY_FORCE_IPV4, ...) go in /opt/downtify_data/.env, followed by systemctl restart downtify.
    If YouTube starts refusing downloads ("Sign in to confirm you're not a bot", age-restricted tracks), upload a cookies.txt from a logged-in browser in Settings > YouTube cookies.
    Downtify downloads the audio from YouTube. Whether that is allowed depends on YouTube's terms of service and the law where you live.

    Note: This is not in the official repo yet—it's just a dev version! After merging into ProxmoxVE, it will need to be recreated.

    Discord testing thread: https://discord.com/channels/1302816934508630047/1558774633451360298

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions