mirror of
https://github.com/dani-garcia/vaultwarden.wiki.git
synced 2026-10-26 00:26:47 +02:00
* Update GHA and pre-commit Signed-off-by: BlackDex <black.dex@gmail.com> * Update admin diagnostics Added a check if the templates are overridden and return which specific folder, `admin`, `email` or `scss`. This way we could more quickly point users to possible outdated templates which they are using. Also updated the Support String to use some emojis so we should be able to quicker see if there is something wrong. Just checking `true` or `false` could be difficult sometimes, and sometimes what we had as `false` wasn't bad either. Also adjusted the eslint comments so it will work with the latest version of eslint. Signed-off-by: BlackDex <black.dex@gmail.com> * Fix updating collections for a cipher The newer clients expect a `cipherDetails` response on the `collections-admin` endpoints. Without it, the client will cause an error and stops handling the update correctly. This will fix this by returning the cipher json. Fixes #7545 Fixes #7546 Signed-off-by: BlackDex <black.dex@gmail.com> * Cache CSS file in a different way Currently we set a cache ttl of 24 hours, and users need to do a force refresh if there is anything changed to the CSS file. In the past we have had several issue reported which were related to a still cached CSS file. This commit will change the caching and also cache the generated CSS file in memory. Instead of letting the browser cache it for 24 hours we generate an ETag, this is just a hash of the contents. This ETag is returned by the browser during a request, and we can match this, and if so, just return a `304` `Not Modified`. If the ETag is not known, we return the new content. This should make simple refreshes by clients get updated settings or a new version of Vaultwarden which has other CSS entries get updated instantly. If a user does a hard refresh, we will not receive the ETag and the content will be served. The same goes if someone has the `reload_templates` feature enabled, since then we should not cache anyway. If someone adjust settings via the `/admin` interface, the cache will be invalidated and a new CSS will be generated. Signed-off-by: BlackDex <black.dex@gmail.com> * Fix showing events for a specific user Signed-off-by: BlackDex <black.dex@gmail.com> * Update crates and adjust code. - Updated opendal and adjusted code where needed. - Updated yubico_ng and adjusted code where needed. This version now supports using an own HttpClient and it pulls in no reqwest dependency anymore. Now it will use our own client which uses custom hickory DNS and other features. Signed-off-by: BlackDex <black.dex@gmail.com> * Update web-vault to v2026.7.0 Signed-off-by: BlackDex <black.dex@gmail.com> * Fix hadolint warnings Signed-off-by: BlackDex <black.dex@gmail.com> --------- Signed-off-by: BlackDex <black.dex@gmail.com>
258 lines
17 KiB
Handlebars
258 lines
17 KiB
Handlebars
<main class="container-xxl">
|
|
<div id="diagnostics-block" class="my-3 p-3 rounded shadow">
|
|
<h6 class="border-bottom pb-2 mb-2">Diagnostics</h6>
|
|
|
|
<h3>Versions</h3>
|
|
<div class="row">
|
|
<div class="col-md">
|
|
<dl class="row">
|
|
<dt class="col-sm-5">Server Installed
|
|
<span class="badge bg-success d-none abbr-badge" id="server-success" title="Latest version is installed.">Ok</span>
|
|
<span class="badge bg-warning text-dark d-none abbr-badge" id="server-warning" title="An update is available.">Update</span>
|
|
<span class="badge bg-info text-dark d-none abbr-badge" id="server-branch" title="This is a branched version.">Branched</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="server-installed">{{page_data.current_release}}</span>
|
|
</dd>
|
|
<dt class="col-sm-5">Server Latest
|
|
<span class="badge bg-secondary d-none abbr-badge" id="server-failed" title="Unable to determine latest version.">Unknown</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="server-latest">{{page_data.latest_release}}<span id="server-latest-commit" class="d-none">-{{page_data.latest_commit}}</span></span>
|
|
</dd>
|
|
{{#if page_data.web_vault_enabled}}
|
|
<dt class="col-sm-5">Web Installed
|
|
<span class="badge bg-success d-none abbr-badge" id="web-success" title="Latest version is installed.">Ok</span>
|
|
<span class="badge bg-warning text-dark d-none abbr-badge" id="web-warning" title="An update is available.">Update</span>
|
|
<span class="badge bg-info text-dark d-none abbr-badge" id="web-prerelease" title="You are using a pre-release version.">Pre-Release</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="web-installed">{{page_data.active_web_release}}</span>
|
|
</dd>
|
|
<dt class="col-sm-5">Web Latest
|
|
<span class="badge bg-secondary d-none abbr-badge" id="web-failed" title="Unable to determine latest version.">Unknown</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="web-latest">{{page_data.latest_web_release}}</span>
|
|
</dd>
|
|
{{/if}}
|
|
{{#unless page_data.web_vault_enabled}}
|
|
<dt class="col-sm-5">Web Installed</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="web-installed">Web Vault is disabled</span>
|
|
</dd>
|
|
{{/unless}}
|
|
<dt class="col-sm-5">Database</dt>
|
|
<dd class="col-sm-7">
|
|
<span><b>{{page_data.db_type}}:</b> {{page_data.db_version}}</span>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<h3>Checks</h3>
|
|
<div class="row">
|
|
<div class="col-md">
|
|
<dl class="row">
|
|
<dt class="col-sm-5">OS/Arch</dt>
|
|
<dd class="col-sm-7">
|
|
<span class="d-block"><b>{{ page_data.host_os }} / {{ page_data.host_arch }}</b></span>
|
|
</dd>
|
|
<dt class="col-sm-5">Running within a container</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.running_within_container}}
|
|
<span class="d-block"><b>Yes (Base: {{ page_data.container_base_image }})</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.running_within_container}}
|
|
<span class="d-block"><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">Uses config.json</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.overrides}}
|
|
<span class="d-inline"><b>Yes</b></span>
|
|
<span class="badge bg-info text-dark abbr-badge" title="Environment variables are overwritten by a config.json.
{{page_data.overrides}}">Details</span>
|
|
{{/if}}
|
|
{{#unless page_data.overrides}}
|
|
<span class="d-block"><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">Uses custom templates</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.template_overrides}}
|
|
<span class="d-inline"><b>Yes</b></span>
|
|
<span class="badge bg-info text-dark abbr-badge" title="Custom template files are used.
{{page_data.template_overrides}}">Details</span>
|
|
{{/if}}
|
|
{{#unless page_data.template_overrides}}
|
|
<span class="d-block"><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">Uses a reverse proxy</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.ip_header_exists}}
|
|
<span class="d-block" title="IP Header found."><b>Yes</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.ip_header_exists}}
|
|
<span class="d-block" title="No IP Header found."><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
{{!-- Only show this if the IP Header Exists --}}
|
|
{{#if page_data.ip_header_exists}}
|
|
<dt class="col-sm-5">IP header
|
|
{{#if page_data.ip_header_match}}
|
|
<span class="badge bg-success abbr-badge" title="IP_HEADER config seems to be valid.">Match</span>
|
|
{{/if}}
|
|
{{#unless page_data.ip_header_match}}
|
|
<span class="badge bg-danger abbr-badge" title="IP_HEADER config seems to be invalid. IP's in the log could be invalid. Please fix.">No Match</span>
|
|
{{/unless}}
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.ip_header_match}}
|
|
<span class="d-block"><b>Config/Server:</b> {{ page_data.ip_header_name }}</span>
|
|
{{/if}}
|
|
{{#unless page_data.ip_header_match}}
|
|
<span class="d-block"><b>Config:</b> {{ page_data.ip_header_config }}</span>
|
|
<span class="d-block"><b>Server:</b> {{ page_data.ip_header_name }}</span>
|
|
{{/unless}}
|
|
</dd>
|
|
{{/if}}
|
|
{{!-- End if IP Header Exists --}}
|
|
<dt class="col-sm-5">Internet access
|
|
{{#if page_data.has_http_access}}
|
|
<span class="badge bg-success abbr-badge" title="We have internet access!">Ok</span>
|
|
{{/if}}
|
|
{{#unless page_data.has_http_access}}
|
|
<span class="badge bg-danger abbr-badge" title="There seems to be no internet access. Please fix.">Error</span>
|
|
{{/unless}}
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.has_http_access}}
|
|
<span class="d-block"><b>Yes</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.has_http_access}}
|
|
<span class="d-block"><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">Internet access via a proxy</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.uses_proxy}}
|
|
<span class="d-block" title="Internet access goes via a proxy (HTTPS_PROXY or HTTP_PROXY is configured)."><b>Yes</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.uses_proxy}}
|
|
<span class="d-block" title="We have direct internet access, no outgoing proxy configured."><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
<dt class="col-sm-5">Websocket enabled
|
|
{{#if page_data.enable_websocket}}
|
|
<span class="badge bg-success d-none abbr-badge" id="websocket-success" title="Websocket connection is working.">Ok</span>
|
|
<span class="badge bg-danger d-none abbr-badge" id="websocket-error" title="Websocket connection error, validate your reverse proxy configuration!">Error</span>
|
|
{{/if}}
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
{{#if page_data.enable_websocket}}
|
|
<span class="d-block" title="Websocket connections are enabled (ENABLE_WEBSOCKET is true)."><b>Yes</b></span>
|
|
{{/if}}
|
|
{{#unless page_data.enable_websocket}}
|
|
<span class="d-block" title="Websocket connections are disabled (ENABLE_WEBSOCKET is false)."><b>No</b></span>
|
|
{{/unless}}
|
|
</dd>
|
|
|
|
<dt class="col-sm-5">DNS (github.com)
|
|
<span class="badge bg-success d-none abbr-badge" id="dns-success" title="DNS Resolving works!">Ok</span>
|
|
<span class="badge bg-danger d-none abbr-badge" id="dns-warning" title="DNS Resolving failed. Please fix.">Error</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="dns-resolved">{{page_data.dns_resolved}}</span>
|
|
</dd>
|
|
<dt class="col-sm-5">Date & Time (Local)
|
|
{{#if page_data.tz_env}}
|
|
<span class="badge bg-success abbr-badge" title="Configured TZ environment variable">{{page_data.tz_env}}</span>
|
|
{{/if}}
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span><b>Server:</b> {{page_data.server_time_local}}</span>
|
|
</dd>
|
|
<dt class="col-sm-5">Date & Time (UTC)
|
|
<span class="badge bg-success d-none abbr-badge" id="time-success" title="Server and browser times are within 15 seconds of each other.">Server/Browser Ok</span>
|
|
<span class="badge bg-danger d-none abbr-badge" id="time-warning" title="Server and browser times are more than 15 seconds apart.">Server/Browser Error</span>
|
|
<span class="badge bg-success d-none abbr-badge" id="ntp-server-success" title="Server and NTP times are within 15 seconds of each other.">Server NTP Ok</span>
|
|
<span class="badge bg-danger d-none abbr-badge" id="ntp-server-warning" title="Server and NTP times are more than 15 seconds apart.">Server NTP Error</span>
|
|
<span class="badge bg-success d-none abbr-badge" id="ntp-browser-success" title="Browser and NTP times are within 15 seconds of each other.">Browser NTP Ok</span>
|
|
<span class="badge bg-danger d-none abbr-badge" id="ntp-browser-warning" title="Browser and NTP times are more than 15 seconds apart.">Browser NTP Error</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="ntp-time" class="d-block"><b>NTP:</b> <span id="ntp-server-string">{{page_data.ntp_time}}</span></span>
|
|
<span id="time-server" class="d-block"><b>Server:</b> <span id="time-server-string">{{page_data.server_time}}</span></span>
|
|
<span id="time-browser" class="d-block"><b>Browser:</b> <span id="time-browser-string"></span></span>
|
|
</dd>
|
|
|
|
<dt class="col-sm-5">Domain configuration
|
|
<span class="badge bg-success d-none abbr-badge" id="domain-success" title="The domain variable matches the browser location and seems to be configured correctly.">Match</span>
|
|
<span class="badge bg-danger d-none abbr-badge" id="domain-warning" title="The domain variable does not match the browser location.
The domain variable does not seem to be configured correctly.
Some features may not work as expected!">No Match</span>
|
|
<span class="badge bg-success d-none abbr-badge" id="https-success" title="Configured to use HTTPS">HTTPS</span>
|
|
<span class="badge bg-danger d-none abbr-badge" id="https-warning" title="Not configured to use HTTPS.
Some features may not work as expected!">No HTTPS</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="domain-server" class="d-block"><b>Server:</b> <span id="domain-server-string">{{page_data.admin_url}}</span></span>
|
|
<span id="domain-browser" class="d-block"><b>Browser:</b> <span id="domain-browser-string"></span></span>
|
|
</dd>
|
|
|
|
<dt class="col-sm-5">HTTP Response validation
|
|
<span class="badge bg-success d-none abbr-badge" id="http-response-success" title="All headers and HTTP request responses seem to be ok.">Ok</span>
|
|
<span class="badge bg-danger d-none abbr-badge" id="http-response-warning" title="Some headers or HTTP request responses return invalid data!">Error</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="http-response-errors" class="d-block"></span>
|
|
</dd>
|
|
{{#if page_data.invalid_feature_flags}}
|
|
<dt class="col-sm-5">Invalid Feature Flags
|
|
<span class="badge bg-warning text-dark abbr-badge" id="feature-flag-warning" title="Some feature flags are invalid or outdated!">Warning</span>
|
|
</dt>
|
|
<dd class="col-sm-7">
|
|
<span id="feature-flags" class="d-block"><b>Flags:</b> <span id="feature-flags-string">{{page_data.invalid_feature_flags}}</span></span>
|
|
</dd>
|
|
{{/if}}
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
|
|
<h3>Support</h3>
|
|
<div class="row">
|
|
<div class="col-md">
|
|
<dl class="row">
|
|
<dd class="col-sm-12">
|
|
If you need support please check the following links first before you create a new issue:
|
|
<a href="https://vaultwarden.discourse.group/" target="_blank" rel="noreferrer noopener">Vaultwarden Forum</a>
|
|
| <a href="https://github.com/dani-garcia/vaultwarden/discussions" target="_blank" rel="noreferrer noopener">Github Discussions</a>
|
|
</dd>
|
|
</dl>
|
|
<dl class="row">
|
|
<dd class="col-sm-12">
|
|
You can use the button below to pre-generate a string which you can copy/paste on either the Forum or when Creating a new issue at Github.<br>
|
|
We try to hide the most sensitive values from the generated support string by default, but please verify if there is nothing in there which you want to hide!<br>
|
|
</dd>
|
|
</dl>
|
|
<dl class="row">
|
|
<dt class="col-sm-3">
|
|
<button type="button" id="gen-support" class="btn btn-primary">Generate Support String</button>
|
|
<br><br>
|
|
<button type="button" id="copy-support" class="btn btn-info mb-3 d-none">Copy To Clipboard</button>
|
|
<div class="toast-container position-absolute float-start vw-copy-toast">
|
|
<div id="toastClipboardCopy" class="toast fade hide" role="status" aria-live="polite" aria-atomic="true" data-bs-autohide="true" data-bs-delay="1500">
|
|
<div class="toast-body">
|
|
Copied to clipboard!
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</dt>
|
|
<dd class="col-sm-9">
|
|
<pre id="support-string" class="pre-scrollable d-none w-100 border p-2"></pre>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
<script src="{{urlpath}}/vw_static/admin_diagnostics.js"></script>
|
|
<script type="application/json" id="diagnostics_json">{{to_json page_data}}</script>
|