Convert Figma logo to code with AI

bitwarden logoserver

Bitwarden infrastructure/backend (API, database, Docker, etc).

15,131
1,262
15,131
155

Top Related Projects

Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs

12,237

Free cross-platform password manager compatible with KeePass

2,642

A modern, open source password manager for individuals and teams.

Passbolt Community Edition (CE) API. The JSON API for the open source password manager for teams!

Quick Overview

Bitwarden Server is the core infrastructure component of the Bitwarden password management system. It provides the backend services and APIs necessary for storing, syncing, and managing encrypted password vaults across multiple devices and platforms. This open-source project allows organizations and individuals to self-host their own Bitwarden instance for enhanced control and security.

Pros

  • Self-hostable, providing complete control over data and infrastructure
  • Open-source, allowing for community contributions and security audits
  • Supports multiple deployment options, including Docker and traditional installations
  • Integrates with various authentication providers and enterprise systems

Cons

  • Requires technical expertise to set up and maintain
  • Self-hosting may introduce additional security responsibilities
  • Updates and maintenance can be time-consuming compared to the cloud-hosted version
  • May lack some features available in the official Bitwarden cloud offering

Getting Started

To get started with self-hosting Bitwarden Server:

  1. Install Docker and Docker Compose on your server
  2. Clone the Bitwarden Server repository:
    git clone https://github.com/bitwarden/server.git
    
  3. Navigate to the project directory:
    cd server
    
  4. Copy the example environment file:
    cp .env.example .env
    
  5. Edit the .env file to configure your installation
  6. Start the Bitwarden services:
    docker-compose up -d
    
  7. Access the Bitwarden web vault at https://your-domain.com

For detailed instructions and additional configuration options, refer to the official Bitwarden documentation.

Competitor Comparisons

Unofficial Bitwarden compatible server written in Rust, formerly known as bitwarden_rs

Pros of Vaultwarden

  • Lightweight and resource-efficient, suitable for self-hosting on low-powered devices
  • Written in Rust, offering improved performance and memory safety
  • Simpler setup and maintenance process

Cons of Vaultwarden

  • Lacks some advanced features present in the official Bitwarden server
  • May have a slight delay in implementing new features compared to the official server
  • Not officially supported by Bitwarden, Inc.

Code Comparison

Vaultwarden (Rust):

#[get("/sync")]
fn sync(headers: Headers, conn: DbConn, nt: Notify) -> JsonResult {
    let user = headers.user;
    let data = SyncData::build_json(&user, &conn, &nt, false)?;
    Ok(Json(data))
}

