Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I selfhost https://github.com/alexta69/metube

I have it sitting on a URL and I have an iOS share shortcut to throw any URL at it and it downloads the video.

Copy-paste from my ansible setup if you're interested, shouldn't be that hard to convert to docker-compose.

    - name: Build metube options separately, avoids inline JSON in metube setup
      ansible.builtin.set_fact:
        metube_ytdl_options:
          postprocessors:
            - key: FFmpegEmbedSubtitle
            - key: SponsorBlock
              categories:
                - sponsor
            - key: ModifyChapters
              remove_sponsor_segments:
                - sponsor
          subtitleslangs:
            - en
            - "-live_chat"
          verbose: true
          writeautomaticsub: true
          writesubtitles: true

    - name: Create metube container
      community.general.docker_container:
        container_default_behavior: "no_defaults"
        name: metube
        image: alexta69/metube:latest
        restart_policy: always
        env:
          UID: "{{ plex_userid }}"
          GID: "{{ docker_users_groupid }}"
          DELETE_FILE_ON_TRASHCAN: "false"
          DOWNLOAD_DIRS_INDEXABLE: "true"
          DOWNLOAD_DIR: /downloads
          TEMP_DIR: /metube-tmp
          STATE_DIR: /config
          TZ: "{{ timezone }}"
          YTDL_OPTIONS: "{{ metube_ytdl_options | to_json }}"
        mounts:
          - type: bind
            source: /stacks/metube/config
            target: /config
            read_only: false
          - type: volume
            source: metube_tmp_location_volume
            target: /metube-tmp
          - type: volume
            source: plex_metube_volume
            target: /downloads
        labels:
          "traefik.enable": "true"
          "traefik.http.routers.metube.middlewares": "authelia@docker"
          "traefik.http.routers.metube.service": "metube"
          "traefik.http.routers.metube-no-auth.rule": "Host(`metube.home.domain.com`) && (PathPrefix(`/favicon`) || PathPrefix(`/add`))"
          "traefik.http.routers.metube-no-auth.service": "metube"
          "traefik.http.services.metube.loadbalancer.server.port": "8081"
        ports: []
        dns_servers:
          - "{{ docker_network_ipv4_bridge_dns }}" # adguard
        networks:
          - name: bridge_ipv4


With YouTube premium being so convenient, it seems like the need to rip YouTube videos would have gone down.

This does look pretty slick though.


How does that protect agains videos being taken down?




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: