在Hestiacp中新建网站,配置ssl,新建数据库的操作就不再赘述了。如果你是第一次看到hestiacp系列教程,请点击下方链接,就能看到完整的一系列教程了。
安装 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强大的备份恢复功能,我们将数据存储到网站目录下。请记得自行更改。
其他
请参考官方文档自行配置。
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系列教程。