Inital Commit
All checks were successful
Vaultwarden / Vaultwarden [arm64] (push) Successful in 59s
Vaultwarden / Vaultwarden [amd64] (push) Successful in 51s

This commit is contained in:
Cantibra
2025-10-26 21:11:06 +01:00
commit 3180255caa
89 changed files with 4156 additions and 0 deletions

2
root/DEBIAN/conffiles Normal file
View File

@@ -0,0 +1,2 @@
/etc/vaultwarden/vaultwarden.conf
/etc/vaultwarden/email_logo.png

10
root/DEBIAN/control Normal file
View File

@@ -0,0 +1,10 @@
Package: vaultwarden
Version: 1.34.3
Architecture:
Installed-Size:
Depends: libimage-exiftool-perl, libmariadb3, libpq5, libssl3
Priority: optional
Section: misc
Homepage: http://www.privlab.it
Maintainer: PrivLab <hostmaster@privlab.it>
Description: Vaultwarden Server for Bitwarden Clients

49
root/DEBIAN/postinst Normal file
View File

@@ -0,0 +1,49 @@
#!/usr/bin/sh
set -e
set -u
if [ -d '/run/systemd/system' ]; then
/usr/bin/systemctl --system daemon-reload > '/dev/null' 2>&1 || \
/usr/bin/true
fi
case "${1}" in
configure)
if [ -x '/usr/bin/deb-systemd-helper' ]; then
/usr/bin/deb-systemd-helper unmask 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
fi
if /usr/bin/deb-systemd-helper --quiet was-enabled 'vaultwarden.service'; then
/usr/bin/deb-systemd-helper enable 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
else
/usr/bin/deb-systemd-helper update-state 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
fi
if [ -x '/etc/init.d/vaultwarden' ]; then
/usr/sbin/update-rc.d 'vaultwarden' defaults > '/dev/null' 2>&1 || \
/usr/bin/true
fi
/bin/chmod --quiet '0750' '/var/cache/vaultwarden'
/bin/chmod --quiet '0750' '/var/lib/vaultwarden'
/bin/chmod --quiet '0750' '/var/log/vaultwarden'
/bin/chmod --quiet '0750' '/var/logrotate/vaultwarden'
/bin/chown --quiet 'vaultwarden':'vaultwarden' '/etc/vaultwarden/email_logo.png'
/bin/chown --quiet 'vaultwarden':'vaultwarden' '/var/cache/vaultwarden'
/bin/chown --quiet 'vaultwarden':'vaultwarden' '/var/lib/vaultwarden'
/bin/chown --quiet 'vaultwarden':'adm' '/var/log/vaultwarden'
/bin/chown --quiet 'vaultwarden':'adm' '/var/logrotate/vaultwarden'
if [ -x '/usr/bin/deb-systemd-invoke' ]; then
/usr/bin/systemctl --system daemon-reload > '/dev/null' 2>&1 || \
/usr/bin/true
if [ -n "${2}" ]; then
_dh_action='restart'
else
_dh_action='start'
fi
/usr/bin/deb-systemd-invoke "${_dh_action}" 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
fi
;;
esac

44
root/DEBIAN/postrm Normal file
View File

@@ -0,0 +1,44 @@
#!/usr/bin/sh
set -e
set -u
if [ -d '/run/systemd/system' ]; then
/usr/bin/systemctl --system daemon-reload > '/dev/null' 2>&1 || \
/usr/bin/true
fi
case "${1}" in
remove)
if [ -x '/usr/bin/deb-systemd-helper' ]; then
/usr/bin/deb-systemd-helper mask 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
fi
/bin/rm --force --recursive '/var/cache/vaultwarden/'*
/bin/rm --force --recursive '/var/cache/vaultwarden/'.*
/bin/rm --force --recursive '/var/log/vaultwarden/'*
/bin/rm --force --recursive '/var/log/vaultwarden/'.*
/bin/rm --force --recursive '/var/logrotate/vaultwarden/'*
/bin/rm --force --recursive '/var/logrotate/vaultwarden/'.*
;;
purge)
if [ -x '/usr/bin/deb-systemd-helper' ]; then
/usr/bin/deb-systemd-helper purge 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
/usr/bin/deb-systemd-helper unmask 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
fi
/usr/bin/getent passwd 'vaultwarden' > '/dev/null' 2>&1 && \
/usr/sbin/deluser 'vaultwarden' > '/dev/null' 2>&1
/usr/bin/getent group 'vaultwarden' > '/dev/null' 2>&1 && \
/usr/sbin/deluser --group 'vaultwarden' > '/dev/null' 2>&1
/bin/rm --force --recursive '/var/cache/vaultwarden/'*
/bin/rm --force --recursive '/var/cache/vaultwarden/'.*
/bin/rm --force --recursive '/var/lib/vaultwarden/'*
/bin/rm --force --recursive '/var/lib/vaultwarden/'.*
/bin/rm --force --recursive '/var/log/vaultwarden/'*
/bin/rm --force --recursive '/var/log/vaultwarden/'.*
/bin/rm --force --recursive '/var/logrotate/vaultwarden/'*
/bin/rm --force --recursive '/var/logrotate/vaultwarden/'.*
;;
esac

19
root/DEBIAN/preinst Normal file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/sh
set -e
set -u
case "${1}" in
install)
/usr/bin/getent passwd 'vaultwarden' > '/dev/null' 2>&1 || \
/usr/sbin/adduser --quiet \
--system \
--home '/nonexistent' \
--shell '/usr/sbin/nologin' \
--no-create-home \
--group \
--disabled-password \
--disabled-login \
'vaultwarden' > '/dev/null' 2>&1
;;
esac

19
root/DEBIAN/prerm Normal file
View File

@@ -0,0 +1,19 @@
#!/usr/bin/sh
set -e
set -u
case "${1}" in
remove)
if [ -x '/usr/bin/deb-systemd-invoke' ]; then
/usr/bin/deb-systemd-invoke stop 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
/usr/bin/deb-systemd-invoke disable 'vaultwarden.service' > '/dev/null' 2>&1 || \
/usr/bin/true
fi
if [ -x '/etc/init.d/vaultwarden' ]; then
/usr/sbin/update-rc.d 'vaultwarden' remove > '/dev/null' 2>&1 || \
/usr/bin/true
fi
;;
esac

View File

@@ -0,0 +1,83 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: vaultwarden
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Vaultwarden Server
# Description: Alternative implementation of the Bitwarden server API
# written in Rust and compatible with upstream Bitwarden
# clients.
### END INIT INFO
NAME='vaultwarden'
DESC='Vaultwarden Server'
USER='vaultwarden'
GROUP='vaultwarden'
PIDFOLDER="/run/vaultwarden"
PIDFILE="${PIDFOLDER}/vaultwarden.pid"
DAEMON='/usr/sbin/vaultwarden'
DAEMON_CONFIG='/etc/vaultwarden/vaultwarden.conf'
set -e
[ -f "${DAEMON_CONFIG}" ]
. "${DAEMON_CONFIG}"
. '/lib/lsb/init-functions'
[ -x "${DAEMON}" ]
case "${1}" in
start)
/usr/bin/install --directory --group="${GROUP}" ---mode='0755' --owner="${USER}" "${PIDFOLDER}"
log_daemon_msg "Starting ${DESC}" "${NAME}"
if /usr/sbin/start-stop-daemon --quiet \
--start \
--oknodo \
--make-pidfile \
--pidfile "${PIDFILE}" \
--user "${USER}" \
--group "${GROUP}" \
--exec "${DAEMON}"; then
log_end_msg 0
else
log_end_msg 1
/usr/bin/test -f "${PIDFILE}" && \
/usr/bin/rm --force "${PIDFILE}"
fi
;;
stop)
log_daemon_msg "Stopping ${DESC}" "${NAME}"
if /usr/sbin/start-stop-daemon --quiet \
--stop \
--oknodo \
--retry 30 \
--remove-pidfile \
--pidfile "${PIDFILE}" \
--user "${USER}" \
--group "${GROUP}" \
--exec "${DAEMON}"; then
/usr/bin/test -f "${PIDFILE}" && \
/usr/bin/rm --force "${PIDFILE}"
log_end_msg 0
else
log_end_msg 1
fi
;;
restart)
"${0}" stop
"${0}" start
;;
status)
status_of_proc -p "${PIDFILE}" "${DAEMON}" "${NAME}" && \
exit 0 || \
exit "${?}"
;;
*)
echo "Usage: /etc/init.d/${NAME} {start|stop|restart|status}" >&2
exit 1
;;
esac

View File