Bitwarden Server (C#):

[HttpGet("sync")]
public async Task<SyncResponseModel> Sync()
{
    var userId = _userService.GetProperUserId(User).Value;
    var response = await _syncService.BuildSyncResponseAsync(userId);
    return response;
}

The code snippets show similar sync endpoints, but Vaultwarden uses Rust's concise syntax and type system, while Bitwarden Server employs C# with async/await patterns.

12,237

Free cross-platform password manager compatible with KeePass

Pros of KeeWeb

  • Lightweight and portable, runs entirely in the browser without server requirements
  • Supports multiple password file formats (KeePass, 1Password, LastPass)
  • Open-source and free to use, with no paid tiers or subscriptions

Cons of KeeWeb

  • Lacks advanced features like secure sharing and team management
  • No built-in sync functionality; relies on third-party services for syncing
  • Less frequent updates and smaller community compared to Bitwarden

Code Comparison

KeeWeb (JavaScript):

const kdbxweb = require('kdbxweb');
const db = kdbxweb.Kdbx.create(credentials, 'My Database');
const entry = db.createEntry(db.getDefaultGroup());
entry.fields.Title = 'My Entry';

Bitwarden Server (C#):

var cipher = new Cipher
{
    Type = CipherType.Login,
    OrganizationId = organizationId,
    Name = "My Login",
    Login = new Login { Username = "myusername", Password = "mypassword" }
};
await _cipherRepository.CreateAsync(cipher);

Both repositories offer password management solutions, but with different approaches. KeeWeb focuses on client-side operations and file-based storage, while Bitwarden Server provides a full-featured backend for cloud-based password management with additional security features and team collaboration capabilities.

2,642

A modern, open source password manager for individuals and teams.

Pros of Padloc

  • Fully open-source, including server and client components
  • Lightweight and easy to self-host
  • Modern, clean codebase using TypeScript

Cons of Padloc

  • Smaller community and less mature ecosystem
  • Fewer features and integrations compared to Bitwarden
  • Limited enterprise-level functionality

Code Comparison

Padloc (TypeScript):

export class Vault extends Serializable {
  @AsSerializable(Collection, { itemType: VaultItem })
  items: Collection<VaultItem> = new Collection();

  @AsSerializable(String)
  name: string = "";
}

Bitwarden (C#):

public class Cipher : ITableObject<Guid>
{
    public Guid Id { get; set; }
    public Guid? UserId { get; set; }
    public Guid? OrganizationId { get; set; }
    public CipherType Type { get; set; }
    public string Data { get; set; }
}

Both projects use strongly-typed languages and object-oriented principles. Padloc's codebase appears more modern with TypeScript decorators, while Bitwarden's C# code follows traditional .NET conventions.

Padloc's structure seems more focused on simplicity and ease of use, while Bitwarden's code suggests a more feature-rich and complex system, potentially offering greater flexibility for enterprise use cases.

Passbolt Community Edition (CE) API. The JSON API for the open source password manager for teams!

Pros of Passbolt

  • Open-source and self-hosted, providing full control over data and infrastructure
  • Built with PHP and CakePHP framework, which may be more familiar to some developers
  • Focuses on team collaboration and sharing features

Cons of Passbolt

  • Smaller community and ecosystem compared to Bitwarden
  • Limited mobile app support and fewer client applications
  • Steeper learning curve for setup and configuration

Code Comparison

Passbolt (PHP):

public function getPasswords()
{
    $userId = $this->Auth->user('id');
    $passwords = $this->Resource->findAllByUserId($userId);
    return $passwords;
}

Bitwarden (C#):

public async Task<IEnumerable<Cipher>> GetAllAsync(Guid userId)
{
    var ciphers = await _repository.GetManyByUserIdAsync(userId);
    return ciphers.Select(c => new Cipher(c));
}

Both repositories implement password management functionality, but Passbolt uses PHP with CakePHP, while Bitwarden uses C# with ASP.NET Core. Passbolt's code structure follows CakePHP conventions, whereas Bitwarden utilizes more modern C# features like async/await and LINQ. The Bitwarden codebase tends to be more extensive and modular, reflecting its broader feature set and larger ecosystem.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Bitwarden

Github Workflow build on main DockerHub gitter chat


The Bitwarden Server project contains the APIs, database, and other core infrastructure items needed for the "backend" of all bitwarden client applications.

The server project is written in C# using .NET Core with ASP.NET Core. The database is written in T-SQL/SQL Server. The codebase can be developed, built, run, and deployed cross-platform on Windows, macOS, and Linux distributions.

Developer Documentation

Please refer to the Server Setup Guide in the Contributing Documentation for build instructions, recommended tooling, code style tips, and lots of other great information to get you started.

Deploy

docker

You can deploy Bitwarden using Docker containers on Windows, macOS, and Linux distributions. Use the provided PowerShell and Bash scripts to get started quickly. Find all of the Bitwarden images on Docker Hub.

Full documentation for deploying Bitwarden with Docker can be found in our help center at: https://help.bitwarden.com/article/install-on-premise/

Requirements

These dependencies are free to use.

Linux & macOS

curl -s -L -o bitwarden.sh \
    "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" \
    && chmod +x bitwarden.sh
./bitwarden.sh install
./bitwarden.sh start

Windows

Invoke-RestMethod -OutFile bitwarden.ps1 `
    -Uri "https://func.bitwarden.com/api/dl/?app=self-host&platform=windows"
.\bitwarden.ps1 -install
.\bitwarden.ps1 -start

We're Hiring!

Interested in contributing in a big way? Consider joining our team! We're hiring for many positions. Please take a look at our Careers page to see what opportunities are currently open as well as what it's like to work at Bitwarden.

Contribute

Code contributions are welcome! Please commit any pull requests against the main branch. Learn more about how to contribute by reading the Contributing Guidelines. Check out the Contributing Documentation for how to get started with your first contribution.

Security audits and feedback are welcome. Please open an issue or email us privately if the report is sensitive in nature. You can read our security policy in the SECURITY.md file. We also run a program on HackerOne.

No grant of any rights in the trademarks, service marks, or logos of Bitwarden is made (except as may be necessary to comply with the notice requirements as applicable), and use of any Bitwarden trademarks must comply with Bitwarden Trademark Guidelines.

Dotnet-format

Consider installing our git pre-commit hook for automatic formatting.

git config --local core.hooksPath .git-hooks