Skip to content

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 by Cache-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:

services:
bausw:
image: bausw:v3.1.0
env_file: ".env"
ports:
- "3000:3000"
volumes:
- bausw_data:/bausw/server/data
volumes:
bausw_data:

Notes:

  • This configuration creates a service named bausw running on port 3000.
  • 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:

/data
/db
/hq.example.com
hq.example.com.sqlite
pro_abc.sqlite
pro_xyz.sqlite
/branch.example.com
branch.example.com.sqlite
pro_abc.sqlite
/files
/hq.example.com
/branch.example.com

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 and example.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.