Standalone binary
Use a Linux host or service manager with a writable configuration directory and persistent storage.
Self-hosted deployment guide
Build and run the service as a standalone Go binary or a Docker container, with its SQLite database and application files stored on persistent disk.
Requirements
Build from source with Go 1.24 or newer, or deploy with Docker. SQLite is compiled into the application, so a separate database server is not required.
Use a Linux host or service manager with a writable configuration directory and persistent storage.
Publish port 8218 and mount both /app/config and /app/data from persistent storage.
Deployment
make build
make test
./bin/cfasuite-hr init
# Update config/.env before starting
./bin/cfasuite-hr servedocker build -t cfasuite-hr .
mkdir -p config data
docker run --rm -v "$PWD/config:/app/config" \
-v "$PWD/data:/app/data" \
cfasuite-hr init
docker run --rm -p 8218:8218 \
-v "$PWD/config:/app/config" \
-v "$PWD/data:/app/data" \
cfasuite-hrRun initialization once, update the generated configuration, and keep the configuration and data mounts private. Place a TLS-terminating reverse proxy in front of the service for internet-facing deployments.
Operations
The database and uploaded files live together in the configured data directory.
Never run production with an ephemeral data directory. Losing the directory loses the service data.
Back up the SQLite database and application-owned files together, and test restoration regularly.
Back up persistent data, build the new binary or image, then restart the service. Database migrations run at startup.