This page is superseded by the automated Docker image approach.
For new client VPS deployments, refer to:
https://wiki.veripath.co.uk/infrastructure/SIAAS/on-boarding-new-clients
The steps below document the original manual process. Do not use for new clients — use the Docker image method instead.
docker run -d --name erpnext_postgres \
-p 127.0.0.1:5435:5432 \
-v /var/lib/postgresql/erpnext_data:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD="erpnextclientpw2026" \
--restart unless-stopped \
postgres:15-alpine
docker exec -e PGPASSWORD="erpnextclientpw2026" erpnext_postgres \
psql -h 127.0.0.1 -U postgres -c "CREATE USER erp_app_user WITH PASSWORD 'erpnextclientpw2026';"
docker exec -e PGPASSWORD="erpnextclientpw2026" erpnext_postgres \
psql -h 127.0.0.1 -U postgres -c "CREATE DATABASE erpnext_test_client OWNER erp_app_user;"
docker exec -e PGPASSWORD="erpnextclientpw2026" erpnext_postgres \
psql -h 127.0.0.1 -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE erpnext_test_client TO erp_app_user;"
docker exec -e PGPASSWORD="erpnextclientpw2026" erpnext_postgres \
psql -h 127.0.0.1 -U erp_app_user -d erpnext_test_client -c "SELECT 'Database ready' AS status;"
ssh -R 127.0.0.1:5435:127.0.0.1:5432 -N root@88.208.212.211 -i /root/.ssh/id_ed25519
cat > /etc/systemd/system/erpnext-tunnel.service << 'EOF'
[Unit]
Description=ERPNext SSH Reverse Tunnel
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/ssh -R 127.0.0.1:5435:127.0.0.1:5432 -N root@88.208.212.211
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable erpnext-tunnel
systemctl start erpnext-tunnel
The primary VPS team will:
https://test-client.accounts.gp.veripath.co.uk