Here is another way to install Vaultwarden from the source code, you will need to follow these general steps:
Install the Rust programming language and the Cargo package manager.
Clone the Vaultwarden repository from GitHub.
Build the Vaultwarden binary using Cargo.
Run the Vaultwarden binary using the appropriate command-line arguments.
Note that installing Vaultwarden from source code requires more technical knowledge than using the Docker image, and may require additional steps to configure the database, web server, and other dependencies. It is recommended for advanced users or those who require specific customization options.
Commands on the video:
sudo apt install -y --no-install-recommends build-essential libmariadb-dev-compat libpq-dev libssl-dev pkgconf
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"
sudo apt-get install -y libssl-dev libsqlite3-dev pkg-config git
git clone https://github.com/dani-garcia/vaultw...
for RPI with 2 GB ram:
sudo fallocate -l 3G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon --show
cargo install cargo-cache
cargo cache -a
rm ~/.cargo/config
echo '[target.aarch64-unknown-linux-gnu]' to ~/.cargo/config
echo 'linker = "aarch64-linux-gnu-gcc"' to ~/.cargo/config
echo 'rustflags = ["-L/usr/lib/aarch64-linux-gnu"]' to ~/.cargo/config
cargo test --features "sqlite" --target=aarch64-unknown-linux-gnu --release
cargo build --features "sqlite" --target=aarch64-unknown-linux-gnu --release
ls -la target/aarch64-unknown-linux-gnu/release/
sudo mkdir -p /opt/vaultwarden/bin
sudo mkdir -p /opt/vaultwarden/data
sudo cp target/aarch64-unknown-linux-gnu/release/vaultwarden /opt/vaultwarden/bin/
curl -fsSLO https://github.com/dani-garcia/bw_web...
sudo tar -zxf bw_web_v2023.3.0b.tar.gz -C /opt/vaultwarden/
rm -f bw_web_v2023.3.0b.tar.gz
openssl rand -base64 48
sudo nano /opt/vaultwarden/.env
DATA_FOLDER=/opt/vaultwarden/data/
DATABASE_MAX_CONNS=10
WEB_VAULT_FOLDER=/opt/vaultwarden/web-vault/
WEB_VAULT_ENABLED=true
ICON_CACHE_TTL=0
DISABLE_ICON_DOWNLOAD=false
ADMIN_TOKEN=
ROCKET_ADDRESS: server ip or dns
ROCKET_PORT: 8080
sudo chown -R vaultwarden:vaultwarden /opt/vaultwarden/
sudo chown root:root /opt/vaultwarden/bin/vaultwarden
sudo chmod +x /opt/vaultwarden/bin/vaultwarden
sudo chown -R root:root /opt/vaultwarden/web-vault/
sudo chmod +r /opt/vaultwarden/.env
sudo nano /etc/systemd/system/vaultwarden.service
[Unit]
Description=Vaultwarden Server
Documentation=https://github.com/dani-garcia/vaultw...
After=network.target
[Service]
User=vaultwarden
Group=vaultwarden
EnvironmentFile=-/opt/vaultwarden/.env
ExecStart=/opt/vaultwarden/bin/vaultwarden
LimitNOFILE=65535
LimitNPROC=4096
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
ProtectSystem=strict
DevicePolicy=closed
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
RestrictNamespaces=yes
RestrictRealtime=yes
MemoryDenyWriteExecute=yes
LockPersonality=yes
WorkingDirectory=/opt/vaultwarden
ReadWriteDirectories=/opt/vaultwarden/data
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable vaultwarden.service
sudo systemctl start vaultwarden.service
sudo systemctl status vaultwarden.service