Как установить Vaultwarden в Ubuntu 26.04

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 демонстрирует, что такая передовая технология теперь очень доступна и может быть внедрена любой технической командой.

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Похожие статьи

Комментарии (2)

Автар по умолчанию