So you want to run your own POS system. Great choice. This guide walks you through deploying Olgax POS on a Linux VPS (we'll use Ubuntu 22.04) or on your local machine.
Prerequisites
- A server (VPS) with at least 1 GB RAM (DigitalOcean, Hetzner, Linode, or similar)
- Docker and Docker Compose installed
- A domain name (optional but recommended for production)
- 15 minutes
Step 1: Install Docker
If you don't have Docker yet:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
Verify:
docker --version
docker compose version
Step 2: Clone the Repository
git clone https://github.com/OLGAX-com/olgax-pos.git
cd olgax-pos
Step 3: Configure Environment Variables
cp .env.example .env
nano .env
Key variables to update:
# Database
DATABASE_URL=postgresql://olgax:changeme@postgres:5432/olgaxpos
# Auth secret (generate with: openssl rand -base64 32)
BETTER_AUTH_SECRET=your-secret-here
BETTER_AUTH_URL=https://yourdomain.com
# App URL
NEXT_PUBLIC_APP_URL=https://yourdomain.com
# Admin user (created on first run)
ADMIN_EMAIL=admin@yourshop.com
ADMIN_PASSWORD=changeme
Important: Always change the default passwords before going live.
Step 4: Start the Stack
docker compose up -d
This starts:
olgax-pos: the Next.js app on port 3000postgres: PostgreSQL databasenginx: reverse proxy (handles SSL if you configure it)
Check that everything is running:
docker compose ps
docker compose logs -f olgax-pos
Step 5: Set Up SSL with Nginx (Production)
For a real deployment, you'll want HTTPS. The easiest way is with Caddy:
Create a Caddyfile in the project root:
yourdomain.com {
reverse_proxy localhost:3000
}
And run Caddy:
caddy run
Caddy automatically handles SSL certificate issuance and renewal via Let's Encrypt.
Step 6: Configure Your Thermal Printer
Olgax POS supports ESC/POS thermal printers connected via:
- USB: plug into the server, appear as
/dev/usb/lp0 - Network: connect printer to your LAN, note its IP address
In the Olgax POS admin panel, go to Settings → Printers and add your printer by its IP or USB path.
Popular supported models: Epson TM-T20, Epson TM-T88, Star TSP100, Sewoo, Bixolon.
Step 7: First Login
Open your browser at https://yourdomain.com (or http://localhost:3000 for local).
Log in with the admin credentials you set in .env. You'll be prompted to:
- Set up your business profile (name, currency, timezone)
- Add your first products / categories
- Configure tax rates
- Add staff accounts
You're live. 🎉
Updating to a New Version
git pull origin main
docker compose down
docker compose build
docker compose up -d
Database migrations run automatically on startup.
Troubleshooting
App won't start:
docker compose logs olgax-pos
Database connection errors:
Make sure DATABASE_URL in .env matches the postgres service name in docker-compose.yml.
Printer not detected:
Check USB permissions: sudo chmod 666 /dev/usb/lp0
Need Help?
- Open an issue on GitHub
- GitHub Discussions for questions
- Book a setup call and we'll handle the entire deployment for you