Setup Guide
Follow the guide below to get your app running.Install Docker
Complete the following steps:
- Install Docker Engine by following the official guide
- Start the Docker service on your machine
- Verify that Docker is installed correctly and is running by opening up a terminal and running the following command:
Configure your Docker Compose file and environment
Create a directory for your app to run
Open your terminal and create a directory where your app will run. Below is an example command with a recommended directory:Copy our sample Docker Compose file
Make sure you are in the directory you just created and run the following command:- Fetch the sample docker compose file from our public Github repository
- Creates a file in your current directory called
compose.ymlwith the contents of the example file
compose.yml.Configure your environment (optional)
By default, our
That said, if you would like extra security (important if you’re running outside of a local network), you can follow the steps below to set things up.Alternatively, you can generate a key without openssl or any external dependencies by pasting the following bash command in your terminal and running it:Once you have generated a key, save it and move on to the next step.
The Docker instance runs in plain HTTP and you need to tell it that you are redirecting your HTTPS stream to the HTTP one.
To do this, edit theand change it to
compose.example.yml file runs without any configuration.That said, if you would like extra security (important if you’re running outside of a local network), you can follow the steps below to set things up.
If you’re running the app locally and don’t care much about security, you can skip this step.
Create your environment file
In order to configure the app, you will need to create a file called.env, which is where Docker will read environment variables from.To do this, you should get our .env.example as a starting point:Generate the app secret key
The app requires an environment variable calledSECRET_KEY_BASE to run.We will first need to generate this in the terminal. If you have openssl installed on your computer, you can generate it with the following command:Fill in your environment file
Open the file named.env that we created in a prior step using your favorite text editor.Fill in this file with the following variables:Using HTTPS
Assuming you want to access your instance from the internet, you should have secured your URL address with an SSL certificate.The Docker instance runs in plain HTTP and you need to tell it that you are redirecting your HTTPS stream to the HTTP one.
To do this, edit the
compose.yml file and find the line stating:trueRun the app
You are now ready to run the app. Start with the following command to make sure everything is working:This will pull our official Docker image and start the app. You will see logs in your terminal.Open your browser, and navigate to
http://localhost:3000.If everything is working, you will see the Sure login screen.Create your account
The first time you run the app, you will need to register a new account by hitting “create your account” on the login page.
- Enter your email
- Enter a password
Run the app in the background
Most self-hosting users will want the Sure app to run in the background on their computer so they can access it at all times. To do this, hit The
Ctrl+C to stop the running process, and then run the following command:-d flag will run Docker Compose in “detached” mode. To verify it is running, you can run the following command:Enjoy!
Your app is now set up. You can visit it at
http://localhost:3000 in your browser.If you find bugs or have a feature request, be sure to read through our contributing guide here.AI Features, External Assistant, and Pipelock
Sure ships with a separate compose file for AI-related features:compose.example.ai.yml. It adds:
- Pipelock (always on): AI agent security proxy that scans outbound LLM calls and inbound MCP traffic
- Ollama + Open WebUI (optional
--profile ai): local LLM inference
Using the AI compose file
Setting up the external AI assistant
The external assistant delegates chat to a remote AI agent instead of calling LLMs directly. The agent calls back to Sure’s/mcp endpoint for financial data (accounts, transactions, balance sheet).
See AI Features for full configuration details including agent ID, session keys, and email allowlisting.
Pipelock security proxy
Pipelock sits between Sure and external services, scanning AI traffic for:- Secret exfiltration (DLP): catches API keys, tokens, or personal data leaking in prompts
- Prompt injection: detects attempts to override system instructions
- Tool poisoning: validates MCP tool calls against known-safe patterns
compose.example.ai.yml, Pipelock is always running. External AI agents should connect to port 8889 (MCP reverse proxy) instead of directly to Sure’s /mcp on port 3000.
For full Pipelock configuration, see Pipelock Security.
How to Update Your App
The mechanism that updates your self-hosted Sure app is the GHCR (Github Container Registry) Docker image that you see in thecompose.yml file:
ghcr.io/we-promise/sure:latest(latestalpha)ghcr.io/we-promise/sure:stable(latest release)
How to Change Which Updates Your App Receives
If you’d like to pin the app to a specific version or tag, all you need to do is edit thecompose.yml file:
Troubleshooting
ActiveRecord::DatabaseConnectionError
If you are trying to get Sure started for the first time and run into database connection issues, it is likely because Docker has already initialized the Postgres database with a different default role (usually from a previous attempt to start the app). If you run into this issue, you can optionally reset the database. By running the commands below, you will delete your existing Sure database and “reset” it.Slow CSV Import
Importing comma-separated-value file(s) requires thesure-worker container to communicate with Redis. Check your worker logs for any unexpected errors, such as connection timeouts or Redis communication failures.