Introduction
Install UddoktaPay with a single command. The automated installer is production-ready and handles everything for you.
Install
Run this command on your Linux server:
Standard Installation
The quickest way to install is to let the script automatically use default settings (Port 80 and a managed local MariaDB instance).
curl -fsSL https://get.uddoktapay.com/install.sh | bashCustom Installation (Advanced)
If you want to use a Custom Port or connect to a Remote Database, you can inject environment variables directly into the installation command!
Example: Install on a custom port (e.g. 8080):
curl -fsSL https://get.uddoktapay.com/install.sh | APP_PORT=8080 bashExample: Install utilizing a Remote MySQL/MariaDB Database:
curl -fsSL https://get.uddoktapay.com/install.sh | DB_HOST=db.example.com DB_USERNAME=remote_user DB_PASSWORD=strongpassword bashExample: Install utilizing a Remote PostgreSQL Database:
curl -fsSL https://get.uddoktapay.com/install.sh | DB_CONNECTION=pgsql DB_HOST=db.example.com DB_USERNAME=remote_user DB_PASSWORD=strongpassword bashFull list of injectable variables:
APP_PORT— the port to expose (default:80)APP_URL— your application URL (default:http://localhost)DB_CONNECTION— database connection driver (default:mysql. options:mysql,mariadb,pgsql)DB_HOST— database host (default:127.0.0.1translating to local mariadb)DB_PORT— database port (default:3306)DB_DATABASE— database schema title (default:uddoktapay)DB_USERNAME— database username (default:uddoktapay_user)DB_PASSWORD— database password (auto-generated by default)
System Requirements
| Requirement | Specification |
|---|---|
| OS | Linux (Ubuntu, Debian, CentOS, Fedora, etc.) |
| RAM | 1GB minimum |
| Disk | 10GB available |
| Port | 80 available (configurable) |
| Access | Root or sudo |
What gets installed?
- Docker (if not already installed)
- UddoktaPay application container
- MariaDB database container (if local DB chosen)
- All required dependencies
Access Your Fresh Installation
Immediately change the default credentials after your first login.
- Admin URL:
https://YOUR_DOMAIN/admin - Default Email:
admin@admin.com - Default Password:
12345678
Uninstall
curl -fsSL https://get.uddoktapay.com/uninstall.sh | bashData Backup
The uninstall script will prompt before deleting your data. Make sure you have backups if needed.
Upgrade
To securely update your UddoktaPay container to the latest version, or to seamlessly migrate an older legacy installation into the new Compose architecture, run:
curl -fsSL https://get.uddoktapay.com/upgrade.sh | bashThe script will automatically detect your setup, preserve your data, pull the latest official images, and restart the containers with zero data loss.
Built-In Updater vs Image Upgrades
Running the Docker upgrade script exclusively updates your underlying server infrastructure (PHP, Nginx, OS packages). To update the actual UddoktaPay software code, you should continue using the Built-in App Updater from inside your admin panel!
Common Commands
# View logs
docker compose -f /opt/uddoktapay/compose.yml logs -f
# Restart all services
docker compose -f /opt/uddoktapay/compose.yml restart
# Stop all services
docker compose -f /opt/uddoktapay/compose.yml down
# Start all services
docker compose -f /opt/uddoktapay/compose.yml up -d
# Access app shell
docker exec -it uddoktapay-app bashManual Configuration
Need full control? Use Docker Compose directly instead of the automated installer.
1. Create the install directory
mkdir -p /opt/uddoktapay && cd /opt/uddoktapay2. Download the compose file
curl -fsSL https://get.uddoktapay.com/compose.yml -o compose.yml3. Generate your APP_KEY
Click the button below to generate a secure application key:
Or generate via terminal:
echo "base64:$(openssl rand -base64 32)"4. Create your .env file
Local Database (recommended)
APP_PORT=80
APP_NAME=UddoktaPay
APP_ENV=production
APP_DEBUG=false
APP_URL=https://pay.yourdomain.com
APP_KEY=your-generated-key-here
# Database
DB_CONNECTION=mariadb
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=uddoktapay
DB_USERNAME=uddoktapay
DB_PASSWORD=your-secure-password
# MariaDB container
MARIADB_DATABASE=uddoktapay
MARIADB_USER=uddoktapay
MARIADB_PASSWORD=your-secure-password
MARIADB_RANDOM_ROOT_PASSWORD=1
# Enable local database
COMPOSE_PROFILES=local-dbImportant:
DB_PASSWORDandMARIADB_PASSWORDmust be the same value.
Remote Database
APP_PORT=80
APP_NAME=UddoktaPay
APP_ENV=production
APP_DEBUG=false
APP_URL=https://pay.yourdomain.com
APP_KEY=
# Remote database
DB_CONNECTION=mariadb
DB_HOST=your-database-host.com
DB_PORT=3306
DB_DATABASE=uddoktapay
DB_USERNAME=uddoktapay_user
DB_PASSWORD=your-db-passwordWithout
COMPOSE_PROFILES=local-db, only the app container starts — no MariaDB container.
5. Start the services
docker compose up -d6. Verify
# Check services are running
docker compose ps
# Follow logs until "started successfully"
docker compose logs -fEnvironment Variables
Application
| Variable | Default | Description |
|---|---|---|
APP_PORT | 80 | Host port to expose |
APP_URL | http://localhost | Full application URL |
APP_NAME | UddoktaPay | Application name |
APP_ENV | production | Environment mode |
APP_DEBUG | false | Debug mode |
APP_KEY | — | Encryption key (generate above) |
Database
| Variable | Default | Description |
|---|---|---|
DB_CONNECTION | mariadb | Database driver |
DB_HOST | mariadb | Hostname (mariadb for local, your host for remote) |
DB_PORT | 3306 | Database port |
DB_DATABASE | uddoktapay | Database name |
DB_USERNAME | uddoktapay | Database username |
DB_PASSWORD | — | Database password |
Compose
| Variable | Default | Description |
|---|---|---|
COMPOSE_PROFILES | — | Set to local-db to start the MariaDB container |
Troubleshooting
Port Already in Use
# Check what's using your port
sudo lsof -i :80
# Stop the conflicting service
sudo systemctl stop apache2 # or nginx
# Or change APP_PORT in your .env file and restart
docker compose -f /opt/uddoktapay/compose.yml up -dContainer Won't Start
# Check logs for errors
docker compose -f /opt/uddoktapay/compose.yml logs
# Fix common permission issues
docker exec uddoktapay-app chmod -R 775 /var/www/html/storage
docker compose -f /opt/uddoktapay/compose.yml restartApplication Not Accessible
# Verify containers are running
docker compose -f /opt/uddoktapay/compose.yml ps
# Check firewall
sudo ufw allow 80/tcp
# Test local access
curl http://localhostDatabase Connection Failed
Local database:
# Check MariaDB container health
docker inspect uddoktapay-db --format='{{.State.Health.Status}}'
# Restart services
docker compose -f /opt/uddoktapay/compose.yml restart
# Verify volumes exist
docker volume ls | grep uddoktapayRemote database:
# Verify credentials
docker exec uddoktapay-app env | grep DB_
# Ensure your remote DB allows connections from the Docker host IPNext Steps
Your Docker installation is complete! Continue with the essential configuration steps:
Post-Installation Configuration →
- Validate license (required immediately)
- Configure cron job (required immediately)
- Set up brand settings
- Configure email delivery
