Skip to content

MathiasDPX/archivetube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

fbfa05f · · Apr 6, 2026

History

73 Commits
Apr 5, 2026
Apr 6, 2026
Apr 5, 2026
Apr 5, 2026
Apr 5, 2026
Apr 5, 2026
Apr 6, 2026
Apr 5, 2026
Apr 5, 2026
Apr 6, 2026

Repository files navigation

archivetube

A self-hosted YouTube archiving application

Features

  • Authentification with password, oidc or none
  • Full video archiving (video, thumbnail, subtitles, description...)
  • Batch archiving of playlists or channels in one go
  • YouTube-like interface
  • rclone compatible, local file-based storage works with rclone mount

Future features:

  • Transcoding
  • Dedicated player with chapters integration

Installation

Configuration

Create a config.toml file with this inside:

[server]

listen_addr = ":8080"

real_ip_header = ""

cors_host = "*"

[
[archive]

ytdlp_path = "yt-dlp"

data_dir = "./data"

proxy = ""

[
[auth]

mode = "password" # "password", "oidc", or "none"

password_hash = "bcrypt-password"


#oidc_issuer = "https://auth.example.com"

#oidc_client_id = ""

#oidc_client_secret = ""

#oidc_redirect_url = "https://yourinstance.com/auth/callback"

Dev environment

You can simply start the server with go run .

Using Docker

docker pull ghcr.io/mathiasdpx/archivetube:latest

docker run -d \
  -p 8080:8080 \
  -v ./data:/app/data \
  -v ./config.toml:/app/config.toml \
  --name archivetube \
  ghcr.io/mathiasdpx/archivetube:latest:latest

Using Docker Compose

services:
   archivetube:
     container_name: archivetube
     image: ghcr.io/mathiasdpx/archivetube:latest
     restart: unless-stopped
     ports:
      -  "8080:8080"
     volumes:
      -  ./data:/app/data
      -  ./config.toml:/app/config.toml

#     - ./cookies.txt:/app/cookies.txt # For using your account's cookies with yt-dlp - Not recommended

Then open http://localhost:8080