How to run a self-hosted POS system
Self-hosting your POS means your data stays on your infrastructure, you pay no monthly fees, and you're never at the mercy of a vendor's server outage. This guide covers the real-world benefits, tradeoffs, and a practical setup path using SaleFlex.
Get Started GitHubWhy self-host your POS?
Cloud POS services offer convenience, but that convenience comes with real costs that compound over time.
Your data, your server
Transaction history, customer records, and inventory data live on hardware you control. No third party can access, sell, or lose it.
No subscription fees
A $100/month SaaS POS costs $12,000 over 10 years. Self-hosted software on your own hardware eliminates that entirely.
Offline by default
Self-hosted POS running locally doesn't depend on the internet. Sales continue even when connectivity fails.
Full customization
You control the software version, configuration, and extensions. No forced updates or feature removals by a vendor.
Security on your terms
You define the network boundary, firewall rules, and access policies — rather than trusting a shared cloud environment.
Open source auditability
With SaleFlex, every line of code is inspectable. Security auditors can verify exactly what runs on your hardware.
Setting up SaleFlex as a self-hosted POS
SaleFlex supports three self-hosted deployment profiles. All run on your own hardware — the difference is how much central coordination you need.
Standalone
PyPOS only. Runs on a single Windows or Linux machine. No server required — everything stays on the POS terminal itself.
Office-Connected
PyPOS + OFFICE on a local network. OFFICE runs on a back-office PC. No internet required — all communication is LAN-local.
Gate-Connected
Full stack with GATE on your own VPS or on-premise server. Gives you multi-store management and REST API access — all self-hosted.
Step-by-step: self-hosted PyPOS setup
Here's the minimal path to get a self-hosted SaleFlex POS running on your own machine.
Install Python 3.13
Download from python.org. Ensure pip is included and python --version returns 3.13 or higher.
Clone and install PyPOS
Configure your database
Edit settings.toml. SQLite is the default (no setup needed). For production, switch to PostgreSQL.
Launch the application
The database initializes on first run. Log in with admin / admin to begin.
Use SaleFlex as one self-hosted reference stack
PyPOS, OFFICE, GATE, and KITCHEN are AGPLv3 open-source components; mPOS is a commercial Android product. Your deployment stays on hardware and infrastructure you control.
Full Setup Guide Architecture Overview