@@ -0,0 +1,71 @@
/var/log/vaultwarden/*.log {
# Truncate the original log file in place after creating a copy,
# instead of moving the old log file and optionally creating a
# new one. It can be used when some program cannot be told to
# close its logfile and thus might continue writing (appending)
# to the previous log file forever. Note that there is a very
# small time slice between copying the file and truncating it, so
# some logging data might be lost. When this option is used, the
# create option will have no effect, as the old log file stays in
# place.
copytruncate
# Log files are rotated every day.
daily
# Archive old versions of log files adding a daily extension like
# YYYYMMDD instead of simply adding a number. The extension may
# be configured using the dateformat option.
dateext
# Specify the extension for dateext using the notation similar to
# strftime(3) function. Only %Y %m %d and %s specifiers are allowed.
# The default value is -%Y%m%d. Note that also the character
# separating log name from the extension is part of the dateformat
# string. The system clock must be set past Sep 9th 2001 for %s to
# work correctly. Note that the datestamps generated by this format
# must be lexically sortable (i.e., first the year, then the month
# then the day. e.g., 2001/12/01 is ok, but 01/12/2001 is not, since
# 01/11/2002 would sort lower while it is later). This is because when
# using the rotate option, logrotate sorts all rotated filenames to
# find out which logfiles are older and should be removed.
dateformat .%Y-%m-%d
# Use yesterday's instead of today's date to create the dateext
# extension, so that the rotated log file has a date in its name that
# is the same as the timestamps within it.
dateyesterday
# Postpone compression of the previous log file to the next rotation
# cycle. This only has effect when used in combination with compress.
# It can be used when some program cannot be told to close its logfile
# and thus might continue writing to the previous log file for some time.
delaycompress
# Do not copy the original log file and leave it in place.
nocopy
# New log files are not created.
nocreate
# Don't mail old log files to any address.
nomail
# Do not use shred when deleting old log files.
noshred
# Do not rotate the log if it is empty.
notifempty
# Logs are moved into directory for rotation. The directory must be on the
# same physical device as the log file being rotated, and is assumed to be
# relative to the directory holding the log file unless an absolute path
# name is specified. When this option is used all old versions of the log
# end up in directory.
olddir /var/logrotate/vaultwarden
# Log files are rotated count times before being removed or mailed to the
# address specified in a mail directive. If count is 0, old versions are
# removed rather than rotated.
rotate 7
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,416 @@
#
# Vaultwarden Configuration
#
# Option: [_duo_akey]
# Notes: DUO Application Key
# Values: [ NONE | KEY ] Default: ''
#
_DUO_AKEY=''
# Option: [admin_ratelimit_max_burst]
# Notes: Allow a burst of requests of up to this size, while maintaining
# the average indicated by 'admin_ratelimit_seconds'
# Values: [ NUMBER ] Default: '3'
#
ADMIN_RATELIMIT_MAX_BURST='3'
# Option: [admin_ratelimit_seconds]
# Notes: Number of seconds, on average, between admin requests from the
# same IP address before rate limiting kicks in.
# Values: [ SECONDS ] Default: '300'
#
ADMIN_RATELIMIT_SECONDS='300'
# Option: [admin_token]
# Notes: The plain text token or Argon2 PHC string used to authenticate
# in this very same page.
#
# Values: [ NONE | TOKEN ] Default: ''
#
ADMIN_TOKEN=''
# Option: [attachments_folder]
# Notes: Attachments folder.
# Values: [ FOLDER ] Default: '/var/lib/vaultwarden/attachments'
#
ATTACHMENTS_FOLDER='/var/lib/vaultwarden/attachments'
# Option: [data_folder]
# Notes: Main data folder.
# Values: [ FOLDER ] Default: '/var/lib/vaultwarden'
#
DATA_FOLDER='/var/lib/vaultwarden'
# Option: [database_conn_init]
# Notes: SQL statements to run when creating a new database connection,
# mainly useful for connection-scoped pragmas.
# Values: [ NONE | SQL ] Default: ''
#
DATABASE_CONN_INIT=''
# Option: [database_max_conns]
# Notes: Maximal number of connections at the same time.
# Values: [ SECONDS ] Default: '10'
#
DATABASE_MAX_CONNS='10'
# Option: [database_timeout]
# Notes: Number of seconds to try connect to the database before give up.
# Values: [ SECONDS ] Default: '30'
#
DATABASE_TIMEOUT='30'
# Option: [database_url]
# Notes: File or MySQL/PostgreSQL backend for database.
# Values: [ FILE | SQLCON ] Default: 'vaultwarden.sqlite'
#
DATABASE_URL='/var/lib/vaultwarden/server.sqlite'
#DATABASE_URL='mysql://<MYSQL_USER>:<MYSQL_PASSWORD>@<MYSQL_HOST>/<MYSQL_DATABASE>'
# Option: [db_connection_retries]
# Notes: Number of times to retry the database connection during startup,
# with 1 second between each retry, set to 0 to retry indefinitely.
# Values: [ NUMBER ] Default: '15'
#
DB_CONNECTION_RETRIES='15'
# Option: [disable_admin_token]
# Notes: Disables the Admin Token for the admin page so you may use your
# own auth in-front.
# Values: [ TRUE | FALSE ] Default: 'false'
#
DISABLE_ADMIN_TOKEN='false'
# Option: [domain_path]
# Notes: Domain URL Path - For Example in
# https://example.com:8443/path
# /path is the path.
# Values: [ NONE | PATH ] Default: ''
#
DOMAIN_PATH=''
# Option: [emergency_notification_reminder_schedule]
# Notes: Cron schedule of the job that sends expiration reminders to
# emergency access grantors.
# Values: [ NONE | CRON ] Default: '0 3 * * * *'
#
EMERGENCY_NOTIFICATION_REMINDER_SCHEDULE='0 3 * * * *'
# Option: [emergency_request_timeout_schedule]
# Notes: Cron schedule of the job that grants emergency access
# requests that have met the required wait time.
# Values: [ NONE | CRON ] Default: '0 7 * * * *'
#
EMERGENCY_REQUEST_TIMEOUT_SCHEDULE='0 7 * * * *'
# Option: [enable_db_wal]
# Notes: Set SQLite to operate in WAL mode.
# Values: [ TRUE | FALSE ] Default: 'true'
#
ENABLE_DB_WAL='true'
# Option: [event_cleanup_schedule]
# Notes: Cron schedule of the job that cleans old events from the
# event table.
# Values: [ NONE | CRON ] Default: '0 10 0 * * *'
#
EVENT_CLEANUP_SCHEDULE='0 10 0 * * *'
# Option: [events_days_retain]
# Notes: Number of days to retain events stored in the database.
# Values: [ NONE | DAYS ] Default: ''
#
EVENTS_DAYS_RETAIN=''
# Option: [experimental_client_feature_flags]
# Notes: Enable experimental feature flags for clients.
# This is a comma-separated list of flags, e.g. "flag1,flag2,flag3".
# The following flags are available:
# - inline-menu-positioning-improvements Enable the use of inline menu password generator
# and identity suggestions in the browser extension.
# - inline-menu-totp Enable the inline menu TOTP codes in the browser
# extension.
# - ssh-agent Enable SSH agent support on Desktop.
# - ssh-key-vault-item Enable the creation and use of SSH key vault
# items.
# - export-attachments Enable support for exporting attachments.
# - anon-addy-self-host-alias Enable configuring self-hosted Anon Addy alias
# generator.
# - simple-login-self-host-alias Enable configuring self-hosted Simple Login alias
# generator.
# - mutual-tls Enable the use of mutual TLS on Android.
# Values: [ FLAGS ] Default: 'fido2-vault-credentials'
#
EXPERIMENTAL_CLIENT_FEATURE_FLAGS='fido2-vault-credentials'
# Option: [extended_logging]
# Notes: State of extended logging.
# Values: [ TRUE | FALSE ] Default: 'false'
#
EXTENDED_LOGGING='false'
# Option: [icon_cache_folder]
# Notes: Icon Cache folder.
# Values: [ FOLDER ] Default: '/var/lib/vaultwarden/icon_cache'
#
ICON_CACHE_FOLDER='/var/cache/vaultwarden'
# Option: [icon_service]
# Notes: The predefined icon services are:
# internal | bitwarden | duckduckgo | google
# To specify a custom icon service, set a URL template with
# exactly one instance of '{}', which is replaced with the domain.
# For example: 'https://icon.example.com/domain/{}'
# 'internal' refers to Vaultwarden's built-in icon fetching
# implementation. If an external service is set, an icon request
# to Vaultwarden will return an HTTP redirect to the corresponding
# icon at the external service.
# Values: [ INTERNAL | BITWARDEN | DUCKDUCKGO | GOOGLE | IP/FQDN ] Default: 'internal'
#
ICON_SERVICE='internal'
# Option: [incomplete_2fa_schedule]
# Notes: Cron schedule of the job that checks for incomplete 2FA logins.
# Values: [ NONE | CRON ] Default: '30 * * * * *'
#
INCOMPLETE_2FA_SCHEDULE='30 * * * * *'
# Option: [invitation_expiration_hours]
# Notes: The number of hours after which an organization invite token,
# emergency access invite token, email verification token and
# deletion request token will expire (must be at least 1)
# Values: [ HOURS ] Default: '3'
#
INVITATION_EXPIRATION_HOURS='3'
# Option: [job_poll_interval_ms]
# Notes: How often the job scheduler thread checks for jobs to run.
# Values: [ 0 | MILLISECONDS ] Default: '30000'
#
JOB_POLL_INTERVAL_MS='30000'
# Option: [log_file]
# Notes: Looging output to file.
# Values: [ FILE ] Default: 'vaultwarden.log'
#
LOG_FILE='/var/log/vaultwarden/vaultwarden.log'
# Option: loglevel
# Notes: Set the log level output.
# ERROR
# WARN
# INFO
# DEBUG
# TRACE
# Values: [ LEVEL ] Default: 'info'
#
LOG_LEVEL='info'
# Option: [login_ratelimit_max_burst]
# Notes: Allow a burst of requests of up to this size, while maintaining
# the average indicated by 'login_ratelimit_seconds'.
# Values: [ NUMBER ] Default: '10'
#
LOGIN_RATELIMIT_MAX_BURST='10'
# Option: [login_ratelimit_seconds]
# Notes: Number of seconds, on average, between login and 2FA requests
# from the same IP address before rate limiting kicks in.
# Values: [ SECONDS ] Default: '60'
#
LOGIN_RATELIMIT_SECONDS='60'
# Option: [org_events_enabled]
# Notes: Set state of event logging for organizations.
# Values: [ TRUE | FALSE ] Default: 'false'
#
ORG_EVENTS_ENABLED='true'
# Option: [org_groups_enabled]
# Notes: Set state of groups support for organizations.
# Values: [ TRUE | FALSE ] Default: 'false'
#
ORG_GROUPS_ENABLED='true'
# Option: [push_enabled]
# Notes: State of push notifications.
# Values: [ TRUE | FALSE ] Default: 'false'
#
PUSH_ENABLED='false'
# Option: [push_installation_id]
# Notes: Installation ID
# See: https://bitwarden.com/host
# Values: [ NONE | ID ] Default: ''
#
PUSH_INSTALLATION_ID=''
# Option: [push_installation_key]
# Notes: Installation Key
# See: https://bitwarden.com/host
# Values: [ NONE | KEY ] Default: ''
#
PUSH_INSTALLATION_KEY=''
# Option: [push_relay_uri]
# Notes: Addres for push notifications relay server.
# Values: [ NONE | IP/FQDN ] Default: 'https://api.bitwarden.eu'
#
PUSH_RELAY_URI='https://api.bitwarden.eu'
# Option: [push_identity_uri]
# Notes: Addres for push notifications identity server.
# Values: [ NONE | IP/FQDN ] Default: 'https://identity.bitwarden.eu'
#
PUSH_IDENTITY_URI='https://identity.bitwarden.eu'
# Option: [rsa_key_filename]
# Notes: Name of RSA keyfile.
# Values: [ FILE ] Default: 'rsa_key'
#
RSA_KEY_FILENAME='/var/lib/vaultwarden/vaultwarden'
# Option: [send_purge_schedule]
# Notes: Cron schedule of the job that checks for Sends past their
# deletion date.
# Values: [ NONE | CRON ] Default: '0 5 * * * *'
#
SEND_PURGE_SCHEDULE='0 5 * * * *'
# Option: [sends_folder]
# Notes: Sends folder.
# Values: [ FOLDER ] Default: '/var/lib/vaultwarden/sends'
#
SENDS_FOLDER='/var/lib/vaultwarden/sends'
# Option: [smtp_debug]
# Notes: State of detailed SMTP messages. This could contain sensitive
# information like passwords and usernames!
# Values: [ TRUE | FALSE ] Default: 'false'
#
SMTP_DEBUG='false'
# Option: [sso_enabled]
# Notes: Controls whether users can login using an OpenID Connect
# identity provider.
# Values: [ TRUE | FALSE ] Default: 'false'
#
SSO_ENABLED='false'
# Option: [sso_only]
# Notes: Prevent users from logging in directly without going through
# SSO.
# Values: [ TRUE | FALSE ] Default: 'false'
#
SSO_ONLY='false'
# Option: [sso_signups_match_email]
# Notes: On SSO Signup if a user with a matching email already exists
# make the association.
# Values: [ TRUE | FALSE ] Default: 'true'
#
SSO_SIGNUPS_MATCH_EMAIL='true'
# Option: [sso_authority]
# Notes: Base URL of the OIDC server.
# Values: [ NONE | IP/FQDN ] Default: ''
#
SSO_AUTHORITY=''
# Option: [sso_scopes]
# Notes: Authorization request scopes.
# Values: [ SCOPES ] Default: 'email profile'
#
SSO_SCOPES='email profile'
# Option: [sso_authorize_extra_params]
# Notes: Authorization request scopes.
# Values: [ PARAMETER ] Default: 'access_type=offline&prompt=consent'
#
SSO_AUTHORIZE_EXTRA_PARAMS="access_type=offline&prompt=consent"
# Option: [sso_pkce]
# Notes: Activate PKCE for the Auth Code flow.
# Values: [ TRUE | FALSE ] Default: 'true'
#
SSO_PKCE='true'
# Option: [sso_audience_trusted]
# Notes: Regex for additional trusted Id token audience.
# Values: [ REGEX ] Default: '^$'
#
SSO_AUDIENCE_TRUSTED='^$'
# Option: [sso_client_id]
# Notes: SSO Client ID
# Values: [ NONE | ID ] Default: ''
#
SSO_CLIENT_ID=''
# Option: [sso_client_secret]
# Notes: SSO Client Key.
# Values: [ NONE | KEY ] Default: ''
#
SSO_CLIENT_SECRET=''
# Option: [sso_master_password_policy]
# Notes: Optional Master password policy.
# Values: [ POLICY ] Default: '{"enforceOnLogin":false,"minComplexity":3,"minLength":12,"requireLower":false,"requireNumbers":false,"requireSpecial":false,"requireUpper":false}'
#
SSO_MASTER_PASSWORD_POLICY='{"enforceOnLogin":false,"minComplexity":3,"minLength":12,"requireLower":false,"requireNumbers":false,"requireSpecial":false,"requireUpper":false}'
# Option: [sso_auth_only_not_session]
# Notes: Use sso only for authentication not the session lifecycle.
# Values: [ TRUE | FALSE ] Default: 'false'
#
SSO_AUTH_ONLY_NOT_SESSION='false'
# Option: [sso_client_cache_expiration]
# Notes: Client cache for discovery endpoint.
# Values: [ SECONDS ] Default: '0'
#
SSO_CLIENT_CACHE_EXPIRATION='0'
# Option: [sso_debug_tokens]
# Notes: Log all the tokens, LOG_LEVEL=debug is required.
# Values: [ TRUE | FALSE ] Default: 'false'
#
SSO_DEBUG_TOKENS='false'
# Option: [templates_folder]
# Notes: Templates folder.
# Values: [ FOLDER ] Default: '/usr/lib/vaultwarden/templates'
#
TEMPLATES_FOLDER='/usr/lib/vaultwarden/templates'
# Option: [tmp_folder]
# Notes: Temporary folder used for storing temporary file uploads.
# Values: [ FOLDER ] Default: '/var/lib/vaultwarden/tmp'
#
TMP_FOLDER='/tmp'
# Option: [trash_purge_schedule]
# Notes: Cron schedule of the job that checks for trashed items to delete
# permanently.
# Values: [ NONE | CRON ] Default: '0 5 0 * * *'
#
TRASH_PURGE_SCHEDULE='0 5 0 * * *'
# Option: [use_syslog]
# Notes: State of logging output to syslog.
# Values: [ TRUE | FALSE ] Default: 'false'
#
USE_SYSLOG='false'
# Option: [web_vault_enabled]
# Notes: State of Web Vault.
# Values: [ TRUE | FALSE ] Default: 'true'
#
WEB_VAULT_ENABLED='true'
# Option: [web_vault_folder]
# Notes: Web Vault folder.
# Values: [ FOLDER ] Default: '/usr/lib/vaultwarden/web-vault'
#
WEB_VAULT_FOLDER='/usr/lib/vaultwarden/web-vault'

View File

@@ -0,0 +1,38 @@
[Unit]
Description=Vaultwarden Server
ConditionFileNotEmpty=/etc/vaultwarden/vaultwarden.conf
# SQLite
After=network.target network-online.target
Requires=network.target
# MariaDB
# After=network.target network-online.target mariadb.service
# Requires=mariadb.service
# PostgreSQL
# After=network.target network-online.target postgresql.service
# Requires=postgresql.service
[Service]
Type=simple
Environment=ROCKET_ADDRESS=::
EnvironmentFile=/etc/vaultwarden/vaultwarden.conf
ExecStartPre=-/usr/lib/vaultwarden/email_header_logo
ExecStart=/usr/sbin/vaultwarden
ExecStartPost=/bin/sh -c "umask '022'; /usr/bin/pgrep --newest 'vaultwarden' > '/run/vaultwarden/vaultwarden.pid'"
ExecStop=/bin/rm --force '/run/vaultwarden/vaultwarden.pid'
User=vaultwarden
Group=vaultwarden
PrivateDevices=true
PrivateTmp=true
ProtectSystem=strict
ReadWriteDirectories=/var/cache/vaultwarden
ReadWriteDirectories=/var/lib/vaultwarden
ReadWriteDirectories=/var/log/vaultwarden
RuntimeDirectory=vaultwarden
RuntimeDirectoryMode=755
WorkingDirectory=/var/lib/vaultwarden
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,2 @@
g vaultwarden - -
u vaultwarden - "vaultwarden" /nonexistent /usr/sbin/nologin

View File

@@ -0,0 +1,30 @@
#!/bin/bash
###
#
# Options Section
#
###
set -e
set -u
set -o pipefail
###
#
# Runtime Environment
#
###
HEADER='/usr/lib/vaultwarden/templates/email/email_header.hbs'
IMAGE='/etc/vaultwarden/email_logo.png'
WIDTH=$(/usr/bin/exiftool -s -s -s -ImageWidth "${IMAGE}")
HEIGHT=$(/usr/bin/exiftool -s -s -s -ImageHeight "${IMAGE}")
BASE64=$(/usr/bin/base64 --wrap='0' "${IMAGE}")
BASE64="data:image/bmp;base64,${BASE64}"
/usr/bin/sed --in-place --expression="s|src=\"data:image/[^\"]*\"|src=\"${BASE64}\"|g" "${HEADER}" || true
/usr/bin/sed --in-place --expression="s|width=\"[0-9]*\"|width=\"${WIDTH}\"|g" "${HEADER}" || true
/usr/bin/sed --in-place --expression="s|height=\"[0-9]*\"|height=\"${HEIGHT}\"|g" "${HEADER}" || true
exit 0

View File

@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="robots" content="noindex,nofollow" />
<link rel="icon" type="image/png" href="{{urlpath}}/vw_static/vaultwarden-favicon.png">
<title>Vaultwarden - Fehler 404</title>
<link rel="stylesheet" href="{{urlpath}}/vw_static/bootstrap.css" />
<link rel="stylesheet" href="{{urlpath}}/vw_static/404.css" />
</head>
<body class="bg-light">
<nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4 shadow fixed-top">
<div class="container">
<a class="navbar-brand" href="{{urlpath}}/"><img class="vaultwarden-icon" src="{{urlpath}}/vw_static/vaultwarden-icon.png" alt="V">aultwarden</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse"
aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav me-auto">
</div>
</div>
</nav>
<main style="margin: 10% auto !important;" class="container inner content text-center">
<h2>Fehler 404</h2>
<p class="lead">Die von Ihnen aufgerufene Seite existiert nicht.</p>
<p>Zurück zum <a href="{{urlpath}}/">Vaultwarden-Web-Tresor</a></p>
<p hidden>You can <a href="{{urlpath}}/">return to the web-vault</a>, or <a href="https://github.com/dani-garcia/vaultwarden">contact us</a>.</p>
</main>
</body>
</html>

View File

@@ -0,0 +1,97 @@
<!DOCTYPE html>
<html lang="en" data-bs-theme="auto">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="robots" content="noindex,nofollow" />
<link rel="icon" type="image/png" href="{{urlpath}}/vw_static/vaultwarden-favicon.png">
<title>Vaultwarden Administration</title>
<link rel="stylesheet" href="{{urlpath}}/vw_static/bootstrap.css" />
<link rel="stylesheet" href="{{urlpath}}/vw_static/admin.css" />
<script src="{{urlpath}}/vw_static/admin.js"></script>
</head>
<body>
<nav class="navbar navbar-expand-md navbar-dark bg-dark mb-4 shadow fixed-top">
<div class="container-xl">
<a class="navbar-brand" href="{{urlpath}}/admin"><img class="vaultwarden-icon" src="{{urlpath}}/vw_static/vaultwarden-icon.png" alt="V">aultwarden Administration</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse"
aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav me-auto">
{{#if logged_in}}
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin">Einstellungen</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/users/overview">Benutzer</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/organizations/overview">Organisationen</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/admin/diagnostics">Systemdiagnose</a>
</li>
{{/if}}
<li class="nav-item">
<a class="nav-link" href="{{urlpath}}/" target="_blank" rel="noreferrer">Tresor</a>
</li>
</ul>
<ul class="navbar-nav">
<li class="nav-item dropdown">
<button
class="btn btn-link nav-link py-0 px-0 px-md-2 dropdown-toggle d-flex align-items-center"
id="bd-theme" type="button" aria-expanded="false" data-bs-toggle="dropdown"
data-bs-display="static" aria-label="Anzeigemodus (Automatisch)">
<span class="my-1 fs-4 theme-icon-active">
<use>&#9775;</use>
</span>
<span class="d-md-none ms-2" id="bd-theme-text">
Anzeigemodus wechseln
</span>
</button>
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="bd-theme-text">
<li>
<button type="button" class="dropdown-item d-flex align-items-center"
data-bs-theme-value="light" aria-pressed="false">
<span class="me-2 fs-4 theme-icon">
<use>&#9728;</use>
</span>
Hell
</button>
</li>
<li>
<button type="button" class="dropdown-item d-flex align-items-center"
data-bs-theme-value="dark" aria-pressed="false">
<span class="me-2 fs-4 theme-icon">
<use>&#127762;</use>
</span>
Dunkel
</button>
</li>
<li>
<button type="button" class="dropdown-item d-flex align-items-center active"
data-bs-theme-value="auto" aria-pressed="true">
<span class="me-2 fs-4 theme-icon">
<use>&#9775;</use>
</span>
Systemeinstellungen
</button>
</li>
</ul>
</li>
</ul>
{{#if logged_in}}
<a style="color: #333; background-color: #fda34a; border-color: #fda34a;" class="btn btn-sm btn-secondary" href="{{urlpath}}/admin/logout">Abmelden</a>
{{/if}}
</div>
</div>
</nav>
{{> (lookup this "page_content") }}
<!-- This script needs to be at the bottom, else it will fail! -->
<script src="{{urlpath}}/vw_static/bootstrap.bundle.js"></script>
</body>
</html>

View File

@@ -0,0 +1,202 @@
<main class="container-xl">
<div id="diagnostics-block" class="my-3 p-3 rounded shadow">
<h6 class="border-bottom pb-2 mb-3">Systemdiagnose</h6>
<h3>Versionsinformationen</h3>
<div class="row">
<div class="col-md">
<dl class="row">
<dt class="col-sm-5">Server Version
<span class="badge bg-success d-none abbr-badge" id="server-success" title="Die neueste Version ist installiert.">Erfolgreich</span>
<span class="badge bg-warning text-dark d-none abbr-badge" id="server-warning" title="Eine neue Version ist verfügbar.">Warnung</span>
<span class="badge bg-info text-dark d-none abbr-badge" id="server-branch" title="Diese Version ist verzweigt.">Branched</span>
</dt>
<dd class="col-sm-7">
<span id="server-installed">{{page_data.current_release}}</span>
</dd>
<dt class="col-sm-5">Server Version
<span class="badge bg-secondary d-none abbr-badge" id="server-failed" title="Die neueste Version kann nicht bestimmt werden.">Fehler</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">Website Version
<span class="badge bg-success d-none abbr-badge" id="web-success" title="Die neueste Version ist installiert.">Erfolgreich</span>
<span class="badge bg-warning text-dark d-none abbr-badge" id="web-warning" title="Eine neue Version ist verfügbar.">Warnung</span>
<span class="badge bg-info text-dark d-none abbr-badge" id="web-prerelease" title="Dies ist eine Beta-Version.">Beta-Version</span>
</dt>
<dd class="col-sm-7">
<span id="web-installed">{{page_data.web_vault_version}}</span>
</dd>
{{#unless page_data.running_within_docker}}
<dt class="col-sm-5">Website Version
<span class="badge bg-secondary d-none abbr-badge" id="web-failed" title="Die neueste Version kann nicht bestimmt werden.">Fehler</span>
</dt>
<dd class="col-sm-7">
<span id="web-latest">{{page_data.latest_web_build}}</span>
</dd>
{{/unless}}
{{/if}}
{{#unless page_data.web_vault_enabled}}
<dt class="col-sm-5">Website</dt>
<dd class="col-sm-7">
<span id="web-installed">Das Web vault wurde deaktiviert.</span>
</dd>
{{/unless}}
<dt class="col-sm-5">Datenbank</dt>
<dd class="col-sm-7">
<span><b>{{page_data.db_type}}:</b> {{page_data.db_version}}</span>
</dd>
</dl>
</div>
</div>
<h3>Diagnose</h3>
<div class="row">
<div class="col-md">
<dl class="row">
<dt class="col-sm-5">Betriebssystem / Architektur</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">Docker</dt>
<dd class="col-sm-7">
{{#if page_data.running_within_container}}
<span class="d-block"><b>Ja (Base: {{ page_data.container_base_image }})</b></span>
{{/if}}
{{#unless page_data.running_within_container}}
<span class="d-block"><b>Nein</b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">Umgebungsvariablen</dt>
<dt class="col-sm-7">
{{#if page_data.overrides}}
<span class="d-inline"><b>Ja</b></span>
<span class="badge bg-info text-dark abbr-badge" title="Die Umgebungsvariablen wurde durch die config.json überschrieben.">Überschrieben</span>
{{/if}}
{{#unless page_data.overrides}}
<span class="d-block"><b>Nein</b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">Reverse Proxy</dt>
<dd class="col-sm-7">
{{#if page_data.ip_header_exists}}
<span class="d-block" title="Ein IP-Header wurde erkannt."><b>Ja</b></span>
{{/if}}
{{#unless page_data.ip_header_exists}}
<span class="d-block" title="Es wurde kein IP-Header erkannt."><b>Nein</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="Die IP-Header-Konfiguration ist gültig.">Erfolgreich</span>
{{/if}}
{{#unless page_data.ip_header_match}}
<span class="badge bg-danger abbr-badge" title="Die IP-Header-Konfiguration ist ungültig.">Fehler</span>
{{/unless}}
</dt>
<dd class="col-sm-7">
{{#if page_data.ip_header_match}}
<span class="d-block"><b>Konfiguration / Server:</b> {{ page_data.ip_header_name }}</span>
{{/if}}
{{#unless page_data.ip_header_match}}
<span class="d-block"><b>Konfiguration:</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">Internetverbindung
{{#if page_data.has_http_access}}
<span class="badge bg-success abbr-badge" title="Es konnte eine Verbindung zum Internet hergestellt werden.">Erfolgreich</span>
{{/if}}
{{#unless page_data.has_http_access}}
<span class="badge bg-danger abbr-badge" title="Es konnte keine Verbindung zum Internet hergestellt werden.">Fehler</span>
{{/unless}}
</dt>
<dd class="col-sm-7">
{{#if page_data.has_http_access}}
<span class="d-block"><b>Ja</b></span>
{{/if}}
{{#unless page_data.has_http_access}}
<span class="d-block"><b>Nein</b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">Proxy</dt>
<dd class="col-sm-7">
{{#if page_data.uses_proxy}}
<span class="d-block" title="Der Traffic wird über einen Proxy geroutet."><b>Ja</b></span>
{{/if}}
{{#unless page_data.uses_proxy}}
<span class="d-block" title="Der Traffic wird direkt geroutet."><b>Nein</b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">Websocket
{{#if page_data.enable_websocket}}
<span class="badge bg-success d-none abbr-badge" id="websocket-success" title="Die Websocket-Verbindung funktioniert.">Erfolgreich</span>
<span class="badge bg-danger d-none abbr-badge" id="websocket-error" title="Die Websocket-Verbindung ist fehlgeschlagen.">Fehler</span>
{{/if}}
</dt>
<dd class="col-sm-7">
{{#if page_data.enable_websocket}}
<span class="d-block" title="Websocket-Verbindungen sind aktiviert."><b>Ja</b></span>
{{/if}}
{{#unless page_data.enable_websocket}}
<span class="d-block" title="Websocket-Verbindungen sind deaktiviert."><b>Nein</b></span>
{{/unless}}
</dd>
<dt class="col-sm-5">DNS
<span class="badge bg-success d-none abbr-badge" id="dns-success" title="Die Namensauflösung zu > github.com < ist erfolgreich.">Erfolgreich</span>
<span class="badge bg-danger d-none abbr-badge" id="dns-warning" title="Die Namensauflösung zu > github.com < ist fehlgeschlagen.">Fehler</span>
</dt>
<dd class="col-sm-7">
<span id="dns-resolved"><b>{{page_data.dns_resolved}}</b></span>
</dd>
<dt class="col-sm-5">Datum & Uhrzeit (Lokal)
{{#if page_data.tz_env}}
<span class="badge bg-success abbr-badge" title="Zeitzone">{{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">Datum & Uhrzeit (UTC)
<span class="badge bg-success d-none abbr-badge" id="time-success" title="Die Server- und Browseruhrzeit liegen weniger als 15 Sekunden auseinander.">Erfolgreich</span>
<span class="badge bg-danger d-none abbr-badge" id="time-warning" title="Die Server- und Browseruhrzeit liegen mehr als 15 Sekunden auseinander.">Fehler</span>
<span class="badge bg-success d-none abbr-badge" id="ntp-server-success" title="Die Server- und Zeitserveruhrzeit liegen weniger als 15 Sekunden auseinander.">Erfolgreich</span>
<span class="badge bg-danger d-none abbr-badge" id="ntp-server-warning" title="Die Server- und Zeitserveruhrzeit liegen mehr als 15 Sekunden auseinander.">Fehler</span>
<span class="badge bg-success d-none abbr-badge" id="ntp-browser-success" title="Die Browser- und Zeitserveruhrzeit liegen weniger als 15 Sekunden auseinander.">Erfolgreich</span>
<span class="badge bg-danger d-none abbr-badge" id="ntp-browser-warning" title="Die Browser- und Zeitserveruhrzeit liegen mehr als 15 Sekunden auseinander.">Fehler</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-Konfiguration
<span class="badge bg-success d-none abbr-badge" id="domain-success" title="Die Konfiguration der Domain stimmt mit der URL des Browser überein.">Erfolgreich</span>
<span class="badge bg-danger d-none abbr-badge" id="domain-warning" title="Die Konfiguration der Domain stimmt nicht mit der URL des Browser überein.">Fehler</span>
<span class="badge bg-success d-none abbr-badge" id="https-success" title="Die Verbindungen zum Server sind verschlüsselt.">Erfolgreich</span>
<span class="badge bg-danger d-none abbr-badge" id="https-warning" title="Die Verbindungen zum Server sind nicht verschlüsselt.">Fehler</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-Antwortvalidierung
<span class="badge bg-success d-none abbr-badge" id="http-response-success" title="Alle Header und HTTP-Anforderungsantworten sind in Ordnung.">Erfolgreich</span>
<span class="badge bg-danger d-none abbr-badge" id="http-response-warning" title="Einige Header oder HTTP-Anforderungsantworten geben ungültige Daten zurück.">Fehler</span>
</dt>
<dd class="col-sm-7">
<span id="http-response-errors" class="d-block"></span>
</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>

View File

@@ -0,0 +1,23 @@
<main class="container-xl">
{{#if error}}
<div class="align-items-center p-3 mb-3 text-opacity-50 text-dark bg-danger rounded shadow">
<div>
<h6 class="mb-0 text-dark">{{error}}</h6>
</div>
</div>
{{/if}}
<div style="margin: 64px auto;" class="align-items-center p-3 mb-3 text-opacity-50 text-light bg-secondary rounded shadow">
<div>
<h6 style="margin: 16px auto !important; color: #fff !important; text-align: center !important; font-size: 1.4rem !important" class="mb-0 text-light">Authentifizierung</h6>
<form class="form-inline" method="post" action="{{urlpath}}/admin">
<input style="margin: 20px auto 10px auto;" type="password" autocomplete="password" class="form-control w-50 mr-2" name="token" placeholder="Admin-Token eingeben" autofocus="autofocus">
{{#if redirect}}
<input type="hidden" id="redirect" name="redirect" value="/{{redirect}}">
{{/if}}
<button style="display: block; margin: 20px auto 16px auto; color: #333; background-color: #fda34a; border-color: #fda34a;" type="submit" class="btn btn-primary mt-2">Anmelden</button>
</form>
</div>
</div>
</main>

View File

@@ -0,0 +1,65 @@
<main class="container-xl">
<div id="organizations-block" class="my-3 p-3 rounded shadow">
<h6 class="border-bottom pb-2 mb-3">Registrierte Organisationen</h6>
<div class="table-responsive-xl small">
<table id="orgs-table" class="table table-sm table-striped table-hover">
<thead>
<tr>
<th class="vw-org-details">Organisationen</th>
<th class="vw-users">Benutzer</th>
<th class="vw-entries">Einträge</th>
<th class="vw-attachments">Anhänge</th>
<th class="vw-misc">Sonstiges</th>
<th class="vw-actions">Aktionen</th>
</tr>
</thead>
<tbody>
{{#each page_data}}
<tr>
<td>
<svg width="48" height="48" class="float-start me-2 rounded" data-jdenticon-value="{{id}}">
<div class="float-start">
<strong>{{name}}</strong>
<span class="me-2">({{billingEmail}})</span>
<span class="d-block">
<span class="badge bg-success font-monospace">{{id}}</span>
</span>
</div>
</td>
<td>
<span class="d-block">{{user_count}}</span>
</td>
<td>
<span class="d-block">{{cipher_count}}</span>
</td>
<td>
<span class="d-block"><strong>Menge:</strong> {{attachment_count}}</span>
{{#if attachment_count}}
<span class="d-block"><strong>Größe:</strong> {{attachment_size}}</span>
{{/if}}
</td>
<td>
<span class="d-block"><strong>Sammlungen:</strong> {{collection_count}}</span>
<span class="d-block"><strong>Gruppen:</strong> {{group_count}}</span>
<span class="d-block"><strong>Berichte:</strong> {{event_count}}</span>
</td>
<td class="text-end px-1 small">
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-delete-organization data-vw-org-uuid="{{id}}" data-vw-org-name="{{name}}" data-vw-billing-email="{{billingEmail}}">Organisation löschen</button><br>
</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
<div class="mt-3 clearfix">
<button style="color: #333; background-color: #fda34a; border-color: #fda34a;" type="button" class="btn btn-sm btn-primary float-end" id="reload">Aktualisieren</button>
</div>
</div>
</main>
<link rel="stylesheet" href="{{urlpath}}/vw_static/datatables.css" />
<script src="{{urlpath}}/vw_static/jquery-3.7.1.slim.js"></script>
<script src="{{urlpath}}/vw_static/datatables.js"></script>
<script src="{{urlpath}}/vw_static/admin_organizations.js"></script>
<script src="{{urlpath}}/vw_static/jdenticon-3.3.0.js"></script>

View File

@@ -0,0 +1,127 @@
<main class="container-xl">
<div id="admin_token_warning" class="alert alert-warning alert-dismissible fade show d-none">
<button type="button" class="btn-close" data-bs-target="admin_token_warning" data-bs-dismiss="alert" aria-label="Close"></button>
Sie benutzen einen unverschlüsselten 'ADMIN_TOKEN', was ein Sicherheitsrisiko darstellt.<br>
Bitte generieren Sie einen sicheren Schlüssel mit der Argon2 PHC Methode.<br>
Sie können dafür den Befehl 'vaultwarden hash' verwenden.<br>
Den 'ADMIN_TOKEN' ändern Sie entsprechend in der Vaultwaren Konfiguration (/etc/vaultwarden/vaultwarden.conf).
</div>
<div id="config-block" class="align-items-center p-3 mb-3 bg-secondary rounded shadow">
<div>
<form class="form needs-validation" id="config-form" novalidate>
{{#each page_data.config}}
{{#if groupdoc}}
<div class="card mb-3">
<button id="b_{{group}}" type="button" class="card-header text-start btn btn-link text-decoration-none" aria-expanded="false" aria-controls="g_{{group}}" data-bs-toggle="collapse" data-bs-target="#g_{{group}}">{{groupdoc}}</button>
<div id="g_{{group}}" class="card-body collapse">
{{#each elements}}
{{#if editable}}
<div class="row my-2 align-items-center is-overridden-{{overridden}} alert-row" title="[{{name}}] {{doc.description}}">
{{#case type "text" "number" "password"}}
<label for="input_{{name}}" class="col-sm-3 col-form-label">{{doc.name}}</label>
<div class="col-sm-8">
<div class="input-group">
<input class="form-control conf-{{type}}" id="input_{{name}}" type="{{type}}"
name="{{name}}" value="{{value}}" {{#if default}} placeholder="Standard: {{default}}"{{/if}}>
{{#case type "password"}}
<button class="btn btn-outline-secondary input-group-text" type="button" data-vw-pw-toggle="input_{{name}}">Anzeigen / Verbergen</button>
{{/case}}
</div>
</div>
{{/case}}
{{#case type "checkbox"}}
<div class="col-sm-3 col-form-label">{{doc.name}}</div>
<div class="col-sm-8">
<div class="form-check">
<input class="form-check-input conf-{{type}}" type="checkbox" id="input_{{name}}"
name="{{name}}" {{#if value}} checked {{/if}}>
<label class="form-check-label" for="input_{{name}}"> Standard: {{default}} </label>
</div>
</div>
{{/case}}
</div>
{{/if}}
{{/each}}
{{#case group "smtp"}}
<div class="row my-2 align-items-center pt-3 border-top" title="Verschickt eine Test-E-Mail an die angegebene E-Mail-Adresse.">
<label for="smtp-test-email" class="col-sm-3 col-form-label">SMTP-Konfigurationstest</label>
<div class="col-sm-8 input-group">
<input class="form-control" id="smtp-test-email" type="email" placeholder="E-Mail-Adresse" required spellcheck="false">
<button style="color: #333; background-color: #fda34a; border-color: #fda34a;" type="button" class="btn btn-outline-primary input-group-text" id="smtpTest">Abschicken</button>
<div class="invalid-tooltip">Bitte geben Sie eine korrekte E-Mail-Adresse an.</div>
</div>
</div>
{{/case}}
</div>
</div>
{{/if}}
{{/each}}
<div class="card mb-3">
<button id="b_readonly" type="button" class="card-header text-start btn btn-link text-decoration-none" aria-expanded="false" aria-controls="g_readonly"
data-bs-toggle="collapse" data-bs-target="#g_readonly">Read-Only Settings</button>
<div id="g_readonly" class="card-body collapse">
{{#each page_data.config}}
{{#each elements}}
{{#unless editable}}
<div class="row my-2 align-items-center alert-row" title="[{{name}}] {{doc.description}}">
{{#case type "text" "number" "password"}}
<label for="input_{{name}}" class="col-sm-3 col-form-label">{{doc.name}}</label>
<div class="col-sm-8">
<div class="input-group">
{{!--
Also set the database_url input as password here.
If we would set it to password in config.rs it will not be character masked for the support string.
And sometimes this is more useful for providing support than just 3 asterisk.
--}}
{{#if (eq name "database_url")}}
<input readonly class="form-control" id="input_{{name}}" type="password" value="{{value}}" {{#if default}} placeholder="Default: {{default}}" {{/if}}>
<button class="btn btn-outline-secondary" type="button" data-vw-pw-toggle="input_{{name}}">Anzeigen / Verbergen</button>
{{else}}
<input readonly class="form-control" id="input_{{name}}" type="{{type}}" value="{{value}}" {{#if default}} placeholder="Default: {{default}}" {{/if}} spellcheck="false">
{{#case type "password"}}
<button class="btn btn-outline-secondary" type="button" data-vw-pw-toggle="input_{{name}}">Anzeigen / Verbergen</button>
{{/case}}
{{/if}}
</div>
</div>
{{/case}}
{{#case type "checkbox"}}
<div class="col-sm-3 col-form-label">{{doc.name}}</div>
<div class="col-sm-8">
<div class="form-check align-middle">
<input disabled class="form-check-input" type="checkbox" id="input_{{name}}"
{{#if value}} checked {{/if}}>
<label class="form-check-label" for="input_{{name}}"> Standard: {{default}} </label>
</div>
</div>
{{/case}}
</div>
{{/unless}}
{{/each}}
{{/each}}
</div>
</div>
<button style="color: #333; background-color: #fda34a; border-color: #fda34a;" type="submit" class="btn btn-primary">Speichern</button>
<button style="color: #333; background-color: #fda34a; border-color: #fda34a;" type="button" class="btn btn-danger float-end" id="deleteConf">Zurücksetzen</button>
</form>
</div>
</div>
</main>
<style>
#config-block ::placeholder {
/* Most modern browsers support this now. */
color: orangered;
}
.is-overridden-true {
--bs-alert-color: #664d03;
--bs-alert-bg: #fff3cd;
--bs-alert-border-color: #ffecb5;
}
</style>
<script src="{{urlpath}}/vw_static/admin_settings.js"></script>

