diff --git a/lib/docs/filters/varnish/entries.rb b/lib/docs/filters/varnish/entries.rb
new file mode 100755
index 00000000..34c2be89
--- /dev/null
+++ b/lib/docs/filters/varnish/entries.rb
@@ -0,0 +1,60 @@
+module Docs
+ class Varnish
+ class EntriesFilter < Docs::EntriesFilter
+ TYPE_BY_SLUG = {}
+
+ def call
+ if root_page?
+ css('.section').each do |node|
+ type = node.at_css('h2').content[0..-2]
+ node.css('li > a').each do |n|
+ s = n['href'].split('/')[-2]
+ TYPE_BY_SLUG[s] = type
+ end
+ end
+ end
+ super
+ end
+
+ def get_name
+ at_css('h1').content[0..-2]
+ end
+
+ def get_type
+ case slug
+ when /installation/
+ 'Installation'
+ when /users-guide/
+ 'Users Guide'
+ when /tutorial/
+ 'Tutorial'
+ when /reference/
+ 'Reference Manual'
+ when /dev-guide/
+ 'Dev Guide'
+ else
+ TYPE_BY_SLUG[slug.split('/').first] || 'Other'
+ end
+ end
+
+ def include_default_entry?
+ slug != 'reference/'
+ end
+
+ def additional_entries
+ entries = []
+
+ css('dl.class > dt[id]').each do |node|
+ name = node['id'].split('.').last
+ id = node['id']
+ type = node['id'].split('.')[0..-2].join('.')
+ entries << [name, id, type]
+ end
+
+
+ entries
+ end
+
+ end
+ end
+end
diff --git a/lib/docs/scrapers/varnish.rb b/lib/docs/scrapers/varnish.rb
new file mode 100644
index 00000000..13564955
--- /dev/null
+++ b/lib/docs/scrapers/varnish.rb
@@ -0,0 +1,40 @@
+module Docs
+ class Varnish < UrlScraper
+ self.name = 'Varnish'
+ self.type = 'sphinx'
+
+ self.root_path = 'index.html'
+ self.links = {
+ home: 'https://varnish-cache.org/',
+ code: 'https://github.com/varnishcache/varnish-cache'
+ }
+
+
+ html_filters.push 'varnish/entries', 'sphinx/clean_html'
+
+ options[:container] = '.body > section'
+
+
+ options[:skip] = %w(genindex.html search.html)
+
+ options[:skip_patterns] = [/phk/, /glossary/, /whats-new/]
+
+
+ options[:attribution] = <<-HTML
+ Copyright © 2006 Verdens Gang AS
+ Copyright © 2006–2020 Varnish Software AS
+ Licensed under the BSD-2-Clause License.
+ HTML
+
+ version do
+ self.release = '7.3.0'
+ self.base_url = 'https://varnish-cache.org/docs/7.3/'
+ end
+
+ def get_latest_version(opts)
+ contents = get_github_file_contents('varnishcache', 'varnish-cache', 'doc/changes.rst', opts)
+ contents.scan(/Varnish\s+Cache\s+([0-9.]+)/)[0][0]
+ end
+
+ end
+end
diff --git a/public/icons/docs/varnish/16.png b/public/icons/docs/varnish/16.png
new file mode 100644
index 00000000..49c7e76e
Binary files /dev/null and b/public/icons/docs/varnish/16.png differ
diff --git a/public/icons/docs/varnish/16@2x.png b/public/icons/docs/varnish/16@2x.png
new file mode 100644
index 00000000..442b11dc
Binary files /dev/null and b/public/icons/docs/varnish/16@2x.png differ
diff --git a/public/icons/docs/varnish/SOURCE b/public/icons/docs/varnish/SOURCE
new file mode 100644
index 00000000..ebc3b9fc
--- /dev/null
+++ b/public/icons/docs/varnish/SOURCE
@@ -0,0 +1 @@
+https://www.varnish-software.com/branding/