在Hestiacp中新建网站配置ssl新建数据库的操作就不再赘述了。如果你是第一次看到hestiacp系列教程,请点击下方链接,就能看到完整的一系列教程了。

HestiaCP - HOSTEYE

安装 Docker

使用apt存储库安装

在新的主机上首次安装 Docker Engine 之前,您需要设置 Dockerapt存储库。之后,您可以从存储库安装和更新 Docker。

设置 Docker 的apt存储库。

# 添加 Docker 的 GPG 公钥:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 将资源库添加到 Apt 源:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装 Docker 包。要安装最新版本,请运行:

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

此时可以使用 docker version 命令检查是否安装成功:

安装 Docker Compose

上面就安装了。

安装 Vaultwarden

在Hestiacp中新建网站配置ssl新建数据库

为了利用hestiacp强大的备份恢复功能,我们将使用mysql数据库。在Hestiacp中新建网站配置ssl新建数据库的操作就不再赘述了。

修改配置文件

我们在 /home/user/web/domain/public_html/ 目录下创建一个 docker-compose.yml 文件。然后新建一个 data 文件夹。

docker-compose 配置参考:

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      - "DOMAIN=https://xxx.com"
      - "DATABASE_URL=DATABASE_URL=mysql://<vaultwarden_user>:<VAULTWARDEN_MYSQL_PASSWORD>@<宿主机ip地址:端口>/vaultwarden"
      - "ADMIN_TOKEN=xxxxxxx"
      - "SIGNUPS_ALLOWED=true"
      - "LOG_FILE=/data/vaultwarden.log"
    volumes:
      - "/home/user/web/domain/public_html/data/:/data"
    ports:
      - 8080:80

部分环境变量解释

DATABASE_URL

这个环境变量用于定义 Vaultwarden 连接到数据库的方式。在 Vaultwarden 中,支持多种数据库,包括 SQLite、MySQL、PostgreSQL 等。

DATABASE_URL=mysql://<vaultwarden_user>:<VAULTWARDEN_MYSQL_PASSWORD>@<宿主机ip地址:端口>/vaultwarden

  • mysql://:表示你使用的是 MySQL 数据库。
  • <vaultwarden_user>:这是 Vaultwarden 连接数据库时使用的 MySQL 用户名,应该替换为你实际创建的数据库用户名。
  • <VAULTWARDEN_MYSQL_PASSWORD>:这里写数据库密码。
  • @xxxxxx:这是数据库主机名,通常是指向 MySQL 容器或数据库服务器的地址。
  • /vaultwarden:这是 MySQL 数据库名称,表示 Vaultwarden 将使用名为 vaultwarden 的数据库。

ADMIN_TOKEN

这个环境变量用于启用 Vaultwarden 的管理员界面。

ADMIN_TOKEN=<some_random_token_as_per_above_explanation>

  • ADMIN_TOKEN:这是 Vaultwarden 管理员界面访问的凭证,类似于管理员密码。你可以将 <some_random_token_as_per_above_explanation> 替换为一个随机的、复杂的字符串,用来保护管理员页面。
  • 当你启用此功能后,你可以通过 Vaultwarden 的 /admin 页面进行管理和配置。没有此 ADMIN_TOKEN,你将无法访问管理界面。

volumes

为了利用hestiacp强大的备份恢复功能,我们将数据存储到网站目录下。请记得自行更改。

其他

请参考官方文档自行配置。

Configuration overview
Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs - dani-garcia/vaultwarden

Nginx 反向代理

hestiacp反代离不开模板,下面是我提供的参考模板,请自行修改

.tpl

#=========================================================================
# Default Web Domain Template
# DO NOT MODIFY THIS FILE! CHANGES WILL BE LOST WHEN REBUILDING DOMAINS
# https://hestiacp.com/docs/server-administration/web-templates.html
#=========================================================================

server {
	listen      %ip%:%proxy_port%;
	server_name %domain_idn% %alias_idn%;
	error_log   /var/log/%web_system%/domains/%domain%.error.log error;

	include %home%/%user%/conf/web/%domain%/nginx.forcessl.conf*;

    location ~ /.well-known {
        allow all;
    }

    location / {
      proxy_pass http://127.0.0.1:8080;   
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }



	include %home%/%user%/conf/web/%domain%/nginx.conf_*;
}

.stpl

#=========================================================================
# Default Web Domain Template
# DO NOT MODIFY THIS FILE! CHANGES WILL BE LOST WHEN REBUILDING DOMAINS
# https://hestiacp.com/docs/server-administration/web-templates.html
#=========================================================================

server {
	listen      %ip%:%proxy_ssl_port% ssl;
	server_name %domain_idn% %alias_idn%;
	error_log   /var/log/%web_system%/domains/%domain%.error.log error;

	ssl_certificate     %ssl_pem%;
	ssl_certificate_key %ssl_key%;
	ssl_stapling        on;
	ssl_stapling_verify on;

	# TLS 1.3 0-RTT anti-replay
	if ($anti_replay = 307) { return 307 https://$host$request_uri; }
	if ($anti_replay = 425) { return 425; }

	include %home%/%user%/conf/web/%domain%/nginx.hsts.conf*;

    location ~ /.well-known {
        allow all;
    }

    location / {
      proxy_pass http://127.0.0.1:8080;       
      rewrite ^/(.*)$ /$1 break;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header Upgrade-Insecure-Requests 1;
      proxy_set_header X-Forwarded-Proto https;
    }


	proxy_hide_header Upgrade;

	include %home%/%user%/conf/web/%domain%/nginx.ssl.conf_*;
}

防火墙放行端口

略。不懂的请看hestiacp系列教程。

最后更新: October 18, 2024