Мне также нужно было применить минимальную защиту к fava.  То, что я сделал, это служил fava через FastCGI вместо его встроенного http-сервера.  Вот очень минимальная оболочка:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
def main():
    try:
        # In case you're running Python 2.x:  (untested with fava)
        from flup.server.fcgi import WSGIServer
    except ImportError:
        # For Python 3.x:
        from flipflop import WSGIServer
    from fava.application import app, load_file
    app.config['BEANCOUNT_FILES'] = ['/path/to/your/ledger.beancount',]
    load_file()
    WSGIServer(app).run()
if __name__ == '__main__':
    import sys as _sys
    _sys.exit(main())
Вам, конечно, понадобится триггер для Python 3.x или флип для Python 2.x.
Чтобы заставить Apache загрузить это, у вас есть много вариантов.  Вот 2:
- Сохраните файл как «fava.fcgi», сделайте его исполняемым с помощью идентификатора пользователя Apache и настройте Apache для обслуживания файлов .fcgi.  Я этого не делал, потому что мне не нравится, что расширение .fcgi присутствует в моих URL-адресах, и я не хотел беспокоиться о (IMHO) громоздких правилах переписывания.
- Мой более простой подход: сохраните файл как "fava", сделайте его исполняемым Apache и добавьте следующие строки в .htaccess для другого файла конфигурации сервера: - <Files fava>
    # Use this with Debian package libapache2-mod-fastcgi
    SetHandler fastcgi-script
    # Or this with Debian package libapache2-mod-fcgid
    #SetHandler fcgid-script
</Files>
 
Вам может потребоваться запустить a2enmod fastcgi или a2enmod fcgid зависимости от того, какой модуль Apache FastCGI вы решите использовать.
И самое главное, установите какой-то механизм паролей, и вы, вероятно, захотите использовать SSL.  Например: (может быть более элегантный способ объединить этот раздел Directory с вышеупомянутым разделом Files ...)
# Set this to whatever directory contains fava:
<Directory /path/to/dir/containing/fava/>
    Options +ExecCGI
    SSLOptions +StrictRequire
    SSLRequireSSL
    AuthType Basic
    AuthName "Mr. Coffee"
    AuthBasicProvider file
    AuthUserFile /etc/apache2/htpasswd.whatever
    Require valid-user
</Directory>
Заключительные замечания: вместо FastCGI могут работать и другие механизмы, такие как WSGI, но вам нужно будет изменить (или упростить?) мой скрипт-обертка