Option 1: Docker Deployment (Recommended)
Best for VPS and dedicated servers. Uses PostgreSQL for maximum performance.
Prerequisites
- Docker Engine 20+ and Docker Compose
- 2 GB RAM minimum
- 1 GB disk space
- Linux VPS (Ubuntu 20.04+, Debian 11+, CentOS 8+)
Steps
# 1. Clone the release repository git clone https://github.com/nullsam/swiftpos-release.git cd swiftpos-release # 2. Download swiftpos-latest.tar.gz from GitHub Releases # https://github.com/nullsam/swiftpos-release/releases # Place it in the swiftpos-release directory # 3. Run the setup script chmod +x setup.sh ./setup.sh # 4. Open in browser # http://your-server-ip:3000
The setup script will check Docker, load the image, start PostgreSQL and SwiftPOS, and display connection instructions.
Manual setup (alternative)
# Load the Docker image manually docker load -i swiftpos-latest.tar.gz docker tag ghcr.io/nullsam/swiftpos:latest swiftpos:latest # Start the system docker compose up -d
Option 2: Standalone with SQLite
For shared hosting, local installations, or environments without Docker.
Prerequisites
- Node.js 18+ (20 recommended)
- 512 MB RAM minimum
Steps
# 1. Download the latest release # Visit: /download for the latest version # 2. Extract and configure cd swiftpos cp .env.example .env # 3. Edit .env for SQLite # Set: DATABASE_URL="file:./swiftpos.db" # 4. Initialize the database npm run db:setup:sqlite # 5. Start the server npm start # App runs on http://localhost:3000
Option 3: Shared Hosting (cPanel)
If your hosting provider supports Node.js applications.
- Upload the SwiftPOS files to your hosting account
- Set up a Node.js application in cPanel (Node.js 18+)
- Set the application root to the SwiftPOS directory
- Set the startup file to
node_modules/.bin/next start - Add environment variables in the Node.js app config
- Run
npm run db:setup:sqlitevia SSH or terminal - Start the application
Environment Variables
Configure these in your .env file or docker-compose.yml.
| Variable | Required | Description |
|---|---|---|
DATABASE_URL | Yes | PostgreSQL or SQLite connection string |
JWT_SECRET | Yes | Secret key for JWT tokens (change for production) |
LICENSE_SECRET | No | HMAC secret for license verification |
LICENSE_API_ENDPOINT | No | License server URL for activation |
PORT | No | Server port (default: 3000) |