AI Transformation

Deployment Flow

A complete 9-step guide to deploying your application on Dokploy, organized into 3 phases.

The full deployment process consists of 9 steps across 3 phases. Follow them in order for your first deployment.

PhaseStepsWhat you'll do
Phase 1 — SetupSteps 1–4Get accounts, network access, and sign in
Phase 2 — Project ConfigurationSteps 5–7Create a service, connect GitLab, push code with security
Phase 3 — Deploy & PublishSteps 8–9Deploy your app and set up a public domain

Phase 1 — Setup (Steps 1–4)

Step 1 — Request Accounts

Submit an access request for both systems: host.vnggames.ai and code.vnggames.ai.

See: Access Requirements

Step 2 — Connect to the Network

Ensure you are connected via VNGCorp Wi-Fi, Cable network, or Global VPN before accessing either tool.

Step 3 — Sign In

Log in to host.vnggames.ai and code.vnggames.ai using VNG SSO – OIDC.

Step 4 — Wait for Access Approval

Once your request is approved, you will have full access to both systems.


Phase 2 — Project Configuration (Steps 5–7)

Step 5 — Create a Service in Your Project

On host.vnggames.ai, navigate to your project and create a Service within it.

Step 6 — Connect GitLab to Dokploy

Register a GitLab OAuth Application on code.vnggames.ai and link it to Dokploy. This authorizes Dokploy to access your repositories and connect your source code to the deployment pipeline.

See: Git Integration

Step 7 — Push Code & Enable Security Scanning

Push your code to GitLab, then enable the following security features:

FeatureWhat it does
SASTScans source code for known vulnerabilities on every push
Secret DetectionDetects API keys, tokens, and credentials accidentally committed

When creating the project on GitLab (code.vnggames.aiNew projectCreate blank project), scroll to Project Configuration at the bottom and enable both options before clicking Create project:

GitLab Create blank project — Project Configuration section with SAST and Secret Detection enabled

If the project already exists and scanning was not enabled, follow these steps inside GitLab:

Step 1 — Open Security Configuration

Go to your project → SecureSecurity configuration. In the scanner grid, find Static Application Security Testing (SAST) and Pipeline Secret Detection, then click Configure with a merge request for each:

GitLab Security configuration — SAST and Pipeline Secret Detection with Configure with a merge request buttons

Step 2 — Create the Merge Request

GitLab pre-fills a merge request that adds the scanner configuration to .gitlab-ci.yml. Review the title and description, then click Create merge request:

New merge request form pre-filled by GitLab to configure SAST in .gitlab-ci.yml

Step 3 — Merge the Configuration

Once the MR is open and pipelines pass, click Merge to apply the configuration to your default branch:

Merge request page showing pipeline status and Merge button ready to apply SAST config

Step 4 — Verify .gitlab-ci.yml

After merging, GitLab adds a .gitlab-ci.yml file to your repository root. This file defines the security scan stages that run automatically on every push:

.gitlab-ci.yml file created in repository containing SAST and Secret Detection scan configuration

Repeat Steps 1–3 for each scanner (SAST and Pipeline Secret Detection). Both must be configured to get full coverage.


Phase 3 — Deploy & Publish (Steps 8–9)

Step 8 — Deploy Service

In your Application/Service on Dokploy, click Deploy to trigger the first deployment manually. Wait for the build to complete and confirm the service is running.

To automatically redeploy on every git push, see Setup Auto Deploy.

Step 9 — Add a Domain

In your Application, go to the Domains tab and click Add Domain:

Dokploy Application — Domains tab with Add Domain button

Choose one of the following options based on your needs:

A free subdomain is auto-generated by Dokploy in the format *.traefik.me. No configuration needed — just set the container port.

FieldValue
HostAuto-filled by Dokploy
Container PortPort your app listens on (e.g., 3000)
HTTPSLeave off

traefik.me domain form — Host auto-generated, Container Port 3000, HTTPS disabled

traefik.me is a public HTTP service and does not support SSL/HTTPS. HTTPS and certificate options will have no effect.

nip.io maps any subdomain containing an IP address back to that IP — no DNS setup required. Use this option when you need HTTPS.

FieldValue
Host<app-name>.103.245.249.96.nip.io (e.g., service-sample.103.245.249.96.nip.io)
Container PortPort your app listens on (e.g., 3000)
HTTPSToggle on
Certificate ProviderSelect Let's Encrypt

nip.io domain form — custom host with IP, Container Port 3000, HTTPS enabled, Let's Encrypt selected

On this page