View File

@@ -0,0 +1,147 @@
<main class="container-xl">
<div id="users-block" class="my-3 p-3 rounded shadow">
<h6 class="border-bottom pb-2 mb-3">Registrierte Benutzer</h6>
<div class="table-responsive-xl small">
<table id="users-table" class="table table-sm table-striped table-hover">
<thead>
<tr>
<th class="vw-account-details">Benutzer</th>
<th style="padding: 0 50px 0 0 !important;" class="vw-created-at">Erstellt am</th>
<th class="vw-last-active">letzte Aktivität</th>
<th style="padding: 0 50px 0 0 !important;" class="vw-entries">Einträge</th>
<th class="vw-attachments">Anhänge</th>
<th class="vw-organizations">Organisationen</th>
<th class="vw-actions">Aktionen</th>
</tr>
</thead>
<tbody>
{{#each page_data}}
<tr>
<td>
<svg width="48" height="48" class="float-start me-2 rounded" data-jdenticon-value="{{email}}">
<div>
<strong>{{name}}</strong>
<span class="d-block">{{email}}</span>
<span class="d-block">
{{#unless user_enabled}}
<span class="badge bg-danger me-2">Deaktiviert</span>
{{/unless}}
{{#if twoFactorEnabled}}
<span class="badge bg-success me-2">2FA</span>
{{/if}}
{{#case _status 1}}
<span class="badge bg-warning text-dark me-2">Eingeladen</span>
{{/case}}
{{#if emailVerified}}
<span class="badge bg-success me-2">Verifiziert</span>
{{/if}}
</span>
</div>
</td>
<td>
<span class="d-block">{{created_at}}</span>
</td>
<td>
<span class="d-block">{{last_active}}</span>
</td>
<td>
<span class="d-block">{{cipher_count}}</span>
</td>
<td>
<span class="d-block"><strong>Menge:</strong> {{attachment_count}}</span>
{{#if attachment_count}}
<span class="d-block"><strong>Größe:</strong> {{attachment_size}}</span>
{{/if}}
</td>
<td>
<div class="overflow-auto vw-org-cell" data-vw-user-email="{{email}}" data-vw-user-uuid="{{id}}">
{{#each organizations}}
<button class="badge" data-bs-toggle="modal" data-bs-target="#userOrgTypeDialog" data-vw-org-type="{{type}}" data-vw-org-uuid="{{id}}" data-vw-org-name="{{name}}">{{name}}</button>
{{/each}}
</div>
</td>
<td class="text-end px-1 small">
<span data-vw-user-uuid="{{id}}" data-vw-user-email="{{email}}">
{{#if TwoFactorEnabled}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-remove2fa>2FA entfernen</button><br>
{{/if}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-deauth-user>Sitzungen deautorisieren</button><br>
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-delete-user>Benutzer löschen</button><br>
{{#if user_enabled}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-disable-user>Benutzer deaktivieren</button><br>
{{else}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-enable-user>Benutzer aktivieren</button><br>
{{/if}}
{{#case _Status 1}}
<button type="button" class="btn btn-sm btn-link p-0 border-0 float-right" vw-resend-user-invite>Einladung erneut senden</button><br>
{{/case}}
</span>
</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
<div class="mt-3 clearfix">
<button style="color: #333; background-color: #fda34a; border-color: #fda34a;" type="button" class="btn btn-sm btn-danger" id="updateRevisions"
title="Zwingt alle Clients zur Synchronisation bei der nächsten Anmeldung.">
Synchronisieren
</button>
<button style="color: #333; background-color: #fda34a; border-color: #fda34a;" type="button" class="btn btn-sm btn-primary float-end" id="reload">Aktualisieren</button>
</div>
</div>
<div id="inviteUserFormBlock" class="align-items-center p-3 mb-3 text-white-50 bg-secondary rounded shadow">
<div>
<h6 style="margin: 16px auto !important; text-align: center !important; font-size: 1.4rem !important" class="mb-0 text-white">Registrierung</h6>
<form class="form-inline" id="inviteUserForm">
<input style="margin: 20px auto 10px auto;" type="email" class="form-control w-50" id="inviteEmail" placeholder="E-Mail-Adresse" required spellcheck="false" autofocus="autofocus">
<button style="display: block; margin: 20px auto 16px auto; color: #333; background-color: #fda34a; border-color: #fda34a;" type="submit" class="btn btn-primary">Anmelden</button>
</form>
</div>
</div>
<div id="userOrgTypeDialog" class="modal fade" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered modal-sm">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title">
<b>Update User Type:</b><br><b>Organisation:</b> <span id="userOrgTypeDialogOrgName"></span><br><b>Benutzer:</b> <span id="userOrgTypeDialogUserEmail"></span>
</h6>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<form class="form" id="userOrgTypeForm">
<input type="hidden" name="user_uuid" id="userOrgTypeUserUuid" value="">
<input type="hidden" name="org_uuid" id="userOrgTypeOrgUuid" value="">
<div class="modal-body">
<div class="radio">
<label><input type="radio" value="2" class="form-radio-input" name="user_type" id="userOrgTypeUser">&nbsp;Benutzer</label>
</div>
<div class="radio">
<label><input type="radio" value="3" class="form-radio-input" name="user_type" id="userOrgTypeManager">&nbsp;Operator</label>
</div>
<div class="radio">
<label><input type="radio" value="1" class="form-radio-input" name="user_type" id="userOrgTypeAdmin">&nbsp;Administrator</label>
</div>
<div class="radio">
<label><input type="radio" value="0" class="form-radio-input" name="user_type" id="userOrgTypeOwner">&nbsp;Besitzer</label>
</div>
</div>
<div class="modal-footer">
<button style="color: #333; background-color: #fda34a; border-color: #fda34a;" type="button" class="btn btn-sm btn-secondary" data-bs-dismiss="modal">Abbrechen</button>
<button style="color: #333; background-color: #fda34a; border-color: #fda34a;" type="submit" class="btn btn-sm btn-primary">Rolle bearbeiten</button>
</div>
</form>
</div>
</div>
</div>
</main>
<link rel="stylesheet" href="{{urlpath}}/vw_static/datatables.css" />
<script src="{{urlpath}}/vw_static/jquery-3.7.1.slim.js"></script>
<script src="{{urlpath}}/vw_static/datatables.js"></script>
<script src="{{urlpath}}/vw_static/admin_users.js"></script>
<script src="{{urlpath}}/vw_static/jdenticon-3.3.0.js"></script>

View File

@@ -0,0 +1,9 @@
Ihr Master-Passwort wurde geändert
<!---------------->
Ihr Master-Passwort wurde durch eine Ihnen angehörige Organisation geändert.
E-Mail-Adresse: {{user_name}}
Organisation: {{org_name}}
Wenn die Änderung Ihres Master-Passwortes unerwünscht war, so wenden Sie sich umgehend an den/die Besitzer/-in der oben genannten Organisation.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,54 @@
Ihr Master-Passwort wurde geändert
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ihr Master-Passwort wurde durch eine Ihnen angehörige Organisation geändert.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
E-Mail-Adresse
</td>
<td class="tb-4_td-2">
{{user_name}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Organisation
</td>
<td class="tb-4_td-4">
{{org_name}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn die Änderung Ihres Master-Passwortes unerwünscht war, so wenden Sie sich umgehend an den/die Besitzer/-in der oben genannten Organisation.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,10 @@
Verifizieren Sie Ihre neue E-Mail-Adresse
<!---------------->
Bestätigen Sie Ihre neue E-Mail-Adresse mit dem folgenden Code.
Code: {{token}}
Damit die Änderung Ihrer E-Mail-Adresse abgeschlossen werden kann, geben Sie bitte den oben genannten Code in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors ein.
Wenn Sie die Änderung Ihrer E-Mail-Adresse nicht wünschen, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,51 @@
Verifizieren Sie Ihre neue E-Mail-Adresse
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Bestätigen Sie Ihre neue E-Mail-Adresse mit dem folgenden Code.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Code
</td>
<td class="tb-4_td-2">
{{token}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Damit die Änderung Ihrer E-Mail-Adresse abgeschlossen werden kann, geben Sie bitte den oben genannten Code in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors ein.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Wenn Sie die Änderung Ihrer E-Mail-Adresse nicht wünschen, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,7 @@
Doppelregistrierung Ihrer E-Mail-Adresse
<!---------------->
Der/Die Benutzer/-in {{ acting_address }} versuchte sein Konto auf Ihre E-Mail-Adresse {{ existing_address }} zu registrieren.
Es besteht allerdings eine Registrierung eines Kontos mit der E-Mail-Adresse {{ existing_address }}.
Wenn Sie die Änderung Ihrer E-Mail-Adresse nicht vorgenommen haben, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,32 @@
Doppelregistrierung Ihrer E-Mail-Adresse
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Der/Die Benutzer/-in {{ acting_address }} versuchte sein Konto auf Ihre E-Mail-Adresse {{ existing_address }} zu registrieren. Es besteht allerdings eine Registrierung eines Kontos mit der E-Mail-Adresse {{ existing_address }}.
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td class="tb-5_td-1">
Wenn Sie die Änderung Ihrer E-Mail-Adresse nicht vorgenommen haben, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,11 @@
Your Email Change
<!---------------->
A user ({{ acting_address }}) recently tried to change their account to use this email address ({{ existing_address }}). You already have been invited to join Vaultwarden using this address.
To change your email address you first would have to delete the account associated with this email address ({{ existing_address }}):
Request account deletion: {{url}}/#/recover-delete
Once that is done you can change the email address of your existing account to this address. Any invitation would have to be redone.
If you did not try to change an email address, contact your administrator.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,30 @@
Your Email Change
<!---------------->
{{> email/email_header }}
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
A user ({{ acting_address }}) recently tried to change their account to use this email address ({{ existing_address }}). You already have been invited to join Vaultwarden using this address.
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
To change your email address you first would have to delete the account associated with this email address ({{ existing_address }}):
<a data-testid="recover-delete" href="{{url}}/#/recover-delete"
clicktracking=off target="_blank" style="color: #ffffff; text-decoration: none; text-align: center; cursor: pointer; display: inline-block; border-radius: 5px; background-color: #3c8dbc; border-color: #3c8dbc; border-style: solid; border-width: 10px 20px; margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
Request account deletion
</a>
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0 0 10px; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
Once that is done you can change the email address of your existing account to this address. Any invitation would have to be redone.
</td>
</tr>
<tr style="margin: 0; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: none;">
<td class="content-block last" style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; box-sizing: border-box; font-size: 16px; color: #333; line-height: 25px; margin: 0; -webkit-font-smoothing: antialiased; padding: 0; -webkit-text-size-adjust: none; text-align: center;" valign="top" align="center">
If you did not try to change an email address, contact your administrator.
</td>
</tr>
</table>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Löschung Ihres Vaultwarden-Tresors
<!---------------->
Für die Löschung Ihres Vaultwarden-Tresors bedarf es Ihrer Bestätigung.
Link: {{url}}/#/verify-recover-delete?userId={{user_id}}&token={{token}}&email={{email}}
Wenn Sie die Löschung Ihres Vaultwarden-Tresors nicht wünschen, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,47 @@
Löschung Ihres Vaultwarden-Tresors
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Für die Löschung Ihres Vaultwarden-Tresors bedarf es Ihrer Bestätigung.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Link
</td>
<td class="tb-4_td-2">
<a class="red" href="{{url}}/#/verify-recover-delete?userId={{user_id}}&token={{token}}&email={{email}}" target="_blank">
Vaultwarden-Tresor löschen
</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie die Löschung Ihres Vaultwarden-Tresors nicht wünschen, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,6 @@
===
Powered by
Bitwarden (https://bitwarden.com)
Vaultwarden (https://github.com/dani-garcia/vaultwarden)

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
Bestätigen Sie Ihren Notfallkontakt
<!---------------->
Ihr Notfallkontakt hat Ihre Einladung angenommen und wartet auf Ihre Bestätigung.
Notfallkontakt: {{grantee_email}}
Um Ihren Notfallkontakt zu bestätigen, melden Sie sich in Ihrem Vaultwarden-Web-Tresor an und wechseln in die Kontoeinstellungen.
Wenn Sie Ihren Notfallkontakt nicht bestätigen wollen, haben Sie die Möglichkeit diesen zu entfernen.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,55 @@
Bestätigen Sie Ihren Notfallkontakt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ihr Notfallkontakt hat Ihre Einladung angenommen und wartet auf Ihre Bestätigung.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Notfallkontakt
</td>
<td class="tb-4_td-2">
{{grantee_email}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Um Ihren Notfallkontakt zu bestätigen, melden Sie sich in Ihrem
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
an und wechseln in die Kontoeinstellungen.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Wenn Sie Ihren Notfallkontakt nicht bestätigen wollen, haben Sie die Möglichkeit diesen zu entfernen.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Sie wurden als Notfallkontakt hinterlegt
<!---------------->
Sie wurden erfolgreich als Notfallkontakt hinterlegt.
Benutzer/-in: {{grantor_name}}
Sie haben ab sofort die Möglichkeit, einen Notfallzugriff in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors für den/die oben genannten Benutzer/-in zu initiieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,50 @@
Sie wurden als Notfallkontakt hinterlegt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Sie wurden erfolgreich als Notfallkontakt hinterlegt.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Benutzer/-in
</td>
<td class="tb-4_td-2">
{{grantor_name}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Sie haben ab sofort die Möglichkeit, einen Notfallzugriff in den Kontoeinstellungen Ihres
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
für den/die oben genannten Benutzer/-in zu initiieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Ein Notfallzugriff wurde genehmigt
<!---------------->
Ihre Anfrage für einen Notfallzugriff wurde genehmigt.
Benutzer/-in: {{grantor_name}}
Sie haben ab sofort die Möglichkeit, die Zugangsdaten in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors für den/die oben genannten Benutzer/-in einzusehen.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,50 @@
Ein Notfallzugriff wurde genehmigt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ihre Anfrage für einen Notfallzugriff wurde genehmigt.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Benutzer/-in
</td>
<td class="tb-4_td-2">
{{grantor_name}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Sie haben ab sofort die Möglichkeit, die Zugangsdaten in den Kontoeinstellungen Ihres
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
für den/die oben genannten Benutzer/-in einzusehen.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,10 @@
Ein Notfallzugriff wurde initiiert
<!---------------->
Ein Notfallzugriff auf Ihren Vaultwarden-Tresor wurde initiiert.
Benutzer/-in: {{grantee_name}}
Berechtigung: {{atype}}
Wenn Sie nichts unternehmen, wird der Notfallzugriff in <b>{{wait_time_days}} Tag(en)</b> genehmigt.
Ansonsten haben Sie in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors die Möglichkeit, den Notfallzugriff zu genehmigen oder abzulehnen.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,63 @@
Ein Notfallzugriff wurde initiiert
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ein Notfallzugriff auf Ihren Vaultwarden-Tresor wurde initiiert.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Benutzer/-in
</td>
<td class="tb-4_td-2">
{{grantee_name}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Berechtigung
</td>
<td class="tb-4_td-4">
{{atype}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie nichts unternehmen, wird der Notfallzugriff in <b>{{wait_time_days}} Tag(en)</b> genehmigt.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Ansonsten haben Sie in den Kontoeinstellungen Ihres
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
die Möglichkeit, den Notfallzugriff zu genehmigen oder abzulehnen.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,6 @@
Ihr Notfallzugriff wurde abgelehnt
<!---------------->
Ihre Anfrage für einen Notfallzugriff wurde abgelehnt.
Benutzer/-in: {{grantor_name}}
{{> email/email_footer_text }}

View File

@@ -0,0 +1,35 @@
Ihr Notfallzugriff wurde abgelehnt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ihre Anfrage für einen Notfallzugriff wurde abgelehnt.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Benutzer/-in
</td>
<td class="tb-4_td-2">
{{grantor_name}}
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,10 @@
Ein Notfallzugriff wurde initiiert
<!---------------->
Ein Notfallzugriff auf Ihr Vaultwarden-Tresor wurde initiiert.
Benutzer/-in: {{grantee_name}}
Berechtigung: {{atype}}
Wenn Sie nichts unternehmen, wird der Notfallzugriff in {{wait_time_days}} Tag(en) genehmigt.
Ansonsten haben Sie in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors die Möglichkeit, den Notfallzugriff zu genehmigen oder abzulehnen.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,63 @@
Ein Notfallzugriff wurde initiiert
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ein Notfallzugriff auf Ihr Vaultwarden-Tresor wurde initiiert.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Benutzer/-in
</td>
<td class="tb-4_td-2">
{{grantee_name}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Berechtigung
</td>
<td class="tb-4_td-4">
{{atype}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie nichts unternehmen, wird der Notfallzugriff in <b>{{wait_time_days}} Tag(en)</b> genehmigt.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Ansonsten haben Sie in den Kontoeinstellungen Ihres
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
die Möglichkeit, den Notfallzugriff zu genehmigen oder abzulehnen.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,9 @@
Ein Notfallzugriff wurde genehmigt
<!---------------->
Ein Notfallzugriff auf Ihr Vaultwarden-Tresor wurde genehmigt.
Benutzer/-in: {{grantee_name}}
Berechtigung: {{atype}}
Wenn Sie den Notfallzugriff von den/die oben genannten Benutzer/-in nicht wünschen, haben Sie die Möglichkeit, diesen in in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors zu entziehen.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,58 @@
Ein Notfallzugriff wurde genehmigt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ein Notfallzugriff auf Ihr Vaultwarden-Tresor wurde genehmigt.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Benutzer/-in
</td>
<td class="tb-4_td-2">
{{grantee_name}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Berechtigung
</td>
<td class="tb-4_td-4">
{{atype}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie den Notfallzugriff von den/die oben genannten Benutzer/-in nicht wünschen, haben Sie die Möglichkeit, diesen in in den Kontoeinstellungen Ihres
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
zu entziehen.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,13 @@
Unvollständige Zwei-Faktor-Authentifizierung
<!---------------->
Die Anmeldung in Ihrem Vaultwarden-Tresor ist aufgrund der erfolglosen Zwei-Faktor-Authentifizierung unvollständig.
Datum: {{datetime}}
Zeitüberschreitung: {{time_limit}} Minute(n)
IP-Adresse: {{ip}}
Gerätename: {{device_name}}
Gerätetyp: {{device_type}}
Wenn Sie keine Anmeldung in Ihrem Vaultwarden-Tresor mit den oben genannten Informationen vorgenommen haben, so wurde wahrscheinlich Ihr Master-Passwort kompromittiert.
Sie sollten umgehend in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors Ihr Master-Passwort ändern, den Verschlüsselungsschlüssel erneuern und Ihr Konto von allen Sitzungen abmelden.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,83 @@
Unvollständige Zwei-Faktor-Authentifizierung
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Die Anmeldung in Ihrem Vaultwarden-Tresor ist aufgrund der erfolglosen Zwei-Faktor-Authentifizierung unvollständig.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Datum
</td>
<td class="tb-4_td-2">
{{datetime}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Zeitüberschreitung
</td>
<td class="tb-4_td-4">
{{time_limit}} Minute(n)
</td>
</tr>
<tr>
<td class="tb-4_td-3">
IP-Adresse
</td>
<td class="tb-4_td-4">
{{ip}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Gerätename
</td>
<td class="tb-4_td-4">
{{device_name}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Gerätetyp
</td>
<td class="tb-4_td-4">
{{device_type}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie keine Anmeldung in Ihrem Vaultwarden-Tresor mit den oben genannten Informationen vorgenommen haben, so wurde wahrscheinlich Ihr Master-Passwort kompromittiert.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Sie sollten umgehend in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors Ihr Master-Passwort ändern, den Verschlüsselungsschlüssel erneuern und Ihr Konto von allen Sitzungen abmelden.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,9 @@
Ihre Organisationseinladung wurde angenommen
<!---------------->
Ihre Einladung zum Beitritt in Ihre Organisation wurde angenommen.
E-Mail-Adresse: {{email}}
Organisation: {{org_name}}
Wenn Sie den Beitritt der oben genannten E-Mail-Adresse bestätigen wollen, wechseln Sie in Ihrem Vaultwarden-Web-Tresor in die Mitgliederverwaltung der oben genannten Organisation.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,58 @@
Ihre Organisationseinladung wurde angenommen
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ihre Einladung zum Beitritt in Ihre Organisation wurde angenommen.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
E-Mail-Adresse
</td>
<td class="tb-4_td-2">
{{email}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Organisation
</td>
<td class="tb-4_td-4">
{{org_name}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie den Beitritt der oben genannten E-Mail-Adresse bestätigen wollen, wechseln Sie in Ihrem
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
in die Mitgliederverwaltung der oben genannten Organisation.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Der Organisationsbeitritt wurde bestätigt
<!---------------->
Ihr Beitritt in die Organisation wurde bestätigt.
Organisation: {{org_name}}
Sie haben ab sofort die Möglichkeit, die Zugangsdaten des Vaultwarden-Web-Tresors für die oben genannte Organisation einzusehen.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,50 @@
Der Organisationsbeitritt wurde bestätigt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Ihr Beitritt in die Organisation wurde bestätigt.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Organisation
</td>
<td class="tb-4_td-2">
{{org_name}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Sie haben ab sofort die Möglichkeit, die Zugangsdaten des
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
für die oben genannte Organisation einzusehen.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,12 @@
Neue Anmeldung in Ihrem Vaultwarden-Tresor
<!---------------->
Die Anmeldung in Ihrem Vaultwarden-Tresor war erfolgreich.
Datum: {{datetime}}
IP-Adresse: {{ip}}
Gerätename: {{device_name}}
Gerätetyp: {{device_type}}
Wenn Sie keine Anmeldung in Ihrem Vaultwarden-Web-Tresor mit den oben genannten Informationen vorgenommen haben, so wurde wahrscheinlich Ihr Master-Passwort kompromittiert.
Sie sollten umgehend in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors Ihr Master-Passwort ändern, den Verschlüsselungsschlüssel erneuern und Ihr Konto von allen Sitzungen abmelden.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,79 @@
Neue Anmeldung in Ihrem Vaultwarden-Tresor
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Die Anmeldung in Ihrem Vaultwarden-Tresor war erfolgreich.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Datum
</td>
<td class="tb-4_td-2">
{{datetime}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
IP-Adresse
</td>
<td class="tb-4_td-4">
{{ip}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Gerätename
</td>
<td class="tb-4_td-4">
{{device_name}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Gerätetyp
</td>
<td class="tb-4_td-4">
{{device_type}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie keine Anmeldung in Ihrem
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
mit den oben genannten Informationen vorgenommen haben, so wurde wahrscheinlich Ihr Master-Passwort kompromittiert.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Sie sollten umgehend in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors Ihr Master-Passwort ändern, den Verschlüsselungsschlüssel erneuern und Ihr Konto von allen Sitzungen abmelden.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,6 @@
Verifizierungscode
<!---------------->
Um den Vorgang abzuschließen, verwenden Sie bitte den folgenden Verifizierungscode.
Verifizierungscode: {{token}}
{{> email/email_footer_text }}

View File

@@ -0,0 +1,35 @@
Verifizierungscode
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Um den Vorgang abzuschließen, verwenden Sie bitte den folgenden Verifizierungscode.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Verifizierungscode
</td>
<td class="tb-4_td-2">
{{token}}
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,13 @@
Passworthinweis
<!---------------->
Um den Vorgang abzuschließen, verwenden Sie bitte den folgenden Verifizierungscode.
Passworthinweis: Es wurde kein Passworthinweis festgelegt.
Wenn Sie sich nicht an das Master-Passwort Ihres Vaultwarden-Tresors erinnern können, gibt es keine Möglichkeit Ihre Daten wiederherzustellen.
Sie haben jedoch die Möglichkeit Ihren Vaultwarden-Tresor mit dem nachfolgenden Link zu löschen, um einen neuen Vaultwarden-Tresor anzulegen.
Link: {{url}}/#/recover-delete
Wenn Sie den Hinweis Ihres Vaultwarden-Tresors nicht angefordert haben, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,63 @@
Passworthinweis
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Es wurde ein Hinweis zu Ihrem Master-Passwort Ihres Vaultwarden-Tresors angefordert.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Passworthinweis
</td>
<td class="tb-4_td-2">
Es wurde kein Passworthinweis festgelegt.
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie sich nicht an das Master-Passwort Ihres Vaultwarden-Tresors erinnern können, gibt es <b>keine</b> Möglichkeit Ihre Daten wiederherzustellen.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Sie haben jedoch die Möglichkeit Ihren Vaultwarden-Tresor mit dem nachfolgenden Link zu löschen, um einen neuen Vaultwarden-Tresor anzulegen.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
<a class="red" href="{{url}}/#/recover-delete" target="_blank">
Vaultwarden-Tresor löschen
</a>
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Wenn Sie den Hinweis Ihres Vaultwarden-Tresors nicht angefordert haben, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,13 @@
Passworthinweis
<!---------------->
Um den Vorgang abzuschließen, verwenden Sie bitte den folgenden Verifizierungscode.
Passworthinweis: {{hint}}
Wenn Sie sich nicht an das Master-Passwort Ihres Vaultwarden-Tresors erinnern können, gibt es keine Möglichkeit Ihre Daten wiederherzustellen.
Sie haben jedoch die Möglichkeit Ihren Vaultwarden-Tresor mit dem nachfolgenden Link zu löschen, um einen neuen Vaultwarden-Tresor anzulegen.
Link: {{url}}/#/recover-delete
Wenn Sie den Hinweis Ihres Vaultwarden-Tresors nicht angefordert haben, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,63 @@
Passworthinweis
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Es wurde ein Hinweis zu Ihrem Master-Passwort Ihres Vaultwarden-Tresors angefordert.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Passworthinweis
</td>
<td class="tb-4_td-2">
{{hint}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie sich nicht an das Master-Passwort Ihres Vaultwarden-Tresors erinnern können, gibt es <b>keine</b> Möglichkeit Ihre Daten wiederherzustellen.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Sie haben jedoch die Möglichkeit Ihren Vaultwarden-Tresor mit dem nachfolgenden Link zu löschen, um einen neuen Vaultwarden-Tresor anzulegen.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
<a class="red" href="{{url}}/#/recover-delete" target="_blank">
Vaultwarden-Tresor löschen
</a>
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Wenn Sie den Hinweis Ihres Vaultwarden-Tresors nicht angefordert haben, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Verifizieren Sie Ihr Konto
<!---------------->
Bestätigen Sie Ihre E-Mail-Adresse, um Ihr Konto zu verifizieren.
Link: {{{url}}}
Wenn Sie Ihr Konto nicht verifizieren möchten, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,48 @@
Verifizieren Sie Ihr Konto
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Bestätigen Sie Ihre E-Mail-Adresse, um Ihr Konto zu verifizieren.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Link
</td>
<td class="tb-4_td-2">
<a class="blue" href="{{{url}}}" target="_blank">
E-Mail-Adresse bestätigen
</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie Ihr Konto nicht verifizieren möchten, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Sie wurden aus einer Organisation entfernt
<!---------------->
Sie wurden aus einer Ihnen angehörigen Organisation entfernt, da Sie keine Zwei-Faktor-Authentifizierung verwenden.
Organisation: {{org_name}}
Sie haben die Möglichkeit eine Zwei-Faktor-Authentifizierung in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors einzurichten.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,46 @@
Sie wurden aus einer Organisation entfernt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Sie wurden aus einer Ihnen angehörigen Organisation entfernt, da Sie keine Zwei-Faktor-Authentifizierung verwenden.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Organisation
</td>
<td class="tb-4_td-2">
{{org_name}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Sie haben die Möglichkeit eine Zwei-Faktor-Authentifizierung in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresors einzurichten.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,9 @@
Einladung zur Hinterlegung als Notfallkontakt
<!---------------->
Sie wurden eingeladen, als Notfallkontakt hinterlegt zu werden.
Benutzer/-in: {{grantor_name}}
Link: {{url}}/#/accept-emergency/?id={{emer_id}}&name={{grantor_name}}&email={{email}}&token={{token}}
Wenn Sie nicht als Notfallkontakt hinterlegt werden wollen, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,56 @@
Einladung zur Hinterlegung als Notfallkontakt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Sie wurden eingeladen, als Notfallkontakt hinterlegt zu werden.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Benutzer/-in
</td>
<td class="tb-4_td-2">
{{grantor_name}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Link
</td>
<td class="tb-4_td-4">
<a class="blue" href="{{url}}/#/accept-emergency/?id={{emer_id}}&name={{grantor_name}}&email={{email}}&token={{token}}" target="_blank">
Einladung bestätigen
</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie nicht als Notfallkontakt hinterlegt werden wollen, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,9 @@
Einladung zu einer Organisation
<!---------------->
Sie wurden eingeladen, einer Organisation beizutreten.
Organisation: {{org_name}}
Link: {{{url}}}
Wenn Sie der oben genannten Organisation nicht beitreten wollen, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,56 @@
Einladung zu einer Organisation
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Sie wurden eingeladen, einer Organisation beizutreten.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Organisation
</td>
<td class="tb-4_td-2">
{{org_name}}
</td>
</tr>
<tr>
<td class="tb-4_td-3">
Link
</td>
<td class="tb-4_td-4">
<a class="blue" href="{{{url}}}" target="_blank">
Organisation beitreten
</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie der oben genannten Organisation nicht beitreten wollen, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Sie wurden aus einer Organisation entfernt
<!---------------->
Sie wurden aus einer Ihnen angehörigen Organisation entfernt, da die Organisation keine Mitgliedschaft in weiteren Organisationen gestattet.
Organisation: {{org_name}}
Sie haben die Möglichkeit, die anderen Organisationen zu verlassen oder einen Vaultwarden-Tresor anzulegen, welcher ausschließlich der oben genannten Organisation zugehört.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,46 @@
Sie wurden aus einer Organisation entfernt
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Sie wurden aus einer Ihnen angehörigen Organisation entfernt, da die Organisation keine Mitgliedschaft in weiteren Organisationen gestattet.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Organisation
</td>
<td class="tb-4_td-2">
{{org_name}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Sie haben die Möglichkeit, die anderen Organisationen zu verlassen oder einen Vaultwarden-Tresor anzulegen, welcher ausschließlich der oben genannten Organisation zugehört.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,6 @@
Testnachricht
<!---------------->
Die SMTP-Einstellungen Ihrer Vaultwarden-Installation sind korrekt.
Vaultwarden-Web-Tresor: {{url}}
{{> email/email_footer_text }}

View File

@@ -0,0 +1,21 @@
Testnachricht
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Die SMTP-Einstellungen Ihrer Vaultwarden-Installation sind korrekt.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,6 @@
Ihre E-Mail-Adresse hat sich geändert
<!---------------->
Ihre E-Mail-Adresse Ihres SSO-Providers hat sich geändert.
Bitte aktualisieren Sie Ihre E-Mail-Adresse in den Kontoeinstellungen Ihres Vaultwarden-Web-Tresor.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,36 @@
Ihre E-Mail-Adresse hat sich geändert
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
<b>Ihre E-Mail-Adresse Ihres SSO-Providers hat sich geändert.</b>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Bitte aktualisieren Sie Ihre E-Mail-Adresse in den
<a class="blue" href="{{url}}" target="_blank">
Kontoeinstellungen
</a>
Ihres Vaultwarden-Web-Tresor.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,6 @@
Verifizierungscode
<!---------------->
Um die Anmeldung in Ihren Vaultwarden-Tresor abzuschließen, verwenden Sie bitte den folgenden Verifizierungscode.
Verifizierungscode: {{token}}
{{> email/email_footer_text }}

View File

@@ -0,0 +1,35 @@
Verifizierungscode
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Um die Anmeldung in Ihren Vaultwarden-Tresor abzuschließen, verwenden Sie bitte den folgenden Verifizierungscode.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Verifizierungscode
</td>
<td class="tb-4_td-2">
{{token}}
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Verifizieren Sie Ihre E-Mail-Adresse
<!---------------->
Bestätigen Sie Ihre E-Mail-Adresse, um diese zu verifizieren.
Link: {{url}}/#/verify-email/?userId={{user_id}}&token={{token}}
Wenn Sie Ihr Vaultwarden-Tresor nicht verifizieren möchten, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,48 @@
Verifizieren Sie Ihre E-Mail-Adresse
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
Bestätigen Sie Ihre E-Mail-Adresse, um diese zu verifizieren.
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Link
</td>
<td class="tb-4_td-2">
<a class="blue" href="{{url}}/#/verify-email/?userId={{user_id}}&token={{token}}" target="_blank">
E-Mail-Adresse bestätigen
</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie Ihr Vaultwarden-Tresor nicht verifizieren möchten, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,8 @@
Ihr neuer Vaultwarden-Tresor
<!---------------->
Willkommen in Ihrem neuen Vaultwarden-Tresor!
Sie haben ab sofort Zugriff auf Ihren neuen Vaultwarden-Web-Tresor um Ihre ersten Passwörter zu speichern oder eine Zwei-Faktor-Authentifizierung einzurichten.
Wenn Sie keinen Vaultwarden-Tresor erstellt haben, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,41 @@
Ihr neuer Vaultwarden-Tresor
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
<b>Willkommen in Ihrem neuen Vaultwarden-Tresor!</b>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Sie haben ab sofort Zugriff auf Ihren neuen
<a class="blue" href="{{url}}" target="_blank">
Vaultwarden-Web-Tresor
</a>
um Ihre ersten Passwörter zu speichern oder eine Zwei-Faktor-Authentifizierung einzurichten.
</td>
</tr>
<tr>
<td class="tb-5_td-1">
Wenn Sie keinen Vaultwarden-Tresor erstellt haben, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1,10 @@
Ihr neuer Vaultwarden-Tresor
<!---------------->
Willkommen in Ihrem neuen Vaultwarden-Tresor!
Bevor Sie Ihren Vaultwarden-Tresor benutzen können, müssen Sie Ihre E-Mail-Adresse bestätigen.
Link: {{url}}/#/verify-email/?userId={{user_id}}&token={{token}}
Wenn Sie keinen Vaultwarden-Tresor erstellt haben, können Sie diese Nachricht ignorieren.
{{> email/email_footer_text }}

View File

@@ -0,0 +1,49 @@
Ihr neuer Vaultwarden-Tresor
<!---------------->
{{> email/email_header }}
<tr>
<td>
<table align="center" cellpadding="0" cellspacing="0" class="tb-2">
<tr>
<td class="tb-2_td-1">
<table align="none" cellpadding="0" cellspacing="20" class="tb-3">
<tr>
<td class="tb-3_td-1">
<b>Willkommen in Ihrem neuen Vaultwarden-Tresor!</b>
<p>Bevor Sie Ihren Vaultwarden-Tresor benutzen können, müssen Sie Ihre E-Mail-Adresse bestätigen.</p>
</td>
</tr>
<tr>
<td class="tb-3_td-2">
<table align="none" cellpadding="0" cellspacing="0" class="tb-4">
<tr>
<td class="tb-4_td-1">
Link
</td>
<td class="tb-4_td-2">
<a class="blue" href="{{url}}/#/verify-email/?userId={{user_id}}&token={{token}}" target="_blank">
E-Mail-Adresse bestätigen
</a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<table align="none" cellpadding="0" cellspacing="0" class="tb-5">
<tr>
<td>
Wenn Sie keinen Vaultwarden-Tresor erstellt haben, können Sie diese Nachricht ignorieren.
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{> email/email_footer }}

View File

@@ -0,0 +1 @@
/* See the wiki for examples and details: https://github.com/dani-garcia/vaultwarden/wiki/Customize-Vaultwarden-CSS */