The manual.
The three steps below take you from nothing to a working inbox in about five minutes. Everything after them is reference: configuration, features, deployment, and the extension API.
Start here.
Run this command
Docker is the only thing you need beforehand. There's nothing to clone and no
.envfile to write first. Paste it, press enter, and give it a few seconds to pull.docker run -d -p 3000:3000 --name bulwark \ -v bulwark-config:/app/data/admin \ -v bulwark-state:/app/data/admin-state \ ghcr.io/bulwarkmail/webmail:latestOpen localhost:3000
From here the setup wizard takes over. It probes your JMAP server and works out whether to use OAuth or basic auth, generates a session secret, takes your logos if you have any, and finishes by setting the admin password. You won't need to edit a config file afterwards.
Stuck on the wizard? See configuration or authentication.
Point it at a mail server
Bulwark is the front; Stalwart is the server. If you don't have one yet, install Stalwart first and come back. The wizard handles the wiring.
Or pick a path.
Docker
One command and one container, then a web wizard for everything else. Right for almost everyone.
Docker guideInstall script
An interactive shell installer for hosts that already run Node. It asks you the same questions the wizard does.
Run the scriptManual install
Clone the repo and wire up the env file yourself. Takes the longest and leaves nothing hidden.
Manual installBrowse the full manual.
Getting Started
- Stalwart setupConfigure Stalwart Mail Server for use with Bulwark.
- IntroductionWhat Bulwark is and what it runs on.
- AuthenticationAuthentication methods supported by Bulwark.
- InstallationHow to install and run Bulwark.
- Environment referenceEvery variable in Bulwark's .env.example, with defaults and when to set it.
- ConfigurationConfigure Bulwark for your environment.
- Demo modeRun Bulwark against fixture data instead of a mail server.
Features
- Composing emailsRich text editor and composing features.
- EmailHow Bulwark handles reading, composing, searching, and filtering mail.
- CalendarViews, event editing, invitations, and subscriptions in the calendar.
- Search and filtersFull-text search, structured filters, and search chips.
- ContactsAddress books, groups, categories, and vCard import and export.
- FilesCloud file browser and JMAP FileNode storage features.
- Progressive Web AppInstall Bulwark to your home screen with a service worker and dynamic manifest.
- MobileBulwark on a phone - the installable PWA, the native app, and the push relay behind both.
- Anonymous usage statsThe optional daily heartbeat - what it counts, why, and how to turn it on or off.
Deployment
- Docker ComposeRun Bulwark alongside Stalwart with Docker Compose.
- Docker deploymentDeploy Bulwark with Docker and Docker Compose.
- Reverse proxySet up a reverse proxy in front of Bulwark.
- Manual deploymentDeploy Bulwark manually on a server.
- UpdatingRelease channels, how to upgrade each install type, and how the update notice works.
Guides
- CustomizationCustomize the look and feel of Bulwark.
- Keyboard shortcutsAll keyboard shortcuts available in Bulwark.
- Embedded SSOEmbed Bulwark in an iframe with automatic single sign-on managed by a parent portal.
- PluginsPlugin system for extending Bulwark with custom functionality.
- Account securityManage password, 2FA, app passwords, and API keys from within Bulwark.
- Multi-account supportManage multiple simultaneous email accounts in Bulwark.
- S/MIMESign, encrypt, decrypt, and verify mail with S/MIME certificates.
- Extension marketplaceBrowse and install plugins and themes from a configurable extension directory.
- Admin dashboardManage runtime configuration, plugins, themes, API keys, and policy from a single place.
- Master-user impersonationLand platform admins directly inside a tenant's mailbox via signed JWT handoff, without storing tenant passwords.
- TroubleshootingThe failures people actually hit, and what each one means.
Extensions
- Extensions overviewBuild plugins and themes for Bulwark Webmail and publish them on the Bulwark Extensions directory.
- manifest.json referenceRequired fields, permissions, and metadata for Bulwark extensions.
- REST API referenceThe public REST API of the Bulwark Extensions directory.
- Submission guidelinesRequirements, review process, and content policy for publishing extensions on the Bulwark directory.
- Publishing and updatesHow to publish a new extension and ship updates through the Bulwark directory.