Skip to content

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).

bash
curl -fsSL https://get.uddoktapay.com/install.sh | bash

Custom 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):

bash
curl -fsSL https://get.uddoktapay.com/install.sh | APP_PORT=8080 bash

Example: Install utilizing a Remote MySQL/MariaDB Database:

bash
curl -fsSL https://get.uddoktapay.com/install.sh | DB_HOST=db.example.com DB_USERNAME=remote_user DB_PASSWORD=strongpassword bash

Example: Install utilizing a Remote PostgreSQL Database:

bash
curl -fsSL https://get.uddoktapay.com/install.sh | DB_CONNECTION=pgsql DB_HOST=db.example.com DB_USERNAME=remote_user DB_PASSWORD=strongpassword bash

Full 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.1 translating 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
RequirementSpecification
OSLinux (Ubuntu, Debian, CentOS, Fedora, etc.)
RAM1GB minimum
Disk10GB available
Port80 available (configurable)
AccessRoot 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

bash
curl -fsSL https://get.uddoktapay.com/uninstall.sh | bash

Data 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:

bash
curl -fsSL https://get.uddoktapay.com/upgrade.sh | bash

The 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

bash
# 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 bash

Manual Configuration

Need full control? Use Docker Compose directly instead of the automated installer.

1. Create the install directory

bash
mkdir -p /opt/uddoktapay && cd /opt/uddoktapay

2. Download the compose file

bash
curl -fsSL https://get.uddoktapay.com/compose.yml -o compose.yml

3. Generate your APP_KEY

Click the button below to generate a secure application key:

Or generate via terminal:

bash
echo "base64:$(openssl rand -base64 32)"

4. Create your .env file

env
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-db

Important: DB_PASSWORD and MARIADB_PASSWORD must be the same value.

Remote Database

env
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-password

Without COMPOSE_PROFILES=local-db, only the app container starts — no MariaDB container.

5. Start the services

bash
docker compose up -d

6. Verify

bash
# Check services are running
docker compose ps

# Follow logs until "started successfully"
docker compose logs -f

Environment Variables

Application

VariableDefaultDescription
APP_PORT80Host port to expose
APP_URLhttp://localhostFull application URL
APP_NAMEUddoktaPayApplication name
APP_ENVproductionEnvironment mode
APP_DEBUGfalseDebug mode
APP_KEYEncryption key (generate above)

Database

VariableDefaultDescription
DB_CONNECTIONmariadbDatabase driver
DB_HOSTmariadbHostname (mariadb for local, your host for remote)
DB_PORT3306Database port
DB_DATABASEuddoktapayDatabase name
DB_USERNAMEuddoktapayDatabase username
DB_PASSWORDDatabase password

Compose

VariableDefaultDescription
COMPOSE_PROFILESSet to local-db to start the MariaDB container

Troubleshooting

Port Already in Use

bash
# 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 -d

Container Won't Start

bash
# 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 restart

Application Not Accessible

bash
# Verify containers are running
docker compose -f /opt/uddoktapay/compose.yml ps

# Check firewall
sudo ufw allow 80/tcp

# Test local access
curl http://localhost

Database Connection Failed

Local database:

bash
# 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 uddoktapay

Remote database:

bash
# Verify credentials
docker exec uddoktapay-app env | grep DB_

# Ensure your remote DB allows connections from the Docker host IP

Next 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