简介:Vaultwarden是一款密码管理软件,因为完全的开源,所以受到了大家的喜爱。

环境:Debian 10

安装Docker

  1. 执行docker安装脚本

    wget -qO- get.docker.com | bash
  2. 检查安装结果

    docker version
  3. 启动 Docker

    systemctl start docker
  4. 查看 Docker 启动状态(绿色 active)

    systemctl status docker
  5. 允许 Docker 自启动

    systemctl enable docker
  6. 新建配置文件

    /etc/docker/daemon.json
    {
        "dns": ["8.8.8.8", "114.114.114.114"]
    }
  7. 重启docker

    service docker restart
  8. 注意自己的iptables行为,这有可能会影响docker网络端口的映射,例如:

    iptables -t nat -F

安装 Vaultwarden

  1. 拉取 vaultwarden 镜像

    docker pull vaultwarden/server:latest
  2. 运行容器(根据自己的需要选择运行的参数)

    docker run -d --name vaultwarden \
    -e I_REALLY_WANT_VOLATILE_STORAGE=true \
    -e DOMAIN=https://domain.cc/ \
    -e TZ=Asia/Shanghai \
    -e ADMIN_TOKEN='admin_pwd' \
    -e ORG_ATTACHMENT_LIMIT=10240 \
    -e USER_ATTACHMENT_LIMIT=102400 \
    -e SIGNUPS_ALLOWED=true \
    -e SIGNUPS_VERIFY=true \
    -e SIGNUPS_VERIFY_RESEND_TIME=3600 \
    -e SIGNUPS_VERIFY_RESEND_LIMIT=6 \
    -e INVITATIONS_ALLOWED=true \
    -e INVITATION_ORG_NAME=org_name \
    -e REQUIRE_DEVICE_EMAIL=true \
    -e EMAIL_TOKEN_SIZE=6 \
    -e EMAIL_EXPIRATION_TIME=600 \
    -e EMAIL_ATTEMPTS_LIMIT=3 \
    -e SMTP_HOST=mail.domain.cc \
    -e [email protected] \
    -e SMTP_FROM_NAME=from_name \
    -e SMTP_PORT=465 \
    -e SMTP_SECURITY=force_tls \
    -e [email protected] \
    -e SMTP_PASSWORD=stmp_user_pwd \
    -e SMTP_AUTH_MECHANISM=plain,login \
    -e SMTP_TIMEOUT=15 \
    -e SMTP_ACCEPT_INVALID_CERTS=false \
    -e SMTP_ACCEPT_INVALID_HOSTNAMES=false \
    -e LOG_FILE=/var/log/vaultwarden.log \
    -e LOG_LEVEL=warn \
    -e EXTENDED_LOGGING=true \
    -e DATA_FOLDER=/data \
    -e DATABASE_URL='mysql://dbuser:dbpwd@dbhost:3306/dbname' \
    -e ENABLE_DB_WAL=false \
    -e ATTACHMENT_FOLDER=/data/attachment \
    -e ICON_CACHE_FOLDER=/data/icon_cache \
    -v /var/www/html/vaultwarden:/data \
    -p 127.0.0.1:12580:80 \
    vaultwarden/server:latest
    SMTP_USERNAME参数要不要带@domain.cc需要看邮件服务器使用的是否是系统用户,如果是系统用户则不需要带@domain.cc,如果使用的是虚拟用户,那么看虚拟用户是什么,如果带有@domain.cc,那么这里也需要带上

ADMIN_TOKEN 参数生成方式如下(cli方式执行命令)

# Using the Bitwarden defaults
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
# Output: $argon2id$v=19$m=65540,t=3,p=4$bXBGMENBZUVzT3VUSFErTzQzK25Jck1BN2Z0amFuWjdSdVlIQVZqYzAzYz0$T9m73OdD2mz9+aJKLuOAdbvoARdaKxtOZ+jZcSL9/N0

# Using the OWASP minimum recommended settings
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 19456 -t 2 -p 1
# Output: $argon2id$v=19$m=19456,t=2,p=1$cXpKdUxHSWhlaUs1QVVsSStkbTRPQVFPSmdpamFCMHdvYjVkWTVKaDdpYz0$E1UgBKjUCD2Roy0jdHAJvXihugpG+N9WcAaR8P6Qn/8

参数解释

SIGNUP_ALLOWED:是否允许注册
INVITATIONS_ALLOWED : 是否允许组织邀请注册
ADMIN_TOKEN:用户管理界面 (/admin) 的登录密码,可以明文,不过最好使用新的标准对密码进行加密处理
LOG_FILE:日志文件地址
LOG_LEVEL:日志级别
EXTENDED_LOGGING:是否开启扩展日志
DATA_FOLDER:docker容器数据保存文件夹(默认为 /data)
DATABASE_URL:数据库地址
ATTACHMENT_FOLDER:附件路径
ICON_CACHE_FOLDER:图标缓存路径
更多参数配置>>

升级 Vaultwarden 镜像

  1. 停止原容器

    docker stop vaultwarden
  2. 删除原容器

    docker rm vaultwarden
  3. 删除原镜像文件

    docker image ls
    docker image rm $ID
  4. 重新拉取镜像

    docker pull vaultwarden/server:latest
  5. 重新运行 docker run 命令

    见上文

如果使用web,可以使用nginx代理,这里就不进行介绍了。

其他 Docker 命令

  1. 查看日志,当docker无法启动的时候可以使用这个来查看日志

    docker logs vaultwarden
  2. 启动容器

    docker start $name
  3. 停止容器

    docker stop $name
  4. 删除容器

    docker rm $name
  5. 查看运行容器

    docker ps -as
  6. 进入容器

    docker exec -it vaultwarden /bin/bash
  7. 删除镜像

    docker image rm $ID
  8. 复制容器内的文件到宿主机

    docker container cp -a 6f0545778d2e:/nginx/nginx.conf /etc/nginx/nginx.conf

Wiki地址客户端下载地址