Vaultwarden — это облегчённая самохостинговая реализация сервера Bitwarden, написанная на языке Rust. Vaultwarden разработан как более простая и экономичная по ресурсам альтернатива официальному серверу Bitwarden, что делает его идеальным решением для запуска на виртуальных частных серверах (VPS) с объёмом оперативной памяти всего 1 ГБ, в средах Docker или на облачных серверах. В этой статье мы покажем вам, как установить Vaultwarden на Ubuntu 26.04.
Несмотря на свою облегченную конструкцию, Vaultwarden остается полностью совместимым со всей экосистемой Bitwarden, включая приложения для Android и iOS, расширения для браузеров и официальное настольное приложение Bitwarden. Это означает, что вы по-прежнему можете использовать безопасное и привычное официальное приложение Bitwarden, но все ваши данные хранятся и управляются на вашем собственном сервере.
Необходимые условия
- VPS с Ubuntu 26.04
- Root-доступ по SSH или пользователь с правами sudo
- Домен или субдомен, указывающий на ваш сервер
Шаг 1. Обновление системы
Прежде всего, нам нужно войти на наш VPS с Ubuntu 26.04 через SSH:
ssh root@IP_Address -p Port_number
Замените root на пользователя, имеющего права sudo. Кроме того, замените IP_Address и Port_Number на соответствующий IP-адрес вашего сервера и номер порта SSH. Далее убедимся, что мы находимся в Ubuntu 26.04. Вы можете проверить это с помощью следующей команды:
lsb_release -a
Вы должны получить следующий вывод:
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu Resolute Raccoon Release: 26.04 Codename: resolute
Затем выполните следующую команду, чтобы убедиться, что все установленные на сервере пакеты обновлены до последних доступных версий:
apt update
Вот и все, информация о системных пакетах теперь должна быть обновлена.
Шаг 2. Установка Docker
На момент написания этой статьи Docker для Ubuntu 26.04 недоступен в репозитории APT Docker. Мы можем установить Docker из репозитория Ubuntu Resolute. Давайте выполним приведенную ниже команду, чтобы установить Docker.
apt install docker.io docker-compose-plugin
Вышеуказанная команда предложит вам продолжить или нет
Installing: docker.io docker-compose-plugin Installing dependencies: bridge-utils dns-root-data git iptables liberror-perl libip6tc2 libnfnetlink0 libnftnl11 patch runc containerd dnsmasq-base git-man less libip4tc2 libnetfilter-conntrack3 libnftables1 nftables pigz ubuntu-fan Suggested packages: ifupdown cgroupfs-mount debootstrap docker-compose-v2 rinse | zfsutils git-email gitk git-cvs firewalld diffutils-doc aufs-tools | cgroup-lite docker-buildx docker-doc zfs-fuse git-doc git-gui gitweb git-svn ed Summary: Upgrading: 0, Installing: 21, Removing: 0, Not Upgrading: 0 Download size: 72.6 MB Space needed: 284 MB / 5438 MB available
Нажмите ENTER, чтобы продолжить установку. По завершении служба Docker запустится автоматически. Вы можете проверить это с помощью следующей команды:
systemctl status docker
Вышеуказанная команда выведет на экран следующий результат:
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Fri 2026-03-06 21:20:46 UTC; 1min 14s ago
Invocation: 154729dda93f44cf93571521a84fd3f3
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 6013 (dockerd)
Tasks: 47
Memory: 33M (peak: 33.7M)
CPU: 1.305s
CGroup: /system.slice/docker.service
├─6013 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
├─6352 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.3 -container-port 80 -use-listen-fd
├─6361 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 80 -container-ip 172.18.0.3 -container-port 80 -use-listen-fd
├─6383 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 443 -container-ip 172.18.0.3 -container-port 443 -use-listen-fd
└─6389 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 443 -container-ip 172.18.0.3 -container-port 443 -use-listen-fd
Mar 06 21:20:45 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:45.511643341Z" level=info msg="Deleting nftables IPv6 rules" error="exit status 1"
Mar 06 21:20:46 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:46.618176136Z" level=info msg="sbJoin: gwep4 ''->'e8bf8d225716', gwep6 ''->''" eid=e8bf8d225716 ep=vaultwarden net=vaultwarden>
Mar 06 21:20:46 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:46.662702855Z" level=info msg="sbJoin: gwep4 ''->'90f8057bc0ad', gwep6 ''->''" eid=90f8057bc0ad ep=caddy net=vaultwarden_net n>
Mar 06 21:20:46 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:46.825903691Z" level=info msg="Loading containers: done."
Mar 06 21:20:46 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:46.865355974Z" level=info msg="Docker daemon" commit=29.1.3-0ubuntu1 containerd-snapshotter=true storage-driver=overlayfs vers>
Mar 06 21:20:46 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:46.865417975Z" level=info msg="Initializing buildkit"
Mar 06 21:20:46 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:46.902156551Z" level=info msg="Completed buildkit initialization"
Mar 06 21:20:46 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:46.911787640Z" level=info msg="Daemon has completed initialization"
Mar 06 21:20:46 ubuntu26 dockerd[6013]: time="2026-03-06T21:20:46.911949972Z" level=info msg="API listen on /run/docker.sock"
Mar 06 21:20:46 ubuntu26 systemd[1]: Started docker.service - Docker Application Container Engine.
Шаг 3. Запуск Docker без sudo
Демон Docker привязывается к сокету Unix. При запуске команды Docker без sudo вы получите следующее сообщение об ошибке:
docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied Run 'docker run --help' for more information
Чтобы запускать команды Docker без sudo, нам нужно добавить нужного пользователя в группу Docker:
usermod -aG docker $USER
Например, давайте добавим пользователя master в группу Docker:
usermod -aG docker master
Шаг 4. Создание файлов Docker Compose
Мы будем использовать комбинацию Docker и Caddy. Docker изолирует приложение Vaultwarden в контейнере, а Caddy выступает в роли веб-сервера, который автоматически обрабатывает HTTPS-соединения. Этот метод очень эффективен и прост в обслуживании. На предыдущем шаге мы настроили систему для запуска команд Docker без sudo. Давайте перейдем к этому пользователю и продолжим следующие шаги.
su - master
Мы должны оказаться в оболочке пользователя master. Давайте создадим новый каталог.
mkdir vaultwarden-server && cd "$_"
Теперь создайте файл docker-compose.yml с помощью текстового редактора, такого как nano:
nano docker-compose.yml
Вставьте в файл следующее:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
environment:
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=true
- DOMAIN=https://vaultwarden.yourdomain.com
volumes:
- ./vw-data:/data
networks:
- vaultwarden_net
caddy:
image: caddy:latest
container_name: caddy
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./caddy-data:/data
- ./caddy-config:/config
networks:
- vaultwarden_net
networks:
vaultwarden_net:
name: vaultwarden_net
ВАЖНО: Замените vaultwarden.yourdomain.com на домен, который вы уже настроили и который указывает на ваш сервер. Эта конфигурация также создает внутреннюю сеть под названием vaultwarden_net. Это обеспечивает безопасную коммуникацию между Caddy и Vaultwarden внутри сервера, не открывая порты Vaultwarden для общедоступного интернета.
Далее создайте файл Caddyfile:
nano Caddyfile
Заполните его следующей конфигурацией обратного прокси. Caddy автоматически получит SSL/TLS-сертификат от Lets Encrypt для вашего домена.
vaultwarden.yourdomain.com {
reverse_proxy vaultwarden:80 {
header_up Host {host}
header_up X-Real-IP {remote_ip}
header_up X-Forwarded-For {remote_ip}
header_up X-Forwarded-Proto {scheme}
}
}
Опять же, не забудьте заменить vaultwarden.yourdomain.com на ваш фактический домен/поддомен. Сохраните файл, затем выйдите из редактора.
Шаг 5. Запустите контейнер
Теперь, когда все настройки готовы, мы можем запустить оба контейнера в фоновом режиме с помощью одной команды.
docker compose up -d
Docker загрузит образы Vaultwarden и Caddy и запустит их в соответствии с конфигурацией. Вы можете проверить статус контейнера с помощью команды docker ps.
docker ps
Шаг 6. Доступ & Создание учетной записи администратора
Откройте браузер и перейдите на только что настроенный домен (например, https://vaultwarden.yourdomain.com). Вы увидите интерфейс.
Если все работает нормально, вы увидите страницу входа в Vaultwarden. Нажмите «Создать учетную запись», чтобы создать свою первую учетную запись. Эта учетная запись будет администратором по умолчанию.
После создания учетной записи администратора и регистрации вашей команды настоятельно рекомендуется отключить новую регистрацию, чтобы посторонние лица не могли создавать учетные записи на вашем сервере. Для этого:
Отредактируйте файл docker-compose.yml. Измените SIGNUPS_ALLOWED=true на SIGNUPS_ALLOWED=false. Сохраните файл, затем запустите команду docker compose up -d, чтобы применить изменения.
Заключение
Вот и все! Вы узнали, как установить Vaultwarden на Ubuntu 26.04. Теперь вы можете установить расширение для браузера, чтобы подключиться к Vaultwarden.
Управление собственным менеджером паролей требует некоторых первоначальных усилий. Однако спокойствие, которое дает полный контроль над учетными данными вашей компании, стоит этих затрат. Этот процесс установки Vaultwarden демонстрирует, что такая передовая технология теперь очень доступна и может быть внедрена любой технической командой.
Комментарии (2)