Installation
BAUSW is distributed as a Docker image, which includes both the server and front-end application for streamlined deployment.
Requirements
BAUSW is designed for simple deployment with minimal infrastructure requirements:
Core requirements:
- Docker-compatible runtime (e.g., Kubernetes or Docker Swarm recommended)
- Persistent volume for the database (10GB or more recommended)
- SMTP server for sending emails and notifications
Optional components:
- Reverse proxy or CDN for TLS termination and caching
- S3-compatible storage for files and attachments
- Account at Visual Crossing for weather API integration
Components
Database
BAUSW uses SQLite as its primary database. This embedded database system enables simple deployments without requiring an external database.
- Data is stored on the configured persistent volume.
- No additional database installation is required.
File Storage
By default, uploaded files and attachments are stored in the local filesystem.
- To use S3-compatible storage, configure environment variables.
- Recommended services: AWS S3, Azure Blob Storage, or Cloudflare R2.
Front-End
The front-end is a Progressive Web App (PWA), bundled in the Docker image and served under the /app
path.
- Users can install the app on their devices.
- Offline mode is supported.
TLS Termination
TLS (HTTPS) must be handled externally using a reverse proxy like Nginx or a CDN.
Caching
For optimal content delivery, consider adding a caching proxy.
- Use Nginx or a CDN.
- Ensure the proxy respects the
Cache-Control
headers. - Cacheable paths:
/app
- Non-cacheable paths:
/api
(unless allowed byCache-Control
headers).
Weather API
BAUSW integrates with Visual Crossing to retrieve weather data.
- Obtain an API key by signing up on their website.
- The free plan is sufficient for small deployments.
- To disable this feature, omit the
VISUALCROSSING_API_KEY
environment variable.
Deployment with Docker Compose
Below is a minimal docker-compose.yml
file for deploying BAUSW:
Notes:
- This configuration creates a service named
bausw
running on port3000
. - The
bausw_data
persistent volume stores database and file data. - Environment variables are loaded from the
.env
file. - Replace
image
with the version provided upon purchasing a license.
Namespacing
BAUSW isolates data based on the domain name it is served from. Each domain creates its own namespace, ensuring data is stored independently.
For example, with two domains, hq.example.com
and branch.example.com
, namespaces are isolated as follows:
To ensure the correct domain is detected:
- Configure the
Host
header in your reverse proxy settings. - Port numbers are ignored during namespace detection. For example,
example.com
andexample.com:8080
are treated as the same domain.
Configuration
Namespace-specific settings can be managed using YAML configuration files.
Environment Variables
A complete list of configurable environment variables can be found here.