diff --git a/docs/conf.py b/docs/conf.py
index b38059e..5f1dea9 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,25 +1,17 @@
 # Configuration file for the Sphinx documentation builder.
 #
-# This file only contains a selection of the most common options. For a full
-# list see the documentation:
+# For the full list of built-in configuration values, see the documentation:
 # https://www.sphinx-doc.org/en/master/usage/configuration.html
 
-# -- Path setup --------------------------------------------------------------
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#
-# import os
+import importlib.util
 import sys
-# sys.path.insert(0, os.path.abspath('.'))
-
 
 # -- Project information -----------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
 
-project = u'NDNS: Domain Name Service for Named Data Networking'
-copyright = u'Copyright © 2014-2022 Named Data Networking Project.'
-author = u'Named Data Networking Project'
+project = 'NDNS: Domain Name Service for Named Data Networking'
+copyright = 'Copyright © 2014-2022 Named Data Networking Project.'
+author = 'Named Data Networking Project'
 
 # The short X.Y version.
 #version = ''
@@ -35,49 +27,31 @@
 
 
 # -- General configuration ---------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
 
-# If your documentation needs a minimal Sphinx version, state it here.
-#
-needs_sphinx = '1.3'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
+needs_sphinx = '4.0'
 extensions = [
     'sphinx.ext.extlinks',
     'sphinx.ext.todo',
 ]
 
 def addExtensionIfExists(extension):
-    try:
-        __import__(extension)
+    if importlib.util.find_spec(extension) is not None:
         extensions.append(extension)
-    except ImportError:
-        sys.stderr.write("Extension '%s' not found. "
-                         "Some documentation may not build correctly.\n" % extension)
+    else:
+        sys.stderr.write(f'WARNING: Extension {extension!r} not found. '
+                          'Some documentation may not build correctly.\n')
 
 addExtensionIfExists('sphinxcontrib.doxylink')
 
-# The master toctree document.
-master_doc = 'index'
-
-# Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = []
+exclude_patterns = ['Thumbs.db', '.DS_Store']
 
 
 # -- Options for HTML output -------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
 
-# The theme to use for HTML and HTML Help pages.  See the documentation for
-# a list of builtin themes.
-#
 html_theme = 'named_data_theme'
-
-# Add any paths that contain custom themes here, relative to this directory.
 html_theme_path = ['.']
 
 # Add any paths that contain custom static files (such as style sheets) here,
@@ -92,53 +66,22 @@
 highlight_language = 'none'
 
 
-# -- Options for LaTeX output ------------------------------------------------
-
-latex_elements = {
-    # The paper size ('letterpaper' or 'a4paper').
-    #
-    # 'papersize': 'letterpaper',
-
-    # The font size ('10pt', '11pt' or '12pt').
-    #
-    # 'pointsize': '10pt',
-
-    # Additional stuff for the LaTeX preamble.
-    #
-    # 'preamble': '',
-
-    # Latex figure (float) alignment
-    #
-    # 'figure_align': 'htbp',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-#  author, documentclass [howto, manual, or own class]).
-latex_documents = [
-    ('index', 'ndns-docs.tex', u'NDNS: Domain Name Service for Named Data Networking',
-     author, 'manual'),
-]
-
-
 # -- Options for manual page output ------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-manual-page-output
 
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    ('manpages/ndns-daemon', 'ndns-daemon', u'Domain Name Service Daemon for Named Data Networking', None, 1),
+    ('manpages/ndns-daemon', 'ndns-daemon', 'Domain Name Service Daemon for Named Data Networking', None, 1),
 ]
 
-# If true, show URL addresses after external links.
-#man_show_urls = True
 
-
-# -- Custom options ----------------------------------------------------------
+# -- Misc options ------------------------------------------------------------
 
 doxylink = {
     'NDNS': ('NDNS.tag', 'doxygen/'),
 }
 
 extlinks = {
-    'issue': ('https://redmine.named-data.net/issues/%s', 'issue #'),
+    'issue': ('https://redmine.named-data.net/issues/%s', 'issue #%s'),
 }
