Add docusaurus docs site scaffolding (#2189)

This commit is contained in:
Leendert de Borst
2026-06-18 19:43:24 +02:00
committed by Leendert de Borst
parent 78e7773a2b
commit 0369756a6f
123 changed files with 20039 additions and 1143 deletions

6
docs/.dockerignore Normal file
View File

@@ -0,0 +1,6 @@
node_modules
build
.docusaurus
.git
Dockerfile
.dockerignore

18
docs/.gitignore vendored
View File

@@ -1 +1,19 @@
# Dependencies
/node_modules
# Production build
/build
# Generated Docusaurus files
/.docusaurus
.docusaurus
# Misc
.DS_Store
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Keep the docs release notes directory tracked
!release

View File

@@ -1,68 +0,0 @@
---
layout: default
title: 404 - Page not found
permalink: /404.html
nav_exclude: true
search_exclude: true
---
<style>
.error-404 {
text-align: center;
padding: 4rem 2rem;
}
.error-404 h1 {
font-size: 6rem;
color: #f49541;
margin-bottom: 1rem;
}
.error-404 h2 {
font-size: 2rem;
margin-bottom: 1rem;
color: #f8f9fa;
}
.error-404 p {
font-size: 1.2rem;
margin-bottom: 2rem;
color: #d1d5db;
}
.error-404 .btn {
display: inline-block;
padding: 0.75rem 1.5rem;
background-color: #d68338;
color: white;
text-decoration: none;
border-radius: 4px;
transition: background-color 0.2s;
}
.error-404 .btn:hover {
background-color: #f49541;
}
.error-404 .links {
margin-top: 2rem;
}
.error-404 .links a {
margin: 0 1rem;
color: #f49541;
text-decoration: underline;
}
.error-404 .links a:hover {
color: #ffd5a8;
}
</style>
<div class="error-404">
<h1>404</h1>
<h2>Page Not Found</h2>
<p>The page you're looking for doesn't exist or may have been moved.</p>
<p>This could happen if the documentation structure has been reorganized or the page has been renamed.</p>
<a href="{{ '/' | relative_url }}" class="btn">Go to Home</a>
<div class="links">
<p>Or try these helpful links:</p>
<a href="{{ '/installation/' | relative_url }}">Installation Guide</a>
<a href="{{ '/browser-extension/' | relative_url }}">Browser Extension</a>
<a href="{{ '/mobile-app/' | relative_url }}">Mobile App</a>
</div>
</div>

View File

@@ -1,8 +1,13 @@
FROM jekyll/jekyll:4.2.2
WORKDIR /srv/jekyll
# Build the Docusaurus static site, then serve it with nginx.
FROM node:20-alpine AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN chown -R jekyll:jekyll /srv/jekyll
RUN npm run build
# Install the theme and dependencies
RUN bundle install
FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

View File

@@ -1,15 +0,0 @@
source 'https://rubygems.org'
# connection_pool 3.x requires Ruby >= 3.2; jekyll/jekyll:4.2.2 (docs/Dockerfile) uses Ruby 3.1.
gem "connection_pool", "< 3"
# gem "jekyll", "~> 4.3.2"
gem "just-the-docs"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
gem "github-pages", group: :jekyll_plugins
group :jekyll_plugins do
gem "jekyll-sitemap"
end

View File

@@ -1,293 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (7.2.3.1)
base64
benchmark (>= 0.3)
bigdecimal
concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
minitest (>= 5.1, < 6)
securerandom (>= 0.3)
tzinfo (~> 2.0, >= 2.0.5)
addressable (2.9.0)
public_suffix (>= 2.0.2, < 8.0)
base64 (0.3.0)
benchmark (0.5.0)
bigdecimal (4.0.1)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
colorator (1.1.0)
commonmarker (0.23.11)
concurrent-ruby (1.3.6)
connection_pool (2.5.5)
csv (3.3.0)
dnsruby (1.73.1)
base64 (>= 0.2)
logger (~> 1.6)
simpleidn (~> 0.2.1)
drb (2.2.3)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
ethon (0.16.0)
ffi (>= 1.15.0)
eventmachine (1.2.7)
execjs (2.10.0)
faraday (2.14.2)
faraday-net_http (>= 2.0, < 3.5)
json
logger
faraday-net_http (3.4.2)
net-http (~> 0.5)
ffi (1.17.0-x86_64-linux-gnu)
ffi (1.17.0-x86_64-linux-musl)
forwardable-extended (2.6.0)
gemoji (4.1.0)
github-pages (232)
github-pages-health-check (= 1.18.2)
jekyll (= 3.10.0)
jekyll-avatar (= 0.8.0)
jekyll-coffeescript (= 1.2.2)
jekyll-commonmark-ghpages (= 0.5.1)
jekyll-default-layout (= 0.1.5)
jekyll-feed (= 0.17.0)
jekyll-gist (= 1.5.0)
jekyll-github-metadata (= 2.16.1)
jekyll-include-cache (= 0.2.1)
jekyll-mentions (= 1.6.0)
jekyll-optional-front-matter (= 0.3.2)
jekyll-paginate (= 1.1.0)
jekyll-readme-index (= 0.3.0)
jekyll-redirect-from (= 0.16.0)
jekyll-relative-links (= 0.6.1)
jekyll-remote-theme (= 0.4.3)
jekyll-sass-converter (= 1.5.2)
jekyll-seo-tag (= 2.8.0)
jekyll-sitemap (= 1.4.0)
jekyll-swiss (= 1.0.0)
jekyll-theme-architect (= 0.2.0)
jekyll-theme-cayman (= 0.2.0)
jekyll-theme-dinky (= 0.2.0)
jekyll-theme-hacker (= 0.2.0)
jekyll-theme-leap-day (= 0.2.0)
jekyll-theme-merlot (= 0.2.0)
jekyll-theme-midnight (= 0.2.0)
jekyll-theme-minimal (= 0.2.0)
jekyll-theme-modernist (= 0.2.0)
jekyll-theme-primer (= 0.6.0)
jekyll-theme-slate (= 0.2.0)
jekyll-theme-tactile (= 0.2.0)
jekyll-theme-time-machine (= 0.2.0)
jekyll-titles-from-headings (= 0.5.3)
jemoji (= 0.13.0)
kramdown (= 2.4.0)
kramdown-parser-gfm (= 1.1.0)
liquid (= 4.0.4)
mercenary (~> 0.3)
minima (= 2.5.1)
nokogiri (>= 1.16.2, < 2.0)
rouge (= 3.30.0)
terminal-table (~> 1.4)
webrick (~> 1.8)
github-pages-health-check (1.18.2)
addressable (~> 2.3)
dnsruby (~> 1.60)
octokit (>= 4, < 8)
public_suffix (>= 3.0, < 6.0)
typhoeus (~> 1.3)
html-pipeline (2.14.3)
activesupport (>= 2)
nokogiri (>= 1.4)
http_parser.rb (0.8.0)
i18n (1.14.8)
concurrent-ruby (~> 1.0)
jekyll (3.10.0)
addressable (~> 2.4)
colorator (~> 1.0)
csv (~> 3.0)
em-websocket (~> 0.5)
i18n (>= 0.7, < 2)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (>= 1.17, < 3)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
webrick (>= 1.0)
jekyll-avatar (0.8.0)
jekyll (>= 3.0, < 5.0)
jekyll-coffeescript (1.2.2)
coffee-script (~> 2.2)
coffee-script-source (~> 1.12)
jekyll-commonmark (1.4.0)
commonmarker (~> 0.22)
jekyll-commonmark-ghpages (0.5.1)
commonmarker (>= 0.23.7, < 1.1.0)
jekyll (>= 3.9, < 4.0)
jekyll-commonmark (~> 1.4.0)
rouge (>= 2.0, < 5.0)
jekyll-default-layout (0.1.5)
jekyll (>= 3.0, < 5.0)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-gist (1.5.0)
octokit (~> 4.2)
jekyll-github-metadata (2.16.1)
jekyll (>= 3.4, < 5.0)
octokit (>= 4, < 7, != 4.4.0)
jekyll-include-cache (0.2.1)
jekyll (>= 3.7, < 5.0)
jekyll-mentions (1.6.0)
html-pipeline (~> 2.3)
jekyll (>= 3.7, < 5.0)
jekyll-optional-front-matter (0.3.2)
jekyll (>= 3.0, < 5.0)
jekyll-paginate (1.1.0)
jekyll-readme-index (0.3.0)
jekyll (>= 3.0, < 5.0)
jekyll-redirect-from (0.16.0)
jekyll (>= 3.3, < 5.0)
jekyll-relative-links (0.6.1)
jekyll (>= 3.3, < 5.0)
jekyll-remote-theme (0.4.3)
addressable (~> 2.0)
jekyll (>= 3.5, < 5.0)
jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0)
rubyzip (>= 1.3.0, < 3.0)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0)
jekyll-swiss (1.0.0)
jekyll-theme-architect (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-cayman (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-dinky (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-hacker (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-leap-day (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-merlot (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-midnight (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-minimal (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-modernist (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-primer (0.6.0)
jekyll (> 3.5, < 5.0)
jekyll-github-metadata (~> 2.9)
jekyll-seo-tag (~> 2.0)
jekyll-theme-slate (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-tactile (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-theme-time-machine (0.2.0)
jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0)
jekyll-titles-from-headings (0.5.3)
jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
jemoji (0.13.0)
gemoji (>= 3, < 5)
html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0)
json (2.19.5)
just-the-docs (0.10.0)
jekyll (>= 3.8.5)
jekyll-include-cache
jekyll-seo-tag (>= 2.0)
rake (>= 12.3.1)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
logger (1.7.0)
mercenary (0.3.6)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
minitest (5.27.0)
net-http (0.9.1)
uri (>= 0.11.1)
nokogiri (1.18.10-x86_64-linux-gnu)
racc (~> 1.4)
nokogiri (1.18.10-x86_64-linux-musl)
racc (~> 1.4)
octokit (4.25.1)
faraday (>= 1, < 3)
sawyer (~> 0.9)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.1.1)
racc (1.8.1)
rake (13.2.1)
rb-fsevent (0.11.2)
rb-inotify (0.11.1)
ffi (~> 1.0)
rexml (3.4.2)
rouge (3.30.0)
rubyzip (2.3.2)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sawyer (0.9.2)
addressable (>= 2.3.5)
faraday (>= 0.17.3, < 3)
securerandom (0.4.1)
simpleidn (0.2.3)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
typhoeus (1.4.1)
ethon (>= 0.9.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
unicode-display_width (1.8.0)
uri (1.1.1)
webrick (1.9.0)
PLATFORMS
x86_64-linux
x86_64-linux-musl
DEPENDENCIES
connection_pool (< 3)
github-pages
jekyll-sitemap
just-the-docs
BUNDLED WITH
2.3.25

View File

@@ -1,13 +0,0 @@
# Production overrides to disable GitHub metadata
plugins:
- jekyll-sitemap
- jekyll-redirect-from
# Explicitly set repository to avoid GitHub API calls
repository: aliasvault/aliasvault
# Set baseurl explicitly to avoid GitHub Pages detection
baseurl: ""
# Disable GitHub metadata
github: [metadata]

View File

@@ -1,61 +0,0 @@
remote_theme: just-the-docs/just-the-docs
title: AliasVault
description: Documentation for the AliasVault password manager
logo: "/assets/img/logo.svg"
favicon_ico: "/assets/img/favicon.png"
# Navigation settings
aux_links:
"AliasVault on GitHub":
- "https://github.com/aliasvault/aliasvault"
"AliasVault Website":
- "https://aliasvault.net"
aux_links_new_tab: true
# Search settings
search_enabled: true
heading_anchors: true
# Theme settings
color_scheme: aliasvault
# Enable copy code button
enable_copy_code_button: true
# Footer "Edit this page on GitHub" link text
gh_edit_link: true # show or hide edit this page link
gh_edit_link_text: "Edit this page on GitHub."
gh_edit_repository: "https://github.com/aliasvault/aliasvault" # the github URL for your repo
gh_edit_branch: "main" # the branch that your docs is served from
gh_edit_source: docs # the source that your files originate from
gh_edit_view_mode: "tree" # "tree" or "edit" if you want the user to jump into the editor immediately
callouts:
warning:
title: Warning
color: red
note:
title: Note
color: purple
important:
title: Important
color: yellow
# 404 page
defaults:
- scope:
path: "404.html"
values:
sitemap: false
# Sitemap settings
url: "https://docs.aliasvault.net"
plugins:
- jekyll-sitemap
- jekyll-redirect-from
markdown: kramdown
kramdown:
toc_levels: [2, 3]

View File

View File

@@ -1,2 +0,0 @@
<!-- Plausible Analytics -->
<script defer data-domain="docs.aliasvault.net" src="https://plausible.xivi.nl/js/script.js"></script>

View File

@@ -1 +0,0 @@
&nbsp;

View File

@@ -1,44 +0,0 @@
require 'webrick'
module Jekyll
class FourOhFourPage < StaticFile
def write(dest)
true
end
end
class FourOhFourGenerator < Generator
priority :low
def generate(site)
site.static_files << FourOhFourPage.new(site, site.dest, '/', '404.html')
end
end
end
# Override WEBrick to serve 404.html for missing files
if defined?(WEBrick)
module WEBrick
class HTTPServlet::FileHandler
alias_method :do_GET_original, :do_GET
def do_GET(req, res)
do_GET_original(req, res)
rescue HTTPStatus::NotFound => ex
return_404_page(req, res)
rescue => ex
raise ex
end
def return_404_page(req, res)
path = File.join(@config[:DocumentRoot], '404.html')
if File.exist?(path)
res.body = File.read(path)
res['content-type'] = 'text/html'
else
raise HTTPStatus::NotFound
end
end
end
end
end

View File

@@ -1,48 +0,0 @@
@import "./color_schemes/dark";
// Base theme colors
$link-color: #f49541;
$btn-primary-color: #d68338;
// Main colors
$body-background-color: #1f2937;
$sidebar-color: #111827;
$border-color: #374151;
$body-text-color: #f8f9fa;
// Navigation
$nav-child-link-color: #fdde85;
$search-result-preview-color: #e9ecef;
// Content elements
$feedback-color: #2d3748;
$table-background-color: #374151;
$search-background-color: #374151;
// Code blocks
$code-background-color: #2d3748;
$code-linenumber-color: #9ca3af;
// Tables
$table-border-color: #4b5563;
// Search
$search-result-preview-color: #d1d5db;
// Buttons
$btn-primary-color-dark: #d68338;
// Base Colors (kept for compatibility)
$purple-000: #f8b963;
$purple-100: #ffd5a8;
$purple-200: #f49541;
$purple-300: #d68338;
// Orange Colors
$orange-000: #f8b963;
$orange-100: #ffd5a8;
$orange-200: #f49541;
$orange-300: #d68338;
// Navigation additional
$nav-button-color: #f49541;

View File

@@ -1,22 +0,0 @@
# Docker Compose file for the AliasVault documentation
#
# This file is used to build the AliasVault documentation and serve it locally in development mode
# with livereload enabled.
#
# Usage:
# docker compose up -d
# docker compose down
#
services:
jekyll:
build:
context: .
volumes:
- .:/srv/jekyll
ports:
- "4000:4000"
command: bundle exec jekyll serve --host 0.0.0.0 --watch --force_polling --livereload
environment:
- JEKYLL_ENV=development
- JEKYLL_NO_CACHE=true
- DISABLE_DISK_CACHE=true

View File

@@ -1,27 +1,15 @@
# Docker Compose file for the AliasVault documentation
# Docker Compose file for the AliasVault documentation (Docusaurus).
#
# This file is used to build the AliasVault documentation and serve it locally in production mode
# with caching and without livereload.
# Builds the static site and serves it with nginx in production mode.
#
# Usage:
# docker compose up -d
# docker compose down
# docker compose up -d --build
# docker compose down
#
services:
jekyll:
docs:
build:
context: .
ports:
- "4000:4000"
command: bundle exec jekyll serve --host 0.0.0.0 --no-watch --config _config.yml,_config.production.yml
environment:
- JEKYLL_ENV=production
- JEKYLL_NO_CACHE=false
- DISABLE_DISK_CACHE=false
- JEKYLL_GITHUB_TOKEN=
- PAGES_REPO_NWO=aliasvault/aliasvault
- NO_GITHUB=true
volumes:
- .:/srv/jekyll
- ./.jekyll-cache:/srv/jekyll/.jekyll-cache
- ./_site:/srv/jekyll/_site
- "4000:80"
restart: unless-stopped

View File

@@ -1,13 +1,8 @@
---
layout: default
title: Architecture
has_children: true
nav_order: 5
sidebar_position: 5
sidebar_label: "Architecture"
---
# Architecture
{: .no_toc }
---
AliasVault implements zero-knowledge encryption where sensitive user data never leaves the client device in unencrypted form. Below is a detailed explanation of how the system secures user data and communications.
@@ -20,22 +15,13 @@ AliasVault implements zero-knowledge encryption where sensitive user data never
The security architecture diagram below illustrates all encryption and authentication processes used in AliasVault to secure user data and communications.
<picture>
<source media="(prefers-color-scheme: dark)" srcset="../assets/diagrams/security-architecture/aliasvault-security-architecture-dark.svg">
<source media="(prefers-color-scheme: light)" srcset="../assets/diagrams/security-architecture/aliasvault-security-architecture-light.svg">
<img alt="AliasVault Security Architecture Diagram" src="../assets/diagrams/security-architecture/aliasvault-security-architecture-light.svg">
<source media="(prefers-color-scheme: dark)" srcset="/assets/diagrams/security-architecture/aliasvault-security-architecture-dark.svg">
<source media="(prefers-color-scheme: light)" srcset="/assets/diagrams/security-architecture/aliasvault-security-architecture-light.svg">
<img alt="AliasVault Security Architecture Diagram" src="/assets/diagrams/security-architecture/aliasvault-security-architecture-light.svg">
</picture>
You can also view the diagram in a browser-friendly HTML format: [AliasVault Security Architecture](https://docs.aliasvault.net/assets/diagrams/security-architecture/aliasvault-security-architecture.html)
<details open markdown="block">
<summary>
Table of contents
</summary>
{: .text-delta }
- TOC
{:toc}
</details>
## Key Components and Process Flow
### 1. Key Derivation

View File

@@ -0,0 +1,4 @@
{
"label": "Browser Extensions",
"position": 3
}

View File

@@ -0,0 +1,4 @@
{
"label": "Google Chrome",
"position": 2
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Build from Source
parent: Google Chrome
grand_parent: Browser Extensions
nav_order: 2
sidebar_position: 2
sidebar_label: "Build from Source"
---
# Building Google Chrome Extension from Source
This guide explains how to build and install the AliasVault Google Chrome extension from source code.

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Google Chrome
parent: Browser Extensions
nav_order: 2
sidebar_position: 2
---
# Google Chrome Extension
In order to install the Google Chrome Extension, see the options below.

View File

@@ -0,0 +1,4 @@
{
"label": "Microsoft Edge",
"position": 3
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Build from Source
parent: Microsoft Edge
grand_parent: Browser Extensions
nav_order: 2
sidebar_position: 2
sidebar_label: "Build from Source"
---
# Building Microsoft Edge Extension from Source
This guide explains how to build and install the AliasVault Microsoft Edge extension from source code.

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Microsoft Edge
parent: Browser Extensions
nav_order: 3
sidebar_position: 3
---
# Microsoft Edge Extension
In order to install the Microsoft Edge Extension, see the options below.

View File

@@ -0,0 +1,4 @@
{
"label": "Firefox",
"position": 1
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Build from Source
parent: Firefox
grand_parent: Browser Extensions
nav_order: 2
sidebar_position: 2
sidebar_label: "Build from Source"
---
# Building Firefox Extension from Source
This guide explains how to build and install the AliasVault Firefox extension from source code.

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Firefox
parent: Browser Extensions
nav_order: 1
sidebar_position: 1
---
# Firefox Extension
In order to install the Firefox Extension, see the options below.

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Browser Extensions
has_children: true
nav_order: 3
sidebar_position: 3
---
# Browser Extensions
This section contains information about installing and using the AliasVault browser extensions. Browser extensions allow you to manage and use AliasVault from within your browser enabling autofilling of login credentials and email aliases on all websites that you use.

View File

@@ -0,0 +1,4 @@
{
"label": "Safari",
"position": 4
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Build from Source
parent: Safari
grand_parent: Browser Extensions
nav_order: 2
sidebar_position: 2
sidebar_label: "Build from Source"
---
# Building Safari Extension from Source
This guide explains how to build and install the AliasVault Safari extension from source code.

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Safari
parent: Browser Extensions
nav_order: 4
sidebar_position: 4
---
# Safari Extension
In order to install the Safari Extension, see the options below.

View File

@@ -1,10 +1,7 @@
---
layout: default
title: Help and Support
has_children: true
nav_order: 100
sidebar_position: 100
sidebar_label: "Help and Support"
---
# Help and Support
If you need help or have any questions about installing or using AliasVault, you can reach us on [AliasVault Discord](https://discord.gg/DsaXMTEtpF).

View File

@@ -0,0 +1,4 @@
{
"label": "Contributing",
"position": 8
}

View File

@@ -1,10 +1,7 @@
---
layout: default
title: Identity Generator
parent: Contributing
nav_order: 2
sidebar_position: 2
sidebar_label: "Identity Generator"
---
# Identity Generator Translations
In AliasVault, when creating a new credential, AliasVault automatically generates realistic alias identities including:

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Contributing
nav_order: 8
has_children: true
sidebar_position: 8
---
# Contributing to AliasVault
Thank you for your interest in contributing to AliasVault! There are many ways you can help to make AliasVault better for privacy-conscious users worldwide.
@@ -14,16 +10,16 @@ Thank you for your interest in contributing to AliasVault! There are many ways y
Here are some common ways you can help the AliasVault project:
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem; margin: 2rem 0;">
<div style="border: 2px solid #6366f1; border-radius: 8px; padding: 1.5rem; background: linear-gradient(135deg, #667eea22 0%, #764ba222 100%);">
<h3 style="margin-top: 0; color: #6366f1;">🌍 Translate UI</h3>
<div style="border: 2px solid #f49541; border-radius: 8px; padding: 1.5rem; background: linear-gradient(135deg, #f4954122 0%, #d6833822 100%);">
<h3 style="margin-top: 0; color: #f49541;">🌍 Translate UI</h3>
<p>Help translate AliasVault's interface into your language using Crowdin.</p>
<a href="ui-translations.html" style="font-weight: bold;">Get Started →</a>
<a href="ui-translations" style="font-weight: bold;">Get Started →</a>
</div>
<div style="border: 2px solid #10b981; border-radius: 8px; padding: 1.5rem; background: linear-gradient(135deg, #10b98122 0%, #059669222 100%);">
<h3 style="margin-top: 0; color: #10b981;">👤 Translate Identity Generator</h3>
<div style="border: 2px solid #d68338; border-radius: 8px; padding: 1.5rem; background: linear-gradient(135deg, #d6833822 0%, #b8702f22 100%);">
<h3 style="margin-top: 0; color: #d68338;">👤 Translate Identity Generator</h3>
<p>Provide name dictionaries to make the identity generator support your language.</p>
<a href="identity-generator.html" style="font-weight: bold;">Get Started →</a>
<a href="identity-generator" style="font-weight: bold;">Get Started →</a>
</div>
</div>

View File

@@ -1,10 +1,7 @@
---
layout: default
title: UI Translations
parent: Contributing
nav_order: 1
sidebar_position: 1
sidebar_label: "UI Translations"
---
# UI Translations
Help make AliasVault accessible to users worldwide by translating the user interface! 🌍

View File

@@ -0,0 +1,4 @@
{
"label": "Self-host Install",
"position": 2
}

View File

@@ -0,0 +1,4 @@
{
"label": "Docker Compose",
"position": 2
}

View File

@@ -0,0 +1,4 @@
{
"label": "Advanced",
"position": 2
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Admin access
parent: Advanced
grand_parent: Docker Compose
nav_order: 5
sidebar_position: 5
sidebar_label: "Admin access"
---
# Admin access
By default the admin panel at `/admin` is reachable from the public internet, alongside the regular client app. This is intentional and safe to leave as-is for most installations:

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Database Operations
parent: Advanced
grand_parent: Docker Compose
nav_order: 4
sidebar_position: 4
sidebar_label: "Database Operations"
---
# Database Operations
This page explains how to import/export on the AliasVault server database via Docker commands.

View File

@@ -1,9 +1,5 @@
---
layout: default
title: Advanced
parent: Docker Compose
nav_order: 2
sidebar_position: 2
---
# Advanced Installation
The following guides provide more advanced installation options for AliasVault. These options are not required for the basic installation, but may be useful for advanced users.

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Stop/start
parent: Advanced
grand_parent: Docker Compose
nav_order: 2
sidebar_position: 2
sidebar_label: "Stop/start"
---
# Stopping and starting AliasVault
You can stop and start AliasVault via the default docker compose commands. Run these commands from the directory where your AliasVault `docker-compose.yml` is located.

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Trusted proxies
parent: Advanced
grand_parent: Docker Compose
nav_order: 6
sidebar_position: 6
sidebar_label: "Trusted proxies"
---
# Trusted proxies
When AliasVault sits behind another reverse proxy (HAProxy, Traefik, Cloudflare, an upstream nginx, etc.), the built-in nginx reads the real client IP from the `X-Forwarded-For` header so that audit logs and the IP allowlist see the actual client rather than the upstream proxy.

View File

@@ -1,17 +1,14 @@
---
layout: default
title: Uninstall
parent: Advanced
grand_parent: Docker Compose
nav_order: 4
sidebar_position: 4
sidebar_label: "Uninstall"
---
# Uninstall
To uninstall AliasVault, run the following command. This will stop and remove the AliasVault containers and remove the Docker images.
{: .note }
:::note
This will not delete any data stored in the database. If you wish to delete all data, you should manually delete the `database` directory and the other directories created by AliasVault.
:::
### Steps
1. Run docker compose down and remove any local Docker images related to AliasVault.

View File

@@ -1,32 +1,16 @@
---
layout: default
title: Docker Compose
parent: Self-host Install
redirect_from:
- /installation/advanced/manual-setup
- /installation/advanced/manual-setup.html
nav_order: 2
sidebar_position: 2
---
# Self-host using Docker Compose (single container)
The following guide will walk you through the steps to install AliasVault via the All-In-One Docker container. This container uses `s6-overlay` to combine all AliasVault's services into one image for convenience. The only downside compared to the `install.sh` installer is that this version does NOT come with SSL/TLS support, so you'll have to make the container available through your own SSL/TLS proxy.
<details open markdown="block">
<summary>
Table of contents
</summary>
{: .text-delta }
1. TOC
{:toc}
</details>
{: .important-title }
> Requirements:
> - Docker (20.10+) and Docker Compose (2.0+) installed on your system
> - See instructions: [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
> - You have existing SSL/TLS proxy infrastructure (Traefik, Nginx, HAProxy, Cloudflare Tunnel)
> - Knowledge of working with direct Docker commands
> - Knowledge of .yml and .env files
:::info[Requirements]
- Docker (20.10+) and Docker Compose (2.0+) installed on your system
- See instructions: [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/)
- You have existing SSL/TLS proxy infrastructure (Traefik, Nginx, HAProxy, Cloudflare Tunnel)
- Knowledge of working with direct Docker commands
- Knowledge of .yml and .env files
:::
## 1. Basic installation
1. Create a new folder where you want to store AliasVault's data and configuration folders.
@@ -94,9 +78,10 @@ You must set up and configure your own TLS/SSL infrastructure (such as Traefik,
AliasVault includes a built-in email server that allows you to generate email aliases on-the-fly for every website you use, and receive the emails straight in AliasVault.
{: .note }
:::note
If you skip this step, AliasVault will default to use public email domains offered by SpamOK. While this still works for creating aliases, it has privacy limitations. For complete privacy and control, we recommend setting up your own domain.
[Learn more about the differences between private and public email domains](../../misc/private-vs-public-email.md).
:::
### Requirements
- A **public IPv4 address** with ports 25 and 587 forwarded to your AliasVault server
@@ -186,8 +171,9 @@ docker compose up -d
Afterwards, when you login to the AliasVault web app, you should now be able to create an alias with your configured private domain and be able to receive email on it.
{: .note }
:::note
Important: DNS propagation can take up to 24-48 hours. During this time, email delivery might be inconsistent.
:::
If you encounter any issues, feel free to join the [Discord chat](https://discord.gg/DsaXMTEtpF) to get help from other users and maintainers.
@@ -216,8 +202,9 @@ By default, SMTP TLS is disabled (`SMTP_TLS_ENABLED: "false"`). This does NOT si
4. Update your `docker-compose.yml` to set `SMTP_TLS_ENABLED: "true"`
5. Restart the container: `docker compose down && docker compose up -d`
{: .note }
:::note
If you have multiple mail domains, use a single certificate with Subject Alternative Names (SANs) covering all domains. If TLS is enabled but no valid certificate is found, the service will log a warning (visible in admin panel > general logs) and continue in non-TLS mode.
:::
---

View File

@@ -1,18 +1,10 @@
---
layout: default
title: Troubleshooting
parent: Docker Compose
nav_order: 3
sidebar_position: 3
sidebar_label: "Troubleshooting"
---
# Troubleshooting
This guide covers common issues and troubleshooting steps for AliasVault encountered during installation, updates or general maintenance.
{: .toc }
* TOC
{:toc}
---
## Check Docker Container Status

View File

@@ -0,0 +1,4 @@
{
"label": "Update",
"position": 1
}

View File

@@ -1,31 +1,18 @@
---
layout: default
title: Update
parent: Docker Compose
nav_order: 1
sidebar_position: 1
---
# Updating AliasVault
{: .no_toc }
{: .note }
:::note
This guide is for Docker Compose manual installations. If you're using the `install.sh` script for self-hosted installations, see [Install Script Update Guide](../../script/update/).
<details open markdown="block">
<summary>
Table of contents
</summary>
{: .text-delta }
1. TOC
{:toc}
</details>
:::
## Before You Begin
You can see the latest available version of AliasVault on [GitHub](https://github.com/aliasvault/aliasvault/releases).
{: .warning }
:::warning
Before updating, it's recommended to backup your database and other important data. You can do this by making
a copy of the `database` and `certificates` directories.
:::
## Standard Update Process
For most version updates, you can use the standard update process. The container will automatically handle database migrations on startup:

View File

@@ -1,9 +1,6 @@
---
layout: default
title: Self-host Install
nav_order: 2
sidebar_position: 2
---
# Self-host Install
AliasVault can be self-hosted on your own servers using two different installation methods. Both use Docker, but they differ in how much is automated versus how much you manage yourself.
@@ -28,7 +25,7 @@ If you prefer manual setup and **have existing SSL infrastructure**, use the all
| **Setup style** | Managed, opinionated, production-ready defaults | Fits into existing homelab/stack tools (Portainer compatible) |
| **Build from source** | Supported | Pre-built container only |
| **Choose if…** | You want auto SSL and a managed stack | You already have TLS and prefer manual control |
| | [**Self-host via Install Script →**](./script){: .btn .btn-primary } | [**Self-host via Docker →**](./docker-compose){: .btn .btn-primary } |
| | [**Self-host via Install Script →**](./script) | [**Self-host via Docker →**](./docker-compose) |
### Quick Decision Guide
@@ -44,7 +41,6 @@ If you prefer manual setup and **have existing SSL infrastructure**, use the all
- ✅ You want to integrate with your homelab tools (Portainer, etc.)
- ✅ You prefer manual control over the configuration
---
## Frequently Asked Questions

View File

@@ -0,0 +1,4 @@
{
"label": "Install Script",
"position": 1
}

View File

@@ -0,0 +1,4 @@
{
"label": "Advanced",
"position": 4
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Admin access
parent: Advanced
grand_parent: Install Script
nav_order: 5
sidebar_position: 5
sidebar_label: "Admin access"
---
# Admin access
By default the admin panel at `/admin` is reachable from the public internet, alongside the regular client app. This is intentional and safe to leave as-is for most installations:

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Build from Source
parent: Advanced
grand_parent: Install Script
nav_order: 3
sidebar_position: 3
sidebar_label: "Build from Source"
---
# Build from Source
Instead of using the pre-built Docker images, you can also build the images from source yourself. This allows you to build a specific version of AliasVault and/or to make changes to the source code.

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Database Operations
parent: Advanced
grand_parent: Install Script
nav_order: 4
sidebar_position: 4
sidebar_label: "Database Operations"
---
# Database Operations
This page explains how to import/export on the AliasVault server database via the `./install.sh` script.
@@ -40,8 +36,9 @@ $ ./install.sh db-import < backup.sql.gz
### Fallback: import directly with Docker
If `./install.sh db-import` hangs or fails, you can restore the database directly with Docker. This drops the existing database, recreates it, and imports the backup.
{: .warning }
:::warning
This will permanently delete the existing database before restoring. Make sure your backup file is valid first.
:::
For a gzipped backup (`backup.sql.gz`):

View File

@@ -1,9 +1,5 @@
---
layout: default
title: Advanced
parent: Install Script
nav_order: 4
sidebar_position: 4
---
# Advanced Installation
The following guides provide more advanced installation options for AliasVault. These options are not required for the basic installation, but may be useful for advanced users.

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Stop/start
parent: Advanced
grand_parent: Install Script
nav_order: 2
sidebar_position: 2
sidebar_label: "Stop/start"
---
# Stopping and starting AliasVault
You can stop and start AliasVault easily by using the install script.

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Trusted proxies
parent: Advanced
grand_parent: Install Script
nav_order: 6
sidebar_position: 6
sidebar_label: "Trusted proxies"
---
# Trusted proxies
When AliasVault sits behind another reverse proxy (HAProxy, Traefik, Cloudflare, an upstream nginx, etc.), the built-in nginx reads the real client IP from the `X-Forwarded-For` header so that audit logs and the IP allowlist see the actual client rather than the upstream proxy.

View File

@@ -1,17 +1,14 @@
---
layout: default
title: Uninstall
parent: Advanced
grand_parent: Install Script
nav_order: 4
sidebar_position: 4
sidebar_label: "Uninstall"
---
# Uninstall
To uninstall AliasVault, run the install script with the `uninstall` option. This will stop and remove the AliasVault containers and remove any local AliasVault Docker images.
{: .note }
:::note
This will not delete any data stored in the database. If you wish to delete all data, you should manually delete the `database` directory and the other directories created by AliasVault.
:::
### Steps
1. Run the install script with the `uninstall` option

View File

@@ -1,32 +1,16 @@
---
layout: default
title: Install Script
parent: Self-host Install
redirect_from:
- /installation/install
- /installation/install.html
nav_order: 1
sidebar_position: 1
---
# Self-host using Install Script (multi-container)
The following guide will walk you through the steps to install AliasVault on your own server using the AliasVault installer script: `install.sh`. This script will pull pre-built Docker Images and do all the configuration for you while using `docker compose` in the background.
<details open markdown="block">
<summary>
Table of contents
</summary>
{: .text-delta }
1. TOC
{:toc}
</details>
{: .important-title }
> Requirements:
> - 64-bit Linux VM with root access (Ubuntu or RHEL-based recommended)
> - Minimum: 1 vCPU, 1GB RAM, 16GB disk
> - Docker (CE ≥ 20.10) and Docker Compose (≥ 2.0)
> → Installation guide: [Docker Docs](https://docs.docker.com/engine/install/)
> - Able to forward ports 80, 443 (with optional 25/587 for private email domains)
:::info[Requirements]
- 64-bit Linux VM with root access (Ubuntu or RHEL-based recommended)
- Minimum: 1 vCPU, 1GB RAM, 16GB disk
- Docker (CE ≥ 20.10) and Docker Compose (≥ 2.0)
→ Installation guide: [Docker Docs](https://docs.docker.com/engine/install/)
- Able to forward ports 80, 443 (with optional 25/587 for private email domains)
:::
---
@@ -83,8 +67,9 @@ and then in the prompt choose option 2.
AliasVault includes a built-in email server that allows you to generate email aliases on-the-fly for every website you use, and receive + read the emails straight in AliasVault.
{: .note }
:::note
If you skip this step, AliasVault will default to use public email domains offered by SpamOK. While this still works for creating aliases, it has privacy limitations. For complete privacy and control, we recommend setting up your own domain. [Learn more about the differences between private and public email domains](../../misc/private-vs-public-email.md).
:::
### Requirements
- A **public IPv4 address** with ports 25 and 587 forwarded to your AliasVault server
@@ -175,8 +160,9 @@ After setting up your DNS, continue with configuring AliasVault to let it know w
- Note: you can configure the default domain for new aliases in the AliasVault client in Menu > Settings > Email Settings > Default Email Domain
- Start receiving emails on your aliases
{: .note }
:::note
Important: DNS propagation can take up to 24-48 hours. During this time, email delivery might be inconsistent.
:::
If you encounter any issues, feel free to join the [Discord chat](https://discord.gg/DsaXMTEtpF) to get help from other users and maintainers.
@@ -190,8 +176,9 @@ By default, SMTP TLS is disabled. This does NOT significantly impact email deliv
4. Edit your `.env` file and set `SMTP_TLS_ENABLED=true`
5. Restart the SMTP service: `./install.sh restart smtp`
{: .note }
:::note
If you have multiple mail domains, use a single certificate with Subject Alternative Names (SANs) covering all domains. If TLS is enabled but no valid certificate is found, the service will log a warning (visible in admin panel > general logs) and continue in non-TLS mode.
:::
---
@@ -205,8 +192,9 @@ If you want to disable public registration, you can do so by running the install
./install.sh configure-registration
```
{: .note }
:::note
Disabling public registration means the ability to create new accounts in the AliasVault client is disabled for everyone, including administrators. Accounts cannot be created outside of the client because of the end-to-end encryption employed by AliasVault. So make sure you have created your own account(s) before disabling public registration.
:::
---
@@ -220,8 +208,9 @@ If you want to entirely disable IP logging, you can do so by running the install
./install.sh configure-ip-logging
```
{: .note }
:::note
Disabling IP logging means the ability to monitor and track abusive users on your AliasVault server is disabled.
:::
---

View File

@@ -1,21 +1,10 @@
---
layout: default
title: Troubleshooting
parent: Install Script
redirect_from:
- /installation/troubleshooting
- /installation/troubleshooting.html
nav_order: 5
sidebar_position: 5
sidebar_label: "Troubleshooting"
---
# Troubleshooting
This guide covers common issues and troubleshooting steps for AliasVault encountered during installation, updates or general maintenance.
{: .toc }
* TOC
{:toc}
---
## Check Docker Container Status
@@ -107,7 +96,6 @@ If you are not receiving emails on your aliases, check the following:
Refer to the [installation guide](./#3-email-server-setup) for more information on how to configure your DNS records and ports.
### 4. Forgot AliasVault Admin Password
If you have lost your admin password, you can reset it by running the install script with the `reset-admin-password` option. This will generate a new random password and update the .env file with it. After that it will restart the AliasVault containers to apply the changes.

View File

@@ -0,0 +1,4 @@
{
"label": "Update",
"position": 3
}

View File

@@ -1,34 +1,18 @@
---
layout: default
title: Update
parent: Install Script
redirect_from:
- /installation/update
- /installation/update.html
nav_order: 3
sidebar_position: 3
---
# Updating AliasVault
{: .no_toc }
{: .note }
:::note
This guide is for self-hosted installations using the `install.sh` script. If you're using Docker Compose for manual installs, see [Docker Compose Update Guide](../../docker-compose/update/).
<details open markdown="block">
<summary>
Table of contents
</summary>
{: .text-delta }
1. TOC
{:toc}
</details>
:::
## Before You Begin
You can see the latest available version of AliasVault on [GitHub](https://github.com/aliasvault/aliasvault/releases).
{: .warning }
:::warning
Before updating, it's recommended to backup your database and other important data. You can do this by making
a copy of the `database` and `certificates` directories.
:::
## Standard Update Process
For most version updates, you can use the standard update process:
@@ -42,8 +26,8 @@ For most version updates, you can use the standard update process:
## Version-Specific Upgrade Guides
Upgrading from certain earlier versions require additional steps during upgrade. If you are upgrading from an older version, please check the relevant articles below if it applies to your server:
- [Updating to 0.23.0](v0.23.0.html) - Update Docker Image locations due to new AliasVault GitHub organization
- [Updating to 0.22.0](v0.22.0.html) - Move secrets from .env to file based secrets
- [Updating to 0.23.0](v0.23.0.md) - Update Docker Image locations due to new AliasVault GitHub organization
- [Updating to 0.22.0](v0.22.0.md) - Move secrets from .env to file based secrets
## Additional Update Options

View File

@@ -1,17 +1,8 @@
---
layout: default
title: Update to v0.22.0
parent: Update
grand_parent: Install Script
redirect_from:
- /installation/update/v0.22.0
- /installation/update/v0.22.0.html
nav_order: 2
sidebar_position: 2
sidebar_label: "Update to v0.22.0"
---
# Updating to v0.22.0
{: .no_toc }
Since v0.22.0, the AliasVault docker structure has changed due to the introduction of the new (optional) all-in-one docker image that simplifies self-hosting use for NAS/Unraid and other home use. Data structure changes involve secrets that have moved from .env to a new `./secrets` bind mount, and several other .env params that are now optional and do not require to be explicitly set for a clean install.
## Update Methods

View File

@@ -1,17 +1,8 @@
---
layout: default
title: Update to v0.23.0
parent: Update
grand_parent: Install Script
redirect_from:
- /installation/update/v0.23.0
- /installation/update/v0.23.0.html
nav_order: 1
sidebar_position: 1
sidebar_label: "Update to v0.23.0"
---
# Updating to v0.23.0
{: .no_toc }
Since v0.23.0, AliasVault has moved from `lanedirt/aliasvault` to the new `aliasvault/aliasvault` GitHub organization, and Docker image names have been simplified.
## Update Methods

View File

@@ -0,0 +1,4 @@
{
"label": "Miscellaneous",
"position": 7
}

View File

@@ -0,0 +1,4 @@
{
"label": "Development",
"position": 99
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Add new language
parent: Development
grand_parent: Miscellaneous
nav_order: 3
sidebar_position: 3
sidebar_label: "Add new language"
---
# Add new language
To add a new language to AliasVault, follow these steps in order:

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Browser extensions
parent: Development
grand_parent: Miscellaneous
nav_order: 3
sidebar_position: 3
sidebar_label: "Browser extensions"
---
# Browser extensions
AliasVault offers browser extensions compatible with both Chrome and Firefox. This guide explains how to build and debug the extensions locally.

View File

@@ -1,18 +1,13 @@
---
layout: default
title: Database operations
parent: Development
grand_parent: Miscellaneous
nav_order: 3
sidebar_position: 3
sidebar_label: "Database operations"
---
# Database operations
This article contains tips for how to work with the AliasVault PostgreSQL database in both production and development environments.
## Using install.sh helper methods (recommended)
The `install.sh` script contains helper methods that makes it easy to export and import databases with a simple single command.
### Export database
```bash
./install.sh db-export > aliasvault-db-export.sql.gz
@@ -40,8 +35,9 @@ docker compose exec postgres pg_dump -U aliasvault aliasvault | gzip > aliasvaul
### Import database from file
To drop the existing database and restore the database from a file, you can use the following command:
{: .warning }
:::warning
Executing this command will drop the existing database and restore the database from the file. Make sure to have a backup of the existing database before running this command.
:::
```bash
docker compose exec postgres psql -U aliasvault postgres -c "DROP DATABASE aliasvault;" && \

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Development
parent: Miscellaneous
nav_order: 99
sidebar_position: 99
---
# Development Guide
Choose your platform to get started with AliasVault development:
@@ -18,7 +14,7 @@ Choose your platform to get started with AliasVault development:
- [Browser extensions](browser-extensions.md)
- [Database operations](database-operations.md)
- [Running GitHub Actions Locally](run-github-actions-locally.md)
- Running GitHub Actions Locally
- [Upgrading EF Server Model](upgrade-ef-server-model.md)
- [Upgrading EF Client Model](upgrade-ef-client-model.md)
- [Enabling WebAuthn PFR in Chrome](enable-webauthn-pfr-chrome.md)
- Enabling WebAuthn PFR in Chrome

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Linux/MacOS development
parent: Development
grand_parent: Miscellaneous
nav_order: 1
sidebar_position: 1
sidebar_label: "Linux/MacOS development"
---
# Setting Up AliasVault Development Environment on Linux/MacOS
This guide will help you set up AliasVault for development on Linux or MacOS systems.

View File

@@ -0,0 +1,4 @@
{
"label": "Mobile Apps",
"position": 4
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Android
parent: Mobile Apps
grand_parent: Development
nav_order: 1
sidebar_position: 1
sidebar_label: "Android"
---
# Android
This article covers Android specific parts of the React Native AliasVault app codebase.

View File

@@ -1,11 +1,6 @@
---
layout: default
title: Mobile Apps
parent: Development
grand_parent: Miscellaneous
nav_order: 4
sidebar_position: 4
---
# React Native Expo
## MacOS:

View File

@@ -0,0 +1,4 @@
{
"label": "iOS",
"position": 2
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Testing guide
parent: iOS
grand_parent: Mobile Apps
nav_order: 1
sidebar_position: 1
sidebar_label: "Testing guide"
---
# Testing guide
This guide explains how to run the iOS test suites for the AliasVault mobile app.

View File

@@ -1,11 +1,6 @@
---
layout: default
title: iOS
parent: Mobile Apps
grand_parent: Development
nav_order: 2
sidebar_position: 2
---
# iOS
This article covers iOS specific parts of the React Native AliasVault app codebase.

View File

@@ -0,0 +1,4 @@
{
"label": "Release",
"position": 99
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Git versioning strategy
parent: Release
grand_parent: Development
nav_order: 3
sidebar_position: 3
sidebar_label: "Git versioning strategy"
---
# Git versioning strategy
This document describes the **official release workflow** for AliasVault.

View File

@@ -1,18 +1,9 @@
---
layout: default
title: Release
parent: Development
nav_order: 99
sidebar_position: 99
---
# Publish new release
Follow the steps in the checklist below to prepare a new release.
{: .toc }
* TOC
{:toc}
---
# Release preparation checklist
@@ -54,7 +45,7 @@ The creation of the new release tag will cause the `install.sh` script to see th
3. Publish the release.
### Publish new Docker Images
The creation of the new release tag will automatically trigger the GitHub Actions workflow `Publish Docker Images` which will build the docker images and push them to the GitHub Container Registry. After publishing, the images will then be available for the installation script to pull during the update. Do take note that this publish step may take up to 15 minutes to complete. Between the creation of the release tag and the completion of the publish step, the installation script will not be able to pull the new images (yet) and can throw errors, this is expected. After the publish is completed, users can update their self-hosted installation by following the [update guide](/installation/update)
The creation of the new release tag will automatically trigger the GitHub Actions workflow `Publish Docker Images` which will build the docker images and push them to the GitHub Container Registry. After publishing, the images will then be available for the installation script to pull during the update. Do take note that this publish step may take up to 15 minutes to complete. Between the creation of the release tag and the completion of the publish step, the installation script will not be able to pull the new images (yet) and can throw errors, this is expected. After the publish is completed, users can update their self-hosted installation by following the [update guide](/installation/script/update/)
#### To locally build and publish the all-in-one Docker image:
GitHub Actions has had issues in the past with building the all-in-one Docker image for arm64 because of unknown timeouts. To locally build for both amd64 and arm64 and push manually, run the following:

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Manual versioning
parent: Release
grand_parent: Development
nav_order: 2
sidebar_position: 2
sidebar_label: "Manual versioning"
---
# Manual Versioning Steps
Alternatively, you can do it manually by following these steps:

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Release Checklist
parent: Release
grand_parent: Development
nav_order: 4
sidebar_position: 4
sidebar_label: "Release Checklist"
---
# Release Checklist
Step-by-step guide for creating a new AliasVault release.

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Upgrade the AliasClientDb EF model
parent: Development
grand_parent: Miscellaneous
nav_order: 5
sidebar_position: 5
sidebar_label: "Upgrade the AliasClientDb EF model"
---
# Upgrade the AliasClientDb EF model
This guide explains how to upgrade the AliasVault client database structure. The AliasVault client database is built and managed using Entity Framework code-first approach, where all SQL structure is maintained in code and then converted to SQL scripts for use across web apps, browser extensions, and mobile apps.

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Upgrade the AliasServerDb EF model
parent: Development
grand_parent: Miscellaneous
nav_order: 6
sidebar_position: 6
sidebar_label: "Upgrade the AliasServerDb EF model"
---
# Upgrade the AliasServerDb EF model
## Create new migration

View File

@@ -1,12 +1,7 @@
---
layout: default
title: Windows development
parent: Development
grand_parent: Miscellaneous
nav_order: 2
sidebar_position: 2
sidebar_label: "Windows development"
---
# Setting Up AliasVault Development Environment on Windows
This guide will help you set up AliasVault for development on Windows using WSL (Windows Subsystem for Linux).

6
docs/docs/misc/index.md Normal file
View File

@@ -0,0 +1,6 @@
---
sidebar_position: 7
---
# Miscellaneous
Miscellaneous guides and documentation.

View File

@@ -1,10 +1,7 @@
---
layout: default
title: Private vs Public Email Domains
parent: Miscellaneous
nav_order: 4
sidebar_position: 4
sidebar_label: "Private vs Public Email Domains"
---
# Private vs Public Email Domains
AliasVault offers two types of email domains: private and public.

View File

@@ -0,0 +1,4 @@
{
"label": "Mobile Apps",
"position": 4
}

View File

@@ -0,0 +1,4 @@
{
"label": "Android App",
"position": 1
}

View File

@@ -1,19 +1,16 @@
---
layout: default
title: Autofill & Passkeys
parent: Android App
grand_parent: Mobile Apps
nav_order: 2
sidebar_position: 2
sidebar_label: "Autofill & Passkeys"
---
# Android Autofill & Passkeys
This page explains how autofill and passkeys work in the AliasVault Android app.
## Experimental
{: .note }
:::note
As of writing (October 2025), autofill and passkey support for Android is in an experimental state. If you're having trouble please read the instructions on this page.
:::
Android has added multiple autofill APIs throughout the years, which include Accessibility, Native Autofill, and Inline Autofill. These multiple APIs make it hard to offer a universal experience for AliasVault. AliasVault currently supports some but not all of these, so results may vary depending on your device and the app you're using. We're actively working on improving autofill in upcoming releases.
@@ -35,9 +32,9 @@ Passkeys are supported in most places for both creation and authentication. Howe
**Not Yet Supported:**
- ❌ **PRF Extension**: The PRF (Pseudo-Random Function) extension is currently not supported on Android due to Android Credential Manager restrictions. Only Google Password Manager or hardware passkeys like YubiKey support PRF at this moment. When Android adds support for third-party credential providers to advertise PRF capabilities, AliasVault will implement it.
{: .note }
:::note
The PRF extension is fully supported in AliasVault's browser extension and iOS app. The Android limitation is specific to the platform's Credential Manager API.
:::
## Using Native Autofill in Chrome
Currently AliasVault implements the `Native Autofill` API which shows an autofill popup on supported input fields. The Chrome browser on Android from **version 135** onwards support native autofill via third party apps. However you need to enable this manually.
@@ -49,9 +46,8 @@ To configure AliasVault as the autofill provider in Chrome:
When you have correctly set up native autofill it should look like the examples below. Whenever you focus on a username, email or password field, the autofill popup will be triggered:
<img src="../../../assets/img/android/autofill/one-option.png" alt="Android Autofill Popup Example" width="300" height="auto">
<img src="../../../assets/img/android/autofill/no-match.png" alt="Android Autofill Popup Example" width="300" height="auto">
<img src="/assets/img/android/autofill/one-option.png" alt="Android Autofill Popup Example" width="300" height="auto">
<img src="/assets/img/android/autofill/no-match.png" alt="Android Autofill Popup Example" width="300" height="auto">
## Frequently Asked Questions

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Build from Source
parent: Android App
grand_parent: Mobile Apps
nav_order: 1
sidebar_position: 1
sidebar_label: "Build from Source"
---
# Building AliasVault Android App from Source
This guide explains how to build and install the AliasVault Android app from source code using React Native.
@@ -38,7 +34,6 @@ npm install
npx react-native run-android --mode release
```
5. For publishing to Google Play:
Create a local gradle file in your user directory where the keystore credentials will be placed
```bash

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Android App
parent: Mobile Apps
nav_order: 1
sidebar_position: 1
---
# Android app
In order to install the Android iOS app, see the options below.

View File

@@ -1,11 +1,7 @@
---
layout: page
title: Self-Signed SSL Setup
parent: Android App
grand_parent: Mobile Apps
nav_order: 3
sidebar_position: 3
sidebar_label: "Self-Signed SSL Setup"
---
# Self-Signed SSL Certificate Setup for Android
By default, the AliasVault Android app only supports connecting to servers with a valid SSL certificate from a trusted external authority. If you want to use your own self-signed certificate, you must manually install and trust the certificate on your Android device by following these steps.

View File

@@ -1,10 +1,6 @@
---
layout: default
title: Mobile Apps
has_children: true
nav_order: 4
sidebar_position: 4
---
# Mobile Apps
This section contains information about installing and using the AliasVault mobile apps. These mobile apps allow you to manage and use AliasVault from your smartphone enabling autofilling of login credentials via native iOS/Android capabilities.

View File

@@ -0,0 +1,4 @@
{
"label": "iOS App",
"position": 2
}

View File

@@ -1,11 +1,7 @@
---
layout: default
title: Build from Source
parent: iOS App
grand_parent: Mobile Apps
nav_order: 2
sidebar_position: 2
sidebar_label: "Build from Source"
---
# Building AliasVault iOS App from Source
This guide explains how to build and install the AliasVault iOS app from source code using React Native.

View File

@@ -1,10 +1,6 @@
---
layout: default
title: iOS App
parent: Mobile Apps
nav_order: 1
sidebar_position: 1
---
# iOS app
In order to install the AliasVault iOS app, see the options below.

View File

@@ -1,11 +1,7 @@
---
layout: page
title: Self-Signed SSL Setup
parent: iOS App
grand_parent: Mobile Apps
nav_order: 3
sidebar_position: 3
sidebar_label: "Self-Signed SSL Setup"
---
# Self-Signed SSL Certificate Setup for iOS
By default, the AliasVault iOS app only supports connecting to servers with a valid SSL certificate from a trusted external authority. If you want to use your own self-signed certificate, you must manually install and trust the certificate on your iOS device by following these steps.

192
docs/docusaurus.config.ts Normal file
View File

@@ -0,0 +1,192 @@
import {themes as prismThemes} from 'prism-react-renderer';
import type {Config} from '@docusaurus/types';
import type * as Preset from '@docusaurus/preset-classic';
const config: Config = {
title: 'AliasVault',
tagline: 'A privacy-first password manager with built-in email aliasing',
favicon: 'assets/img/favicon.png',
url: 'https://docs.aliasvault.net',
baseUrl: '/',
organizationName: 'aliasvault',
projectName: 'aliasvault',
onBrokenLinks: 'throw',
// Treat .md as CommonMark (lenient) and .mdx as MDX. This keeps the large
// body of migrated Markdown (shell snippets, angle brackets, braces) parsing
// without JSX escaping issues, while still allowing MDX where we opt in.
markdown: {
format: 'detect',
hooks: {
onBrokenMarkdownLinks: 'warn',
},
},
i18n: {
defaultLocale: 'en',
locales: ['en'],
},
presets: [
[
'classic',
{
docs: {
routeBasePath: '/',
sidebarPath: './sidebars.ts',
editUrl: 'https://github.com/aliasvault/aliasvault/tree/main/docs/docs/',
showLastUpdateTime: true,
},
blog: false,
theme: {
customCss: './src/css/custom.css',
},
sitemap: {
changefreq: 'weekly',
priority: 0.5,
},
} satisfies Preset.Options,
],
],
plugins: [
[
'@docusaurus/plugin-client-redirects',
{
redirects: [
{
to: '/installation/docker-compose/',
from: [
'/installation/advanced/manual-setup',
'/installation/advanced/manual-setup.html',
],
},
{
to: '/installation/script/',
from: ['/installation/install', '/installation/install.html'],
},
{
to: '/installation/script/troubleshooting',
from: [
'/installation/troubleshooting',
'/installation/troubleshooting.html',
],
},
{
to: '/installation/script/update/',
from: ['/installation/update', '/installation/update.html'],
},
{
to: '/installation/script/update/v0.22.0',
from: [
'/installation/update/v0.22.0',
'/installation/update/v0.22.0.html',
],
},
{
to: '/installation/script/update/v0.23.0',
from: [
'/installation/update/v0.23.0',
'/installation/update/v0.23.0.html',
],
},
],
},
],
],
themes: [
[
'@easyops-cn/docusaurus-search-local',
{
hashed: true,
indexBlog: false,
docsRouteBasePath: '/',
highlightSearchTermsOnTargetPage: true,
searchResultLimits: 8,
},
],
],
themeConfig: {
image: 'assets/img/screenshot.png',
colorMode: {
defaultMode: 'dark',
respectPrefersColorScheme: true,
},
navbar: {
// The logo SVG already includes the "AliasVault" wordmark, so no
// separate title text (which would render the name twice). Light mode
// uses the dark-wordmark logo; dark mode the white one.
logo: {
alt: 'AliasVault',
src: 'assets/img/logo-light.svg',
srcDark: 'assets/img/logo.svg',
},
items: [
{
type: 'docSidebar',
sidebarId: 'docsSidebar',
position: 'left',
label: 'Documentation',
},
{
href: 'https://aliasvault.net',
label: 'Website',
position: 'right',
},
{
href: 'https://github.com/aliasvault/aliasvault',
label: 'GitHub',
position: 'right',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{label: 'Self-host Install', to: '/installation/'},
{label: 'Browser Extensions', to: '/browser-extensions/'},
{label: 'Mobile Apps', to: '/mobile-apps/'},
{label: 'Architecture', to: '/architecture/'},
],
},
{
title: 'Community',
items: [
{
label: 'GitHub',
href: 'https://github.com/aliasvault/aliasvault',
},
{label: 'Contributing', to: '/contributing/'},
{label: 'Help & Support', to: '/contact/'},
],
},
{
title: 'More',
items: [
{label: 'Website', href: 'https://aliasvault.net'},
{
label: 'Edit these docs',
href: 'https://github.com/aliasvault/aliasvault/tree/main/docs',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} AliasVault. Built with Docusaurus.`,
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
additionalLanguages: ['bash', 'json', 'yaml', 'docker', 'nginx', 'csharp'],
},
} satisfies Preset.ThemeConfig,
};
export default config;

View File

@@ -1,57 +0,0 @@
---
layout: home
title: Home
nav_order: 1
description: "AliasVault Documentation - Open-source password and identity manager"
permalink: /
---
# AliasVault Documentation
{: .fs-9 }
A privacy-first password manager with built-in email aliasing. Fully encrypted and self-hostable.
{: .fs-6 .fw-300 }
[Self-host Install](./installation){: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 }
[View on GitHub](https://github.com/aliasvault/aliasvault){: .btn .fs-5 .mb-4 .mb-md-0 }
---
## What is AliasVault?
AliasVault is a self-hosted password and (email) alias manager that helps you:
- 🔐 **Secure Passwords** - Store and manage passwords with zero-knowledge encryption
- 📧 **Email Aliases** - Generate unique email addresses for each service
- 🎭 **Identity Management** - Create and manage separate online identities
- 🏠 **Self-Hosted** - Run on your own infrastructure using Docker
- 🔓 **Open Source** - Transparent, auditable, and free to use
## Key Features
### Zero-Knowledge Encryption
Your entire vault (usernames, passwords, notes, passkeys etc.) is fully encrypted client-side before being sent to the server. Your master password never leaves your device, and the server cannot decrypt any vault contents. When emails are received by the server, they are immediately encrypted with your public key before being saved, ensuring only you can read them. Email aliases themselves are registered on the server as "claims" linked to your account for routing purposes, but no personally identifiable information is required.
### Built-in Email Server
Generate virtual email addresses for each identity. Emails sent to these addresses are instantly visible in the AliasVault app.
### Virtual Identities
Create separate identities for different purposes, each with its own email aliases.
---
## Getting Started
Ready to get started with AliasVault? Check out the [server installation guide](./installation).
---
## Want to Contribute?
Help make AliasVault better for everyone:
- 🌍 **[Translate the UI](./contributing/ui-translations.md)** - Help translate AliasVault into your language
- 👤 **[Add Name Dictionaries](./contributing/identity-generator.md)** - Provide names for the identity generator
See all ways to contribute: [Contributing Guide](./contributing/)

Some files were not shown because too many files have changed in this diff Show More