Saltcorn
Free and open source no-code application builder
Install / Use
/learn @saltcorn/SaltcornREADME
Saltcorn
Saltcorn is an extensible open source no-code database application builder. Use it to build web and mobile database applications with flexible views, datatypes, layouts and actions
This repository contains the core codebase, including the code necessary to self-host an instance and to host a multitenant instance.
Acknowledgements
Saltcorn is using PostgreSQL, node.js, node-postgres, express, live-plugin-manager, craft.js, jQuery-Menu-Editor, Blockly, CodeMirror and other awesome free and open source projects.
Trying out Saltcorn
Online
A multitenant instance of Saltcorn is running at saltcorn.com, and you can create a new application under a subdomain at https://saltcorn.com/tenant/create. This service is free, but there are no guarantees about the security or availability of your application or the information you are storing. This service should only be used to explore the capabilities of Saltcorn.
Desktop
To try out Saltcorn on your desktop, make sure you have node.js 20+ and npm installed. Then run these commands on the command line:
npm config set prefix ~/.local
npm install -g @saltcorn/cli
export SQLITE_FILEPATH=~/saltcorn.sqlite
.local/bin/saltcorn reset-schema -f
.local/bin/saltcorn serve
Now open http://localhost:3000/ in your browser. When you want to run this again, you need to run the export line and the saltcorn serve line. Or simply run SQLITE_FILEPATH=~/saltcorn.sqlite .local/bin/saltcorn serve.
Server
To install Saltcorn on a fresh virtual machine, simply install node.js and run npx saltcorn-install -y; see Quick install server on Linux. To try out Saltcorn with docker-compose see Quickstart with Docker.
Hosting options
For self-hosting, a 2 GB virtual private server is sufficient to run Saltcorn unless you expect high traffic volumes. Installation instructions are given below. Saltcorn can also run on a 1GB virtual machine, but there can be issues with upgrading.
DigitalOcean and Linode have one-click install options for Saltcorn
If hosting on DigitalOcean, which offers a 2GB virtual machine for $12 per month, please consider using our referral code which will give you $100 credit over 60 days.
Quickstart with Docker
You can run a local instance for quick testing by running the following command:
cd ./deploy/examples/test && docker-compose up -d
and then go to http://localhost:3000 in your web browser.
NOTE: The dependencies to build mobile apps are quite large, they are not installed in the standard docker image (saltcorn/saltcorn). To use an image that includes the mobile dependencies as well, either use 'saltcorn/saltcorn-with-mobile' directly or replace 'saltcorn/saltcorn' with 'saltcorn/saltcorn-with-mobile' in the docker-compose file.
Quick install server on Linux
This has been tested on Debian 11 and 12, Ubuntu 18.04, 20.04, 22.04, 24.04, OpenSuSE, AlmaLinux, and Fedora. All you need is to run these three lines on the command line shell, as root or as a user with sudo access:
wget -qO - https://deb.nodesource.com/setup_24.x | sudo bash -
sudo apt-get install -qqy nodejs
npx saltcorn-install -y
The first two lines will install Node.js 24 (you can also use 20, or 22). The last line will call the Saltcorn install script accepting all the defaults, which installs PostgreSQL and sets up Saltcorn as a service listening on port 80.
If you want a different port, a different database backend, or to not install as a service, you
can omit the final -y to get an interactive installation:
wget -qO - https://deb.nodesource.com/setup_24.x | sudo bash -
sudo apt-get install -qqy nodejs
npx saltcorn-install
Install from NPM packages
Instructions have been tested on Ubuntu 20.04 on a 1GB VM.
TL;DR: npm install -g @saltcorn/cli && saltcorn setup
Installing node and npm
For a recent version (v24) of Node.js:
wget -qO - https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs libpq-dev build-essential python-is-python3
You can also use any Node version between 20-24.
Install Saltcorn
npm install -g @saltcorn/cli
If this fails, you may need to tell npm to disregard file permissions during compilation:
npm install -g @saltcorn/cli --unsafe
Sometimes, the above commands fail to install the library sd-notify (which is useful for
integrating with systemd) even though it is installable. You can rectify that by installing
it subsequently:
npm install -g sd-notify
Setup (automated)
If you are root, create a user with sudo and switch to that user:
adduser saltcorn
adduser saltcorn sudo
su saltcorn
cd
mkdir -p ~/.config/
then run
saltcorn setup and follow the instructions given.
Setup (manual)
NOTE: this is somewhat out of date; see instead https://wiki.saltcorn.com/view/ShowPage?title=Install%20on%20Ubuntu, in particular the last section.
Skip this section if you ran saltcorn setup or npx saltcorn-install
-
Install PostgreSQL:
sudo apt install postgresql postgresql-client -
Either,
-
Create a JSON file
.saltcornin your XDG config directory (on Ubuntu this is normally $HOME/.config) with these values:host: address of PostgreSQL serverport: port of PostgreSQL serverdatabase: PostgreSQL databaseuser: PostgreSQL user namepassword: PostgreSQL user passwordsslmode: PostgreSQL SSL Modesslcert: PostgreSQL SSL Certificatesslkey: PostgreSQL SSL Keysslrootcert: PostgreSQL SSL Root Certificatesession_secret: Saltcorn session secretmulti_tenant: run as multi-tenant (true/false)multi_node: update other Saltcorn nodes when data changes with Postgres LISTEN/NOTIFY (true/false)
For example:
{ "host":"localhost", "port":5432, "database":"saltcorn", "user":"tomn", "password":"dgg2342vfB", "session_secret":"hrh64b45b3", "multi_tenant":true, "multi_node":false }Or,
-
Set environment variables.
SALTCORN_SESSION_SECRET,SALTCORN_MULTI_TENANT(defaults tofalse),SALTCORN_MULTI_NODE(defaults tofalse), and eitherDATABASE_URLorPGHOST,PGPORT,PGUSER,PGDATABASE,PGPASSWORD. You can also setPGSSLMODE,PGSSLCERT,PGSSLKEY,PGSSLROOTCERT(see Postgres Documentation)
-
Run
saltcorn serve
Server install
Install Saltcorn as a service
Installing Saltcorn as a service will mean it runs in the background and restarts automatically if the system reboots.
Create a file /lib/systemd/system/saltcorn.service with these contents:
[Unit]
Description=saltcorn
Documentation=https://saltcorn.com
After=network.target
[Service]
Type=notify
WatchdogSec=30
User=saltcorn
WorkingDirectory=/home/saltcorn
ExecStart=/home/saltcorn/.local/bin/saltcorn serve -p 80
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
Environment="NODE_ENV=production"
[Install]
WantedBy=multi-user.target
run:
sudo systemctl daemon-reload
sudo systemctl start saltcorn
sudo systemctl enable saltcorn
This may be in a different location in non-Debian systems, e.g. in /etc/systemd/system instead.
In order to allow the saltcorn user to open port 80, you need to permission node.js to allow
this by running:
sudo setcap 'cap_net_bind_service=+ep' `which node`
SSL certificate
Use Let's Encrypt or Cloudflare to get a free SSL certificate (for https).
Install from source (for Saltcorn developers)
Installing node and npm on Ubuntu
sudo apt install nodejs npm libpq-dev
will give you a usable version. For a more recent version (v24) of Node.js:
wget -qO - https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs libpq-dev
Prepare Node
Assuming you have cloned this repository to $HOME/saltcorn (otherwise adjust PATH)
npm config set prefix ~/.local
echo 'export PATH=$HOME/saltcorn/packages/saltcorn-cli/bin:$HOME/.local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Install packages
run
npm install --legacy-peer-deps
npm run tsc
to install everything. If successful, you should now be able to run saltcorn in your shell.
Packages
- @saltcorn-cli: command-line interface
Related Skills
node-connect
333.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
333.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.0kCommit, push, and open a PR

