{"slug": "dokploy-setup-guide", "title": "Dokploy Setup Guide", "summary": "Dokploy is a free, self-hosted PaaS that bundles Docker Swarm, Traefik, PostgreSQL, and Redis into a single web dashboard, allowing users to deploy apps, manage databases, and handle domains without manual Docker configuration. The setup guide walks through provisioning a VPS with at least 2 GB RAM and 2 vCPU, connecting via SSH, updating the OS, installing Docker, and configuring the firewall to open ports 22, 80, 443, and 3000.", "body_md": "What is Dokploy?\n\nDokploy is a free, self-hosted PaaS — your own Vercel/Heroku that runs on your VPS. It bundles Docker Swarm, Traefik (for SSL + routing), PostgreSQL, and Redis into one web dashboard. You deploy apps, manage databases, and handle domains all from a single UI — no manual Docker config needed.\n\n| Resource | Minimum |\n|---|---|\n| RAM | 2 GB (4 GB recommended) |\n| CPU | 2 vCPU |\n| Disk | 30 GB (50 GB recommended) |\n\n| Port | Purpose |\n|---|---|\n`80` |\nHTTP traffic (Traefik) |\n`443` |\nHTTPS traffic (Traefik) |\n`3000` |\nDokploy web UI |\n\n✅ 1. **Get Your Credentials**\n\nYou'll need these three things from your hosting provider:\n\n`568.82.48.166`\n\n`root`\n\n`Subham@Xam_08`\n\n✅ 2. **Connect via Terminal**\n\n```\nssh root@568.82.48.166\n```\n\n✅ 3. **Verify the Connection**\n\nYou'll see a host authenticity prompt:\n\n```\nThe authenticity of host '568.82.48.166' can't be established.\nAre you sure you want to continue connecting (yes/no/[fingerprint])?\n```\n\nType `yes`\n\nand press Enter.\n\n✅ 4. **Enter Your Password**\n\n```\nroot@568.82.48.166's password:\n```\n\nPaste your password and press Enter. The terminal won't show characters while typing — that's normal.\n\n✅ 5. **Success!**\n\nYou'll see the Ubuntu welcome screen and land in the shell:\n\n```\nroot@your-hostname:~#\n```\n\n✅ 1. **Clear the Terminal**\n\n```\nclear\n```\n\n✅ 2. **Verify Your OS**\n\n```\nlsb_release -a\n```\n\nExpected output:\n\n```\nDistributor ID: Ubuntu\nDescription:    Ubuntu 22.04.x LTS\nRelease:        22.04\n```\n\n✅ 3. **Update the Package List**\n\n```\nsudo apt update\n```\n\n✅ 4. **Upgrade Installed Packages**\n\n```\nsudo apt upgrade -y\n```\n\nIf you see configuration prompts during upgrade, press **Tab** to highlight `OK`\n\nand press **Enter**.\n\n✅ 5. **Install Essential Tools**\n\n```\nsudo apt install -y curl wget ca-certificates\n```\n\n✅ 6. **Reboot if Prompted**\n\nIf the upgrade mentions a kernel update:\n\n```\nsudo reboot\n```\n\nThen SSH back in.\n\nOn Ubuntu, Dokploy's installer can auto-install Docker. However, it's best practice to install Docker yourself first so you have full control over the version and configuration.\n\n✅ 1. **Remove Any Old Docker Versions**\n\n```\nsudo apt remove -y docker docker-engine docker.io containerd runc\n```\n\n*(It's fine if these aren't installed — the command will just say \"not installed\".)*\n\n✅ 2. **Add Docker's Official GPG Key and Repository**\n\n```\nsudo install -m 0755 -d /etc/apt/keyrings\n\ncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | \\\n  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg\n\nsudo chmod a+r /etc/apt/keyrings/docker.gpg\n\necho \\\n  \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \\\n  https://download.docker.com/linux/ubuntu \\\n  $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable\" | \\\n  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null\n```\n\n✅ 3. **Install Docker Engine + Compose**\n\n```\nsudo apt update\nsudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n```\n\n✅ 4. **Enable and Start Docker**\n\n```\nsudo systemctl enable --now docker\n```\n\n✅ 5. **Verify Docker Installation**\n\n```\ndocker --version\ndocker compose version\n```\n\nExpected output:\n\n```\nDocker version 29.x.x, build ...\nDocker Compose version v5.x.x\n```\n\n✅ 6. **Test Docker Works**\n\n```\ndocker run hello-world\n```\n\nYou should see `Hello from Docker!`\n\nin the output.\n\n✅ 1. **Check Firewall Status**\n\n```\nsudo ufw status\n```\n\n✅ 2. **Open Required Ports**\n\n```\n# SSH (important — don't lock yourself out)\nsudo ufw allow 22/tcp\n\n# HTTP\nsudo ufw allow 80/tcp\n\n# HTTPS\nsudo ufw allow 443/tcp\n\n# Dokploy Web UI\nsudo ufw allow 3000/tcp\n\n# Enable the firewall\nsudo ufw enable\n```\n\n✅ 3. **Verify Rules**\n\n```\nsudo ufw status numbered\n```\n\nExpected output:\n\n```\nStatus: active\n\n     To                         Action      From\n     --                         ------      ----\n[ 1] 22/tcp                     ALLOW IN    Anywhere\n[ 2] 80/tcp                     ALLOW IN    Anywhere\n[ 3] 443/tcp                    ALLOW IN    Anywhere\n[ 4] 3000/tcp                   ALLOW IN    Anywhere\n```\n\n✅ 1. **Run the Dokploy Installer**\n\n```\ncurl -sSL https://dokploy.com/install.sh | sh\n```\n\nThe installer will automatically:\n\n`dokploy-network`\n\noverlay network`dokploy-postgres`\n\n`dokploy-redis`\n\n`dokploy-traefik`\n\n✅ 2. **Wait for the Installer to Finish**\n\nYou'll see:\n\n```\nCongratulations, Dokploy is installed!\nWait 15 seconds for the server to start\nPlease go to http://568.82.48.166:3000\n```\n\nWait the full **15 seconds** before opening the browser.\n\n✅ 3. **Verify All Platform Services Are Running**\n\n```\ndocker service ls\n```\n\nExpected output — all services should show `1/1`\n\nunder `REPLICAS`\n\n:\n\n```\nNAME               MODE         REPLICAS   IMAGE\ndokploy            replicated   1/1        dokploy/dokploy:latest\ndokploy-postgres   replicated   1/1        postgres:16\ndokploy-redis      replicated   1/1        redis:7\ndokploy-traefik    replicated   1/1        traefik:v3.x\n```\n\nAlso confirm running containers:\n\n```\ndocker ps --format '{{.Names}}\\t{{.Image}}\\t{{.Status}}'\n```\n\n✅ 4. **Confirm the Panel is Responding**\n\n```\ncurl -I http://127.0.0.1:3000/\n```\n\nExpected:\n\n```\nHTTP/1.1 302 Found\nLocation: /register\n```\n\n✅ 1. **Open Dokploy in Your Browser**\n\n```\nhttp://568.82.48.166:3000\n```\n\nYou'll be redirected to the registration page.\n\n✅ 2. **Create Your Admin Account**\n\nFill in:\n\nClick **Create Account**.\n\n✅ 3. **You're In the Dashboard!**\n\nThe main sections you'll use:\n\nPurchase from GoDaddy, Namecheap, Cloudflare, etc.\n\nIn your domain provider's DNS management, add:\n\n| Type | Name | Points To | TTL |\n|---|---|---|---|\n`A` |\n`@` |\n`568.82.48.166` |\n1 hour |\n`A` |\n`www` |\n`568.82.48.166` |\n1 hour |\n\nFor a panel subdomain (e.g., `panel.xyz.com`\n\n):\n\n| Type | Name | Points To | TTL |\n|---|---|---|---|\n`A` |\n`panel` |\n`568.82.48.166` |\n1 hour |\n\n```\nnslookup yourdomain.com\n```\n\nExpected:\n\n```\nName:    yourdomain.com\nAddress: 568.82.48.166\n```\n\nDNS can take up to\n\n24 hoursto propagate globally. Usually 5–30 minutes.\n\n`yourdomain.com`\n\nDokploy's built-in Traefik will automatically issue and renew the SSL certificate.\n\n```\nhttps://yourdomain.com\n```\n\nYou should see the Dokploy login page with a padlock in the browser.\n\nOnce your domain + HTTPS is confirmed working, remove port 3000 exposure:\n\n```\ndocker service update --publish-rm \"published=3000,target=3000,mode=host\" dokploy\n```\n\n⚠️ Only run this AFTER verifying your domain works. Otherwise you'll lose access.\n\nNote:Dokploy already has its own internal PostgreSQL running for its own data. The one you create here is aseparate database for your application.\n\n`my-app`\n\n)| Field | Example |\n|---|---|\n| Service Name | `my-app-db` |\n| Database Name | `myapp` |\n| Database User | `myapp_user` |\n| Database Password | `StrongPass@2025` |\n| PostgreSQL Version | `16` |\n\nFor app containers in the **same project**, use the service name as hostname:\n\n```\nDB_HOST=my-app-db\nDB_PORT=5432\nDB_NAME=myapp\nDB_USER=myapp_user\nDB_PASSWORD=StrongPass@2025\nDATABASE_URL=postgresql://myapp_user:StrongPass@2025@my-app-db:5432/myapp\n```\n\n⚠️ Use\n\n`my-app-db`\n\n(the service name) as the host —NOT`localhost`\n\nor the server IP. Containers in the same project communicate by service name over the internal Docker network.\n\nTo connect from your local machine using pgAdmin or TablePlus:\n\n`5433`\n\n```\n   sudo ufw allow 5433/tcp\nHost:     568.82.48.166\n   Port:     5433\n   Database: myapp\n   User:     myapp_user\n   Password: StrongPass@2025\n```\n\nNote:Dokploy has its own internal Redis for deployment queuing. The one you create here is aseparate Redis for your application(caching, sessions, queues).\n\n| Field | Example |\n|---|---|\n| Service Name | `my-app-cache` |\n| Redis Password | `RedisPass@2025` |\n| Redis Version | `7` |\n\n```\nREDIS_HOST=my-app-cache\nREDIS_PORT=6379\nREDIS_PASSWORD=RedisPass@2025\nREDIS_URL=redis://:RedisPass@2025@my-app-cache:6379\n```\n\nFor multiple use cases using Redis database numbers (0–15):\n\n```\n# Caching (DB 0)\nCACHE_URL=redis://:RedisPass@2025@my-app-cache:6379/0\n\n# Sessions (DB 1)\nSESSION_URL=redis://:RedisPass@2025@my-app-cache:6379/1\n\n# Job Queues (DB 2)\nQUEUE_URL=redis://:RedisPass@2025@my-app-cache:6379/2\n```\n\nTo manage Redis from your local [RedisInsight](https://redis.com/redis-enterprise/redis-insight/):\n\n`6379`\n\n```\n   sudo ufw allow 6379/tcp\n```\n\n`568.82.48.166`\n\n`6379`\n\n`default`\n\n`RedisPass@2025`\n\n`docker-compose.yml`\n\nGo to the **Environment** tab and add your variables:\n\n```\nDATABASE_URL=postgresql://myapp_user:StrongPass@2025@my-app-db:5432/myapp\nREDIS_URL=redis://:RedisPass@2025@my-app-cache:6379\nPORT=3333\nNODE_ENV=production\n```\n\nClick **Save**.\n\n`app.yourdomain.com`\n\n)`3333`\n\n)Make sure\n\n`app.yourdomain.com`\n\nhas an A record pointing to your server IP in your DNS settings.\n\n`https://app.yourdomain.com`\n\n```\n# View all Dokploy platform services\ndocker service ls\n\n# View all running containers\ndocker ps\n\n# Check Dokploy panel logs\ndocker logs $(docker ps -q -f name=dokploy_dokploy)\n\n# Check Traefik logs (for SSL/routing issues)\ndocker logs $(docker ps -q -f name=dokploy_dokploy-traefik)\n\n# Restart the Dokploy panel\ndocker service update --force dokploy_dokploy\n\n# Check system resources\ndocker stats\ndf -h\nfree -h\ncurl -sSL https://dokploy.com/install.sh | sh -s update\n# Check firewall rules\nsudo ufw status\n\n# Open port if missing\nsudo ufw allow 3000/tcp\n\n# Verify Dokploy is running\ndocker service ls\ndocker ps | grep dokploy\n# Check Traefik logs for ACME errors\ndocker logs $(docker ps -q -f name=dokploy_dokploy-traefik) 2>&1 | tail -50\n\n# Ensure ports 80 and 443 are open\nsudo ufw allow 80/tcp\nsudo ufw allow 443/tcp\n\n# Verify DNS resolves correctly\nnslookup yourdomain.com\n```\n\nUse the **service name** (not `localhost`\n\n) as the hostname:\n\n```\n# WRONG\nDATABASE_URL=postgresql://user:pass@localhost:5432/mydb\n\n# CORRECT\nDATABASE_URL=postgresql://user:pass@my-app-db:5432/mydb\n```\n\nVerify all services are on the same network:\n\n```\ndocker network inspect dokploy-network\n# Make sure Docker starts on boot\nsudo systemctl enable docker\nsudo systemctl status docker\n```\n\n=========================================================\n\nWhat is Dokploy?\n\nDokploy is a free, self-hosted PaaS — your own Vercel/Heroku that runs on your VPS. It bundles Docker Swarm, Traefik (for SSL + routing), PostgreSQL, and Redis into one web dashboard. You deploy apps, manage databases, and handle domains all from a single UI — no manual Docker config needed.⚠️\n\nAlmaLinux Critical Warning:Dokploy's default installer falls back to Docker's convenience script whichdoes NOT support AlmaLinuxand fails with`Unsupported distribution 'almalinux'`\n\n. Youmust install Docker manually firstfrom Docker's official CentOS repository before running the Dokploy installer.Step 3 covers this in full.\n\n| Resource | Minimum |\n|---|---|\n| RAM | 2 GB (4 GB recommended) |\n| CPU | 2 vCPU |\n| Disk | 30 GB (50 GB recommended) |\n\n| Port | Purpose |\n|---|---|\n`80` |\nHTTP traffic (Traefik) |\n`443` |\nHTTPS traffic (Traefik) |\n`3000` |\nDokploy web UI |\n\n✅ 1. **Get Your Credentials**\n\nYou'll need these three things from your hosting provider:\n\n`568.82.48.166`\n\n`root`\n\n`Subham@Xam_08`\n\n✅ 2. **Connect via Terminal**\n\n```\nssh root@568.82.48.166\n```\n\n✅ 3. **Verify the Connection**\n\nYou'll see a host authenticity prompt:\n\n```\nThe authenticity of host '568.82.48.166' can't be established.\nAre you sure you want to continue connecting (yes/no/[fingerprint])?\n```\n\nType `yes`\n\nand press Enter.\n\n✅ 4. **Enter Your Password**\n\n```\nroot@568.82.48.166's password:\n```\n\nPaste your password and press Enter. The terminal won't show characters while typing — that's normal.\n\n✅ 5. **Success!**\n\nYou'll land in the AlmaLinux shell:\n\n```\n[root@your-hostname ~]#\n```\n\n✅ 1. **Clear the Terminal**\n\n```\nclear\n```\n\n✅ 2. **Verify Your OS**\n\nConfirm you're running AlmaLinux:\n\n```\ncat /etc/os-release\n```\n\nExpected output:\n\n```\nNAME=\"AlmaLinux\"\nVERSION=\"9.x (Seafoam Ocelot)\"\nID=\"almalinux\"\nID_LIKE=\"rhel centos fedora\"\n...\n```\n\n✅ 3. **Enable EPEL Repository**\n\nEPEL (Extra Packages for Enterprise Linux) is required for many packages on AlmaLinux:\n\n```\nsudo dnf install -y epel-release\n```\n\n✅ 4. **Update the Package List**\n\n```\nsudo dnf check-update\n```\n\n*(Exit code 100 is normal — it just means updates are available.)*\n\n✅ 5. **Upgrade Installed Packages**\n\n```\nsudo dnf upgrade -y\n```\n\n✅ 6. **Install Essential Tools**\n\n```\nsudo dnf install -y curl wget ca-certificates dnf-plugins-core\n```\n\n✅ 7. **Reboot if Prompted**\n\nIf the upgrade includes a kernel update:\n\n```\nsudo reboot\n```\n\nThen SSH back in.\n\n⚠️\n\nThis step is required and unique to AlmaLinux.Dokploy's built-in Docker installer does NOT support AlmaLinux. When it tries, it uses Docker's convenience script which returns:\n\n```\nERROR: Unsupported distribution 'almalinux'\n```\n\nand the entire Dokploy installation fails. The fix is to install Docker yourself first from Docker's official\n\nCentOSrepository — which AlmaLinux is fully binary-compatible with.\n\nDo not skip this step.\n\n✅ 1. **Remove Any Old or Conflicting Docker Packages**\n\n```\nsudo dnf remove -y docker docker-client docker-client-latest docker-common \\\n  docker-latest docker-latest-logrotate docker-logrotate docker-engine\n```\n\n*(It's fine if these aren't installed — the command will just skip them.)*\n\n✅ 2. **Add Docker's Official Repository for CentOS/RHEL**\n\nAlmaLinux is binary-compatible with RHEL/CentOS, so use Docker's CentOS repo:\n\n```\nsudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo\n```\n\n✅ 3. **Install Docker Engine + Compose Plugin**\n\n```\nsudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n```\n\nWhen prompted to accept the GPG key, type `y`\n\nand press Enter.\n\n✅ 4. **Enable and Start Docker**\n\nOn AlmaLinux, services don't auto-start — you must enable them explicitly:\n\n```\nsudo systemctl enable --now docker\n```\n\n✅ 5. **Verify Docker Installation**\n\n```\ndocker --version\ndocker compose version\n```\n\nExpected output:\n\n```\nDocker version 29.x.x, build ...\nDocker Compose version v5.x.x\n```\n\n✅ 6. **Test Docker Works**\n\n```\ndocker run hello-world\n```\n\nYou should see `Hello from Docker!`\n\nin the output.\n\n✅ Docker is now installed. The Dokploy installer will detect it and skip its own Docker installation step — allowing it to run successfully on AlmaLinux.\n\nAlmaLinux uses\n\nfirewalld— not`ufw`\n\nor raw`iptables`\n\n. All firewall management is done with`firewall-cmd`\n\n.\n\n✅ 1. **Check Firewall Status**\n\n```\nsudo firewall-cmd --state\n```\n\n✅ 2. **Open Required Ports**\n\n```\n# SSH (ensure you don't lose access)\nsudo firewall-cmd --permanent --add-port=22/tcp\n\n# HTTP\nsudo firewall-cmd --permanent --add-port=80/tcp\n\n# HTTPS\nsudo firewall-cmd --permanent --add-port=443/tcp\n\n# Dokploy Web UI\nsudo firewall-cmd --permanent --add-port=3000/tcp\n\n# Apply all changes\nsudo firewall-cmd --reload\n```\n\n✅ 3. **Verify Open Ports**\n\n```\nsudo firewall-cmd --list-ports\n```\n\nExpected output:\n\n```\n22/tcp 80/tcp 443/tcp 3000/tcp\n```\n\n✅ 4. **Fix SELinux for Network Proxying (AlmaLinux Specific)**\n\nAlmaLinux enables SELinux by default, which can block containers from making network connections. Allow it:\n\n```\nsudo setsebool -P httpd_can_network_connect 1\n```\n\nWhy firewall-cmd?Unlike Ubuntu's`ufw`\n\n, AlmaLinux uses firewalld. The`--permanent`\n\nflag makes rules survive reboots automatically — no extra package like`netfilter-persistent`\n\nis needed.\n\n✅ 1. **Set Your Server's Public IP as the Advertise Address**\n\nThe Dokploy installer sometimes cannot auto-detect the IP on AlmaLinux. Always set it manually:\n\n```\nexport ADVERTISE_ADDR=\"568.82.48.166\"\n```\n\nReplace `568.82.48.166`\n\nwith your actual VPS IP address.\n\n✅ 2. **Run the Dokploy Installer**\n\n```\ncurl -sSL https://dokploy.com/install.sh | sh\n```\n\nBecause Docker is already installed (Step 3), the installer will skip Docker setup and go straight to deploying Dokploy's services:\n\n`dokploy`\n\n`dokploy-postgres`\n\n`dokploy-redis`\n\n`dokploy-traefik`\n\n✅ 3. **Wait for Services to Start**\n\nYou'll see:\n\n```\nCongratulations, Dokploy is installed!\nWait 15 seconds for the server to start\nPlease go to http://568.82.48.166:3000\n```\n\nWait the full **15 seconds** before opening the browser.\n\n✅ 4. **Verify All Platform Services Are Running**\n\n```\ndocker service ls\n```\n\nExpected output — all services should show `1/1`\n\nunder `REPLICAS`\n\n:\n\n```\nNAME               MODE         REPLICAS   IMAGE\ndokploy            replicated   1/1        dokploy/dokploy:latest\ndokploy-postgres   replicated   1/1        postgres:16\ndokploy-redis      replicated   1/1        redis:7\ndokploy-traefik    replicated   1/1        traefik:v3.x\n```\n\nAlso confirm containers are running:\n\n```\ndocker ps --format '{{.Names}}\\t{{.Image}}\\t{{.Status}}'\n```\n\n✅ 5. **Confirm the Panel is Responding**\n\n```\ncurl -I http://127.0.0.1:3000/\n```\n\nExpected:\n\n```\nHTTP/1.1 302 Found\nLocation: /register\n```\n\n✅ 1. **Open Dokploy in Your Browser**\n\n```\nhttp://568.82.48.166:3000\n```\n\nYou'll be redirected to the registration page.\n\n✅ 2. **Create Your Admin Account**\n\nFill in:\n\nClick **Create Account**.\n\n✅ 3. **You're In the Dashboard!**\n\nThe main sections you'll use:\n\nPurchase from GoDaddy, Namecheap, Cloudflare, etc.\n\nIn your domain provider's DNS management, add:\n\n| Type | Name | Points To | TTL |\n|---|---|---|---|\n`A` |\n`@` |\n`568.82.48.166` |\n1 hour |\n`A` |\n`www` |\n`568.82.48.166` |\n1 hour |\n\nFor a panel subdomain (e.g., `panel.xyz.com`\n\n):\n\n| Type | Name | Points To | TTL |\n|---|---|---|---|\n`A` |\n`panel` |\n`568.82.48.166` |\n1 hour |\n\n```\nnslookup yourdomain.com\n```\n\nExpected:\n\n```\nName:    yourdomain.com\nAddress: 568.82.48.166\n```\n\nDNS can take up to\n\n24 hoursto propagate globally. Usually 5–30 minutes.\n\n`yourdomain.com`\n\nDokploy's built-in Traefik automatically issues and renews the SSL certificate via Let's Encrypt.\n\n```\nhttps://yourdomain.com\n```\n\nYou should see the Dokploy login page with a padlock icon in the browser.\n\nOnce your domain + HTTPS is confirmed working, remove port 3000 exposure:\n\n```\ndocker service update --publish-rm \"published=3000,target=3000,mode=host\" dokploy\n```\n\n⚠️ Only run this AFTER verifying your domain works. Otherwise you'll lose access to the panel.\n\nNote:Dokploy already has itsown internal PostgreSQLrunning for its own data. The database you create here is aseparate, isolated PostgreSQL instance for your application.\n\n`my-app`\n\n)| Field | Example |\n|---|---|\n| Service Name | `my-app-db` |\n| Database Name | `myapp` |\n| Database User | `myapp_user` |\n| Database Password | `StrongPass@2025` |\n| PostgreSQL Version | `16` |\n\nFor app containers in the **same project**, use the service name as the hostname:\n\n```\nDB_HOST=my-app-db\nDB_PORT=5432\nDB_NAME=myapp\nDB_USER=myapp_user\nDB_PASSWORD=StrongPass@2025\nDATABASE_URL=postgresql://myapp_user:StrongPass@2025@my-app-db:5432/myapp\n```\n\n⚠️ Use\n\n`my-app-db`\n\n(the service name you set) as the host —NOT`localhost`\n\nor the server IP. Containers in the same Dokploy project communicate with each other by service name over the internal Docker network.\n\nTo connect from your local machine using pgAdmin or TablePlus:\n\n`5433`\n\n```\n   sudo firewall-cmd --permanent --add-port=5433/tcp\n   sudo firewall-cmd --reload\nHost:     568.82.48.166\n   Port:     5433\n   Database: myapp\n   User:     myapp_user\n   Password: StrongPass@2025\n```\n\nNote:Dokploy has itsown internal Redisfor managing deployment queues. The one you create here is aseparate Redis instance for your application— caching, sessions, job queues, etc.\n\n| Field | Example |\n|---|---|\n| Service Name | `my-app-cache` |\n| Redis Password | `RedisPass@2025` |\n| Redis Version | `7` |\n\n```\nREDIS_HOST=my-app-cache\nREDIS_PORT=6379\nREDIS_PASSWORD=RedisPass@2025\nREDIS_URL=redis://:RedisPass@2025@my-app-cache:6379\n```\n\nFor multiple use cases using Redis database numbers (0–15):\n\n```\n# Caching (DB 0)\nCACHE_URL=redis://:RedisPass@2025@my-app-cache:6379/0\n\n# Sessions (DB 1)\nSESSION_URL=redis://:RedisPass@2025@my-app-cache:6379/1\n\n# Job Queues (DB 2)\nQUEUE_URL=redis://:RedisPass@2025@my-app-cache:6379/2\n```\n\nTo manage Redis from your local [RedisInsight](https://redis.com/redis-enterprise/redis-insight/):\n\n`6379`\n\n```\n   sudo firewall-cmd --permanent --add-port=6379/tcp\n   sudo firewall-cmd --reload\n```\n\n`568.82.48.166`\n\n`6379`\n\n`default`\n\n`RedisPass@2025`\n\n`docker-compose.yml`\n\nGo to the **Environment** tab and add your variables:\n\n```\nDATABASE_URL=postgresql://myapp_user:StrongPass@2025@my-app-db:5432/myapp\nREDIS_URL=redis://:RedisPass@2025@my-app-cache:6379\nPORT=3333\nNODE_ENV=production\n```\n\nClick **Save**.\n\n`app.yourdomain.com`\n\n)`3333`\n\n)Make sure\n\n`app.yourdomain.com`\n\nalso has an A record pointing to your server IP.\n\n`https://app.yourdomain.com`\n\n```\n# View all Dokploy platform services\ndocker service ls\n\n# View all running containers\ndocker ps\n\n# Check Dokploy panel logs\ndocker logs $(docker ps -q -f name=dokploy_dokploy)\n\n# Check Traefik logs (for SSL/routing issues)\ndocker logs $(docker ps -q -f name=dokploy_dokploy-traefik)\n\n# Restart the Dokploy panel\ndocker service update --force dokploy_dokploy\n\n# Check system resources\ndocker stats\ndf -h\nfree -h\ncurl -sSL https://dokploy.com/install.sh | sh -s update\n```\n\nThis means Docker was not pre-installed. Go back to **Step 3** and install Docker manually first:\n\n```\nsudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo\nsudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\nsudo systemctl enable --now docker\n\n# Then re-run Dokploy installer with your IP\nexport ADVERTISE_ADDR=\"568.82.48.166\"\ncurl -sSL https://dokploy.com/install.sh | sh\n```\n\nAlways export `ADVERTISE_ADDR`\n\nbefore the installer on AlmaLinux:\n\n```\nexport ADVERTISE_ADDR=\"YOUR_PUBLIC_IP\"\ncurl -sSL https://dokploy.com/install.sh | sh\n# Check open ports\nsudo firewall-cmd --list-ports\n\n# Add port if missing\nsudo firewall-cmd --permanent --add-port=3000/tcp\nsudo firewall-cmd --reload\n\n# Verify Dokploy is actually running\ndocker service ls\ndocker ps | grep dokploy\n# Check Traefik logs for ACME/Let's Encrypt errors\ndocker logs $(docker ps -q -f name=dokploy_dokploy-traefik) 2>&1 | tail -50\n\n# Ensure HTTP and HTTPS ports are open\nsudo firewall-cmd --permanent --add-service=http\nsudo firewall-cmd --permanent --add-service=https\nsudo firewall-cmd --reload\n\n# Verify domain points to your server\nnslookup yourdomain.com\n```\n\nUse the **service name** (not `localhost`\n\n) as the hostname in your env vars:\n\n```\n# WRONG\nDATABASE_URL=postgresql://user:pass@localhost:5432/mydb\n\n# CORRECT (use your Dokploy service name)\nDATABASE_URL=postgresql://user:pass@my-app-db:5432/mydb\n```\n\nVerify services are on the same Docker network:\n\n```\ndocker network inspect dokploy-network\n# Allow proxy network connections\nsudo setsebool -P httpd_can_network_connect 1\n\n# Check recent SELinux denials\nsudo ausearch -m avc -ts recent\n# Ensure Docker starts on boot (required on AlmaLinux)\nsudo systemctl enable docker\nsudo systemctl status docker\n```\n\n| Task | Command |\n|---|---|\n| View all Dokploy services | `docker service ls` |\n| View running containers | `docker ps` |\n| Check Dokploy panel logs | `docker logs $(docker ps -q -f name=dokploy_dokploy)` |\n| Update Dokploy | `curl -sSL\n|\n\n`sudo firewall-cmd --permanent --add-port=PORT/tcp && sudo firewall-cmd --reload`\n\n`sudo firewall-cmd --list-ports`\n\n`sudo setsebool -P httpd_can_network_connect 1`\n\n`docker service update --force SERVICE_NAME`\n\n| Area | Ubuntu | AlmaLinux |\n|---|---|---|\n| Docker installation | Auto-handled by Dokploy installer |\nMust be done manually first (Step 3) |\n| Docker repo | `download.docker.com/linux/ubuntu` |\n`download.docker.com/linux/centos` |\n| Package manager | `apt` |\n`dnf` |\n| Firewall tool | `ufw` |\n`firewall-cmd` (firewalld) |\n| Firewall persistence | `ufw enable` |\nBuilt-in with `--permanent` flag |\n| SELinux | Not active by default | Active — need `setsebool -P httpd_can_network_connect 1`\n|\n| Service boot enable | Usually automatic | Must run `systemctl enable` manually |\n| EPEL repo | Not needed | Required (`dnf install epel-release` ) |", "url": "https://wpnews.pro/news/dokploy-setup-guide", "canonical_source": "https://dev.to/codexam/dokploy-setup-guide-n8n", "published_at": "2026-06-25 08:21:46+00:00", "updated_at": "2026-06-25 08:43:09.490801+00:00", "lang": "en", "topics": ["developer-tools", "ai-infrastructure"], "entities": ["Dokploy", "Docker", "Traefik", "PostgreSQL", "Redis", "Ubuntu"], "alternates": {"html": "https://wpnews.pro/news/dokploy-setup-guide", "markdown": "https://wpnews.pro/news/dokploy-setup-guide.md", "text": "https://wpnews.pro/news/dokploy-setup-guide.txt", "jsonld": "https://wpnews.pro/news/dokploy-setup-guide.jsonld"}}