{"id":43776,"date":"2026-09-30T11:40:52","date_gmt":"2026-09-30T04:40:52","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=43776"},"modified":"2026-09-30T11:40:52","modified_gmt":"2026-09-30T04:40:52","slug":"cai-dat-va-su-dung-dokploy","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-dokploy\/","title":{"rendered":"H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy Tr\u00ean VPS: Chi Ti\u1ebft T\u1eebng B\u01b0\u1edbc T\u1eeb A-Z"},"content":{"rendered":"<p>Vi\u1ec7c <strong>c\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Dokploy<\/strong> tr\u00ean m\u00e1y ch\u1ee7 ri\u00eang gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean v\u00e0 doanh nghi\u1ec7p l\u00e0m ch\u1ee7 ho\u00e0n to\u00e0n h\u1ea1 t\u1ea7ng tri\u1ec3n khai m\u00e0 kh\u00f4ng ph\u1ea3i ch\u1ecbu chi ph\u00ed \u0111\u1eaft \u0111\u1ecf t\u1eeb c\u00e1c n\u1ec1n t\u1ea3ng th\u01b0\u01a1ng m\u1ea1i nh\u01b0 Vercel hay Heroku. Khi tri\u1ec3n khai Dokploy tr\u00ean n\u1ec1n t\u1ea3ng m\u00e1y ch\u1ee7 c\u1ee7a <a href=\"https:\/\/interdata.vn\/\">InterData<\/a>, b\u1ea1n c\u00f3 to\u00e0n quy\u1ec1n qu\u1ea3n tr\u1ecb t\u00e0i nguy\u00ean ph\u1ea7n c\u1ee9ng, d\u1eef li\u1ec7u v\u00e0 ti\u1ebfn tr\u00ecnh CI\/CD v\u1edbi hi\u1ec7u n\u0103ng \u1ed5n \u0111\u1ecbnh. B\u00e0i vi\u1ebft n\u00e0y s\u1ebd h\u01b0\u1edbng d\u1eabn chi ti\u1ebft t\u1eebng b\u01b0\u1edbc thi\u1ebft l\u1eadp Dokploy t\u1eeb d\u00f2ng l\u1ec7nh \u0111\u1ebfn khi v\u1eadn h\u00e0nh th\u1ef1c t\u1ebf.<\/p>\n<div style=\"background-color: #eff6ff; padding: 20px; border: 1.5px solid #BFDBFE; border-radius: 12px; margin-bottom: 40px; box-shadow: 0 8px 20px rgba(37,99,235,0.05);\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; font-size: 18px; margin: 0 0 15px; color: #1e3a8a;\">N\u1ed8I DUNG B\u00c0I VI\u1ebeT<\/p>\n<ul style=\"list-style-type: none; padding-left: 0; margin: 0;\">\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section1\">1. Dokploy l\u00e0 g\u00ec? T\u1ea1i sao n\u00ean thay th\u1ebf Vercel v\u00e0 Heroku?<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section2\">2. So S\u00e1nh Dokploy vs Coolify vs CapRover<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section3\">3. Y\u00eau C\u1ea7u H\u1ec7 Th\u1ed1ng Tr\u01b0\u1edbc Khi C\u00e0i \u0110\u1eb7t Dokploy<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section4\">4. H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy Tr\u00ean VPS Ubuntu T\u1eebng B\u01b0\u1edbc<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section5\">5. C\u00e1ch Tri\u1ec3n Khai \u1ee8ng D\u1ee5ng Khi C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section6\">6. Thi\u1ebft L\u1eadp Auto-Deploy T\u1eeb GitHub V\u1edbi Dokploy<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section7\">7. B\u1ea3o M\u1eadt v\u00e0 T\u1ed1i \u01afu Sau Khi C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy Xong<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section8\">8. X\u1eed L\u00fd L\u1ed7i Th\u01b0\u1eddng G\u1eb7p Khi C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n<style>\n.interdata-plan-carousel,.interdata-plan-carousel *{box-sizing:border-box}\n.interdata-plan-carousel{--blue:#005bea;--blue-dark:#004dcc;--text:#071832;--muted:#516173;--border:#d8e6fb;--bg:#f3f8ff;--shadow:0 5px 14px rgba(0,62,145,.08);background:var(--bg);padding:14px 56px 18px;position:relative;overflow:hidden;border-radius:20px;}\n.interdata-carousel-heading{color:#f00;font-family:Roboto,sans-serif;font-size:18px;line-height:1.35;font-weight:800;text-align:center;margin:0 0 14px}\n.interdata-plan-viewport{overflow:hidden;width:100%}\n.interdata-plan-track{display:flex;align-items:stretch;gap:12px;overflow:visible;padding:0 0 4px;transform:translate3d(0,0,0);transition:transform .45s ease;will-change:transform;touch-action:pan-y}\n.interdata-plan-card{flex:0 0 calc((100% - 24px)\/3);min-width:0;min-height:0!important;height:auto;background:#fff;border:1px solid var(--border);border-radius:8px;padding:15px 12px 13px;display:flex;flex-direction:column;box-shadow:var(--shadow)}\n.interdata-plan-title{color:var(--blue-dark);font-size:16px;line-height:1.22;font-weight:800;text-align:center;margin:0 0 7px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n.interdata-plan-price{color:var(--blue-dark);font-size:24px;line-height:1;font-weight:900;text-align:center;margin-bottom:12px;white-space:nowrap;letter-spacing:0}\n.interdata-plan-price span{font-size:10px;font-weight:800;margin-left:2px}\n.interdata-plan-badge{align-self:center;display:inline-flex;align-items:center;justify-content:center;background:#ff3934;color:#fff;border-radius:5px;padding:7px 8px;font-size:9px;line-height:1;font-weight:800;margin-bottom:15px;white-space:nowrap;max-width:100%}\n.interdata-plan-features{list-style:none!important;padding:0!important;margin:0!important}\n.interdata-plan-features li{display:flex;gap:7px;align-items:flex-start;color:var(--text);font-size:12px;line-height:1.35;font-weight:700;text-align:left;margin:0 0 10px!important;padding:0!important}\n.interdata-plan-icon{width:14px;min-width:14px;height:14px;color:#0069ff;margin-top:2px}\n.interdata-plan-icon svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}\n.interdata-plan-spacer{flex:1;min-height:16px}\n.interdata-plan-button{display:flex;align-items:center;justify-content:center;min-height:42px;width:100%;margin-top:auto!important;margin-bottom:0!important;background:var(--blue);color:#fff!important;border-radius:5px;font-size:13px;font-weight:800;text-decoration:none!important;box-shadow:0 7px 14px rgba(0,91,234,.24);transition:transform .2s ease,background .2s ease}\n.interdata-plan-button:hover{background:var(--blue-dark);color:#fff!important;transform:translateY(-1px)}\n.interdata-carousel-arrow{position:absolute;top:50%;z-index:5;width:44px;height:54px;border:2px solid #fff!important;border-radius:999px;background:var(--blue)!important;color:#fff!important;box-shadow:0 8px 22px rgba(0,62,145,.32);display:flex!important;align-items:center;justify-content:center;cursor:pointer;transform:translateY(-35%);transition:background .2s ease,color .2s ease,opacity .2s ease,transform .2s ease}\n.interdata-carousel-arrow:hover{background:var(--blue-dark)!important;color:#fff!important;transform:translateY(-35%) scale(1.04)}\n.interdata-carousel-arrow:disabled{opacity:.78;cursor:not-allowed;background:#8aa6cf!important;color:#fff!important}\n.interdata-carousel-arrow:disabled:hover{background:#8aa6cf!important;color:#fff!important;transform:translateY(-35%)}\n.interdata-carousel-arrow svg{display:none!important}\n.interdata-carousel-arrow:before{content:none!important;display:none!important}\n.interdata-carousel-mark{display:block!important;color:#fff!important;font-family:Arial,Helvetica,sans-serif!important;font-size:38px!important;font-weight:900!important;line-height:1!important;text-align:center!important;pointer-events:none!important;transform:translateY(-2px)}\n.interdata-carousel-prev{left:14px}\n.interdata-carousel-prev .interdata-carousel-mark{margin-left:-2px}\n.interdata-carousel-next{right:14px}\n.interdata-carousel-next .interdata-carousel-mark{margin-right:-2px}\n@media (max-width:800px){.interdata-plan-carousel{padding:12px 44px 16px}.interdata-plan-card{flex-basis:calc((100% - 12px)\/2)}.interdata-carousel-heading{font-size:16px}.interdata-carousel-prev{left:6px}.interdata-carousel-next{right:6px}}\n@media (max-width:480px){.interdata-plan-carousel{padding:12px 38px 16px}.interdata-plan-card{flex-basis:100%}.interdata-plan-price{font-size:23px}.interdata-carousel-arrow{width:34px;height:44px}.interdata-carousel-mark{font-size:32px!important}.interdata-carousel-prev{left:3px}.interdata-carousel-next{right:3px}}\n<\/style>\n\n<div class=\"interdata-plan-carousel\" data-interdata-carousel>\n  <div class=\"interdata-carousel-heading\">Si\u00eau \u01afu \u0110\u00e3i VPS \/ CLOUD SERVER - Ti\u1ebft Ki\u1ec7m \u0110\u1ebfn 70%<\/div>\n\n  <svg width=\"0\" height=\"0\" style=\"position:absolute;visibility:hidden\" aria-hidden=\"true\">\n    <symbol id=\"id-icon-cpu\" viewBox=\"0 0 24 24\"><rect x=\"7\" y=\"7\" width=\"10\" height=\"10\" rx=\"2\"><\/rect><path d=\"M4 9h3M4 15h3M17 9h3M17 15h3M9 4v3M15 4v3M9 17v3M15 17v3\"><\/path><path d=\"M10 10h4v4h-4z\"><\/path><\/symbol>\n    <symbol id=\"id-icon-ram\" viewBox=\"0 0 24 24\"><rect x=\"4\" y=\"8\" width=\"16\" height=\"8\" rx=\"2\"><\/rect><path d=\"M7 16v2M11 16v2M15 16v2M19 16v2M7 11h1M11 11h1M15 11h1\"><\/path><\/symbol>\n    <symbol id=\"id-icon-storage\" viewBox=\"0 0 24 24\"><rect x=\"6\" y=\"3\" width=\"12\" height=\"18\" rx=\"2\"><\/rect><path d=\"M9 7h6\"><\/path><circle cx=\"12\" cy=\"16\" r=\"1.5\"><\/circle><\/symbol>\n    <symbol id=\"id-icon-network\" viewBox=\"0 0 24 24\"><path d=\"M5 12.5a10 10 0 0 1 14 0\"><\/path><path d=\"M8.5 16a5 5 0 0 1 7 0\"><\/path><path d=\"M12 19h.01\"><\/path><\/symbol>\n    <symbol id=\"id-icon-gift\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"8\" width=\"18\" height=\"13\" rx=\"2\"><\/rect><path d=\"M12 8v13M3 12h18\"><\/path><path d=\"M7.5 8C6.1 8 5 6.9 5 5.5S6.1 3 7.5 3C10 3 12 8 12 8\"><\/path><path d=\"M16.5 8C17.9 8 19 6.9 19 5.5S17.9 3 16.5 3C14 3 12 8 12 8\"><\/path><\/symbol>\n  <\/svg>\n\n  <button class=\"interdata-carousel-arrow interdata-carousel-prev\" type=\"button\" aria-label=\"Xem 3 g\u00f3i tr\u01b0\u1edbc\" onclick=\"var r=this.closest('[data-interdata-carousel]');if(!r)return false;var t=r.querySelector('.interdata-plan-track'),c=t?t.querySelectorAll('.interdata-plan-card'):[];if(!t||!c.length)return false;var v=window.matchMedia('(max-width:480px)').matches?1:(window.matchMedia('(max-width:800px)').matches?2:3),m=Math.max(0,c.length-Math.min(v,c.length||1)),s=[],i=0;while(i&lt;m){s.push(i);i+=v}if(!s.length||s[s.length-1]!==m)s.push(m);var p=parseInt(r.getAttribute('data-inline-page')||'0',10);p=(p-1+s.length)%s.length;r.setAttribute('data-inline-page',p);var g=parseFloat(window.getComputedStyle(t).gap)||12,w=c[0].getBoundingClientRect().width;t.style.transition='transform .45s ease';t.style.transform='translate3d('+(-(w+g)*s[p])+'px,0,0)';return false;\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M15 18l-6-6 6-6\"><\/path><\/svg>\n    <span class=\"interdata-carousel-mark\" aria-hidden=\"true\">&#8249;<\/span>\n  <\/button>\n\n  <div class=\"interdata-plan-viewport\">\n    <div class=\"interdata-plan-track\">\n      <!-- 7 card d\u1ef1 ph\u00f2ng: JavaScript s\u1ebd \u0111\u1ed3ng b\u1ed9 l\u1ea1i t\u1eeb API portal khi trang t\u1ea3i. -->\n      <article class=\"interdata-plan-card\" data-plan-pid=\"490\">\n        <h3 class=\"interdata-plan-title\">Premium Base<\/h3>\n        <div class=\"interdata-plan-price\">299.000 \u0111<span>\/3 th\u00e1ng<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore Intel Xeon Scalable<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>2 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-value-plans-2026\/best-value-plans-premium-base\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"529\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 1<\/h3>\n        <div class=\"interdata-plan-price\">998.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>2 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-1\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"530\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 2<\/h3>\n        <div class=\"interdata-plan-price\">2.666.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>5 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>70 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-2\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"531\">\n        <h3 class=\"interdata-plan-title\">INTER PLATINUM 3<\/h3>\n        <div class=\"interdata-plan-price\">5.888.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>9 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>16 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>140 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/inter-platinum-series-2026\/inter-platinum-3\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"521\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 1<\/h3>\n        <div class=\"interdata-plan-price\">988.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>3 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>3 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>30 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-1\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"522\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 2<\/h3>\n        <div class=\"interdata-plan-price\">2.988.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>4 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>8 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>80 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>300 Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-2\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n\n      <article class=\"interdata-plan-card\" data-plan-pid=\"523\">\n        <h3 class=\"interdata-plan-title\">BD-Cloud 3<\/h3>\n        <div class=\"interdata-plan-price\">5.999.000 \u0111<span>\/n\u0103m<\/span><\/div>\n        <div class=\"interdata-plan-badge\">GIA H\u1ea0N KH\u00d4NG \u0110\u1ed4I GI\u00c1<\/div>\n        <ul class=\"interdata-plan-features\">\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-cpu\"><\/use><\/svg><\/span>8 vCore<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-ram\"><\/use><\/svg><\/span>16 GB RAM<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-storage\"><\/use><\/svg><\/span>140 GB SSD NVMe<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>1 IPv4 Private<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>400 Mbps Network Port<\/li>\n          <li><span class=\"interdata-plan-icon\"><svg><use href=\"#id-icon-network\"><\/use><\/svg><\/span>Unlimited Bandwidth<\/li>\n        <\/ul>\n\n        <a class=\"interdata-plan-button\" href=\"https:\/\/support.interdata.vn\/index.php?rp=\/store\/best-plan-real-cloud\/bd-cloud-3\" target=\"_blank\" rel=\"noopener\">\u0110\u0103ng k\u00fd ngay<\/a>\n      <\/article>\n    <\/div>\n  <\/div>\n\n  <button class=\"interdata-carousel-arrow interdata-carousel-next\" type=\"button\" aria-label=\"Xem 3 g\u00f3i ti\u1ebfp theo\" onclick=\"var r=this.closest('[data-interdata-carousel]');if(!r)return false;var t=r.querySelector('.interdata-plan-track'),c=t?t.querySelectorAll('.interdata-plan-card'):[];if(!t||!c.length)return false;var v=window.matchMedia('(max-width:480px)').matches?1:(window.matchMedia('(max-width:800px)').matches?2:3),m=Math.max(0,c.length-Math.min(v,c.length||1)),s=[],i=0;while(i&lt;m){s.push(i);i+=v}if(!s.length||s[s.length-1]!==m)s.push(m);var p=parseInt(r.getAttribute('data-inline-page')||'0',10);p=(p+1)%s.length;r.setAttribute('data-inline-page',p);var g=parseFloat(window.getComputedStyle(t).gap)||12,w=c[0].getBoundingClientRect().width;t.style.transition='transform .45s ease';t.style.transform='translate3d('+(-(w+g)*s[p])+'px,0,0)';return false;\">\n    <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M9 18l6-6-6-6\"><\/path><\/svg>\n    <span class=\"interdata-carousel-mark\" aria-hidden=\"true\">&#8250;<\/span>\n  <\/button>\n<\/div>\n\n<script>\n(function(){\n  var API_GROUPS=[\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=89&module',pids:[490]},\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=100&module',pids:[529,530,531]},\n    {url:'https:\/\/support.interdata.vn\/packages.php?gid=97&module',pids:[521,522,523]}\n  ];\n  var PLAN_CYCLES={\n    490:{key:'quarterly',label:'3 th\u00e1ng'},\n    529:{key:'annually',label:'n\u0103m'},\n    530:{key:'annually',label:'n\u0103m'},\n    531:{key:'annually',label:'n\u0103m'},\n    521:{key:'annually',label:'n\u0103m'},\n    522:{key:'annually',label:'n\u0103m'},\n    523:{key:'annually',label:'n\u0103m'}\n  };\n\n  function fetchPlanData(){\n    if(window.interdataPlanApiPromise)return window.interdataPlanApiPromise;\n\n    window.interdataPlanApiPromise=Promise.all(API_GROUPS.map(function(group){\n      return fetch(group.url,{method:'GET',mode:'cors',cache:'no-store'})\n        .then(function(response){\n          if(!response.ok)throw new Error('API '+response.status);\n          return response.json();\n        })\n        .then(function(data){\n          if(!data||data.success!==true||!Array.isArray(data.products))return [];\n          return data.products.filter(function(product){\n            return group.pids.indexOf(Number(product.pid))!==-1;\n          });\n        })\n        .catch(function(error){\n          console.warn('Kh\u00f4ng th\u1ec3 c\u1eadp nh\u1eadt nh\u00f3m g\u00f3i InterData:',group.url,error);\n          return [];\n        });\n    })).then(function(groups){\n      return groups.reduce(function(all,products){return all.concat(products);},[]);\n    });\n\n    return window.interdataPlanApiPromise;\n  }\n\n  function parseDescription(html){\n    var source=String(html||'')\n      .replace(\/<brs*\/?>\/gi,'n')\n      .replace(\/<\/(p|div|li)>\/gi,'n');\n    var holder=document.createElement('div');\n    holder.innerHTML=source;\n    var strong=holder.querySelector('strong');\n    var badge=strong?strong.textContent.trim():'';\n    var lines=(holder.textContent||'').split(\/r?n\/).map(function(line){\n      return line.trim();\n    }).filter(Boolean);\n    if(badge&&lines[0]===badge)lines.shift();\n    return {badge:badge,features:lines};\n  }\n\n  function iconForFeature(feature){\n    if(\/ram\/i.test(feature))return 'id-icon-ram';\n    if(\/ssd|nvme|storage|disk\/i.test(feature))return 'id-icon-storage';\n    if(\/vcore|vcpu|cpu|xeon|amd\/i.test(feature))return 'id-icon-cpu';\n    if(\/ipv4|network|mbps|gbps|bandwidth\/i.test(feature))return 'id-icon-network';\n    return 'id-icon-gift';\n  }\n\n  function createFeatureItem(feature){\n    var item=document.createElement('li');\n    var icon=document.createElement('span');\n    var svg=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','svg');\n    var use=document.createElementNS('http:\/\/www.w3.org\/2000\/svg','use');\n    icon.className='interdata-plan-icon';\n    use.setAttribute('href','#'+iconForFeature(feature));\n    svg.appendChild(use);\n    icon.appendChild(svg);\n    item.appendChild(icon);\n    item.appendChild(document.createTextNode(feature));\n    return item;\n  }\n\n  function updateCardFromApi(root,product){\n    var pid=Number(product.pid);\n    var cycle=PLAN_CYCLES[pid];\n    var card=root.querySelector('[data-plan-pid=\"'+pid+'\"]');\n    if(!card||!cycle)return;\n\n    var title=card.querySelector('.interdata-plan-title');\n    var priceBox=card.querySelector('.interdata-plan-price');\n    var badgeBox=card.querySelector('.interdata-plan-badge');\n    var featureList=card.querySelector('.interdata-plan-features');\n    var button=card.querySelector('.interdata-plan-button');\n    var description=parseDescription(product.description);\n    var pricing=product.pricing&&product.pricing.VND;\n    var price=pricing?Number(pricing[cycle.key]):-1;\n\n    if(title&&product.name)title.textContent=product.name;\n    if(priceBox&&Number.isFinite(price)&&price>=0){\n      priceBox.textContent=Math.round(price).toLocaleString('vi-VN')+' \u0111';\n      var suffix=document.createElement('span');\n      suffix.textContent='\/'+cycle.label;\n      priceBox.appendChild(suffix);\n    }\n    if(badgeBox&&description.badge)badgeBox.textContent=description.badge;\n    if(featureList&&description.features.length){\n      featureList.textContent='';\n      description.features.forEach(function(feature){\n        featureList.appendChild(createFeatureItem(feature));\n      });\n    }\n    if(button&&product.product_url)button.href=product.product_url;\n  }\n\n  function setupInterDataCarousel(root){\n    var track=root.querySelector('.interdata-plan-track');\n    var prev=root.querySelector('.interdata-carousel-prev');\n    var next=root.querySelector('.interdata-carousel-next');\n    if(!track||!prev||!next||track.dataset.ready==='1')return;\n    track.dataset.ready='1';\n    prev.disabled=false;\n    next.disabled=false;\n    var activePage=0;\n    var touchStartX=null;\n\n    function visibleCards(){\n      if(window.matchMedia&&window.matchMedia('(max-width:480px)').matches)return 1;\n      if(window.matchMedia&&window.matchMedia('(max-width:800px)').matches)return 2;\n      return 3;\n    }\n\n    function pageStarts(){\n      var total=track.querySelectorAll('.interdata-plan-card').length;\n      var visible=Math.min(visibleCards(),total||1);\n      var maxStart=Math.max(0,total-visible);\n      var starts=[];\n      var start=0;\n      while(start<maxStart){\n        starts.push(start);\n        start+=visible;\n      }\n      if(!starts.length||starts[starts.length-1]!==maxStart)starts.push(maxStart);\n      return starts;\n    }\n\n    function renderSlide(animate){\n      var cards=track.querySelectorAll('.interdata-plan-card');\n      var starts=pageStarts();\n      if(!cards.length||!starts.length)return;\n      if(activePage>=starts.length)activePage=starts.length-1;\n      if(activePage<0)activePage=0;\n\n      var cardWidth=cards[0].getBoundingClientRect().width;\n      var trackStyle=window.getComputedStyle?window.getComputedStyle(track):null;\n      var gap=trackStyle?parseFloat(trackStyle.columnGap||trackStyle.gap):12;\n      if(!Number.isFinite(gap))gap=12;\n      if(cardWidth<=0)return;\n\n      track.style.transition=animate?'transform .45s ease':'none';\n      track.style.transform='translate3d('+(-(cardWidth+gap)*starts[activePage])+'px,0,0)';\n      prev.setAttribute('aria-disabled',starts.length>1?'false':'true');\n      next.setAttribute('aria-disabled',starts.length>1?'false':'true');\n    }\n\n    function move(direction){\n      var starts=pageStarts();\n      if(starts.length<=1)return;\n      activePage=parseInt(root.getAttribute('data-inline-page')||activePage,10)||0;\n      activePage=(activePage+direction+starts.length)%starts.length;\n      root.setAttribute('data-inline-page',activePage);\n      renderSlide(true);\n    }\n\n    track.addEventListener('touchstart',function(event){\n      touchStartX=event.touches&&event.touches[0]?event.touches[0].clientX:null;\n    },{passive:true});\n    track.addEventListener('touchend',function(event){\n      if(touchStartX===null)return;\n      var endX=event.changedTouches&&event.changedTouches[0]?event.changedTouches[0].clientX:touchStartX;\n      var distance=endX-touchStartX;\n      touchStartX=null;\n      if(Math.abs(distance)>=40)move(distance<0?1:-1);\n    },{passive:true});\n\n    function resetAfterResize(){\n      activePage=0;\n      root.setAttribute('data-inline-page','0');\n      renderSlide(false);\n    }\n\n    window.addEventListener('resize',resetAfterResize);\n    window.addEventListener('load',resetAfterResize);\n    if('ResizeObserver' in window){\n      var resizeObserver=new ResizeObserver(function(){renderSlide(false);});\n      resizeObserver.observe(root);\n    }\n    window.requestAnimationFrame(function(){renderSlide(false);});\n    window.setTimeout(function(){renderSlide(false);},250);\n    window.setTimeout(function(){renderSlide(false);},1000);\n\n    fetchPlanData().then(function(products){\n      products.forEach(function(product){updateCardFromApi(root,product);});\n      renderSlide(false);\n    });\n  }\n\n  function initInterDataCarousels(){\n    document.querySelectorAll('[data-interdata-carousel]').forEach(setupInterDataCarousel);\n  }\n\n  if(document.readyState==='loading'){\n    document.addEventListener('DOMContentLoaded',initInterDataCarousels);\n  }else{\n    initInterDataCarousels();\n  }\n\n  if('MutationObserver' in window){\n    var initQueued=false;\n    new MutationObserver(function(){\n      if(initQueued)return;\n      initQueued=true;\n      window.requestAnimationFrame(function(){\n        initQueued=false;\n        initInterDataCarousels();\n      });\n    }).observe(document.documentElement,{childList:true,subtree:true});\n  }\n})();\n<\/script>\n\n\t<div id=\"gap-849342888\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-849342888 {\n  padding-top: 15px;\n}\n<\/style>\n\t<\/div>\n\t\n<h2 id=\"section1\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">Dokploy l\u00e0 g\u00ec? T\u1ea1i sao kh\u00f4ng d\u00f9ng Vercel hay Heroku?<\/h2>\n<p>Dokploy l\u00e0 gi\u1ea3i ph\u00e1p self-hosted PaaS m\u00e3 ngu\u1ed3n m\u1edf, ho\u1ea1t \u0111\u1ed9ng tr\u1ef1c ti\u1ebfp tr\u00ean n\u1ec1n t\u1ea3ng Docker Swarm k\u1ebft h\u1ee3p Traefik \u0111\u1ec3 t\u1ef1 \u0111\u1ed9ng h\u00f3a vi\u1ec7c build, deploy v\u00e0 \u0111i\u1ec1u h\u01b0\u1edbng l\u01b0u l\u01b0\u1ee3ng m\u1ea1ng cho \u1ee9ng d\u1ee5ng web.<\/p>\n<p>Dokploy cho ph\u00e9p l\u1eadp tr\u00ecnh vi\u00ean bi\u1ebfn m\u1ed9t m\u00e1y ch\u1ee7 Linux th\u00f4ng th\u01b0\u1eddng th\u00e0nh m\u00f4i tr\u01b0\u1eddng PaaS ho\u00e0n ch\u1ec9nh c\u00f3 giao di\u1ec7n qu\u1ea3n l\u00fd \u0111\u1ed3 h\u1ecda tr\u1ef1c quan.<\/p>\n<p>Khi s\u1eed d\u1ee5ng c\u00e1c n\u1ec1n t\u1ea3ng th\u01b0\u01a1ng m\u1ea1i nh\u01b0 Vercel hay Heroku, chi ph\u00ed th\u01b0\u1eddng t\u0103ng phi m\u00e3 theo l\u01b0\u1ee3ng b\u0103ng th\u00f4ng ti\u00eau th\u1ee5, s\u1ed1 l\u01b0\u1ee3ng th\u00e0nh vi\u00ean nh\u00f3m v\u00e0 th\u1eddi gian ch\u1ea1y serverless functions.<\/p>\n<p>B\u1ea1n c\u0169ng b\u1ecb gi\u1edbi h\u1ea1n b\u1edfi th\u1eddi gian timeout c\u1ee7a request, thi\u1ebfu quy\u1ec1n can thi\u1ec7p nh\u00e2n h\u1ec7 th\u1ed1ng v\u00e0 kh\u00f4ng th\u1ec3 t\u00f9y bi\u1ebfn c\u00e1c c\u1ea5u h\u00ecnh m\u1ea1ng t\u1ea7ng s\u00e2u.<\/p>\n<p>Dokploy gi\u1ea3i quy\u1ebft tri\u1ec7t \u0111\u1ec3 r\u00e0o c\u1ea3n n\u00e0y b\u1eb1ng c\u00e1ch \u0111\u01b0a to\u00e0n b\u1ed9 quy\u1ec1n ki\u1ec3m so\u00e1t m\u00e1y ch\u1ee7 v\u1ec1 tay b\u1ea1n, v\u1edbi chi ph\u00ed c\u1ed1 \u0111\u1ecbnh theo gi\u00e1 thu\u00ea VPS h\u00e0ng th\u00e1ng.<\/p>\n<p>N\u1ec1n t\u1ea3ng n\u00e0y t\u00edch h\u1ee3p s\u1eb5n Traefik \u0111\u1ec3 ti\u1ebfp nh\u1eadn request v\u00e0 c\u1ea5p ph\u00e1t ch\u1ee9ng ch\u1ec9 SSL t\u1ef1 \u0111\u1ed9ng. \u0110\u1ec3 hi\u1ec3u r\u00f5 c\u01a1 ch\u1ebf \u0111\u1ecbnh tuy\u1ebfn b\u00ean d\u01b0\u1edbi, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o b\u00e0i ph\u00e2n t\u00edch <a href=\"https:\/\/interdata.vn\/blog\/reverse-proxy-la-gi\/\">Reverse Proxy l\u00e0 g\u00ec<\/a> c\u1ee7a InterData.<\/p>\n<div style=\"overflow-x: auto; margin: 25px 0;\">\n<table style=\"width: 100%; border-collapse: collapse; text-align: left; font-size: 15px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #ffffff;\">\n<th style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">T\u00ednh n\u0103ng<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">Dokploy<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">Vercel \/ Heroku<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1; font-weight: 600;\">Chi ph\u00ed \u0111\u1ecbnh k\u1ef3<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">C\u1ed1 \u0111\u1ecbnh theo c\u1ea5u h\u00ecnh VPS th\u1ef1c t\u1ebf<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">T\u00ednh theo usage, b\u0103ng th\u00f4ng, seat b\u1ea3n quy\u1ec1n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1; font-weight: 600;\">Quy\u1ec1n qu\u1ea3n tr\u1ecb<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">To\u00e0n quy\u1ec1n root tr\u00ean m\u00e1y ch\u1ee7 Linux<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">B\u1ecb kh\u00f3a trong m\u00f4i tr\u01b0\u1eddng container gi\u1edbi h\u1ea1n<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1; font-weight: 600;\">Build engine<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">Nixpacks, Heroku Buildpacks, Dockerfile, Compose<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">Buildpack \u0111\u1ed9c quy\u1ec1n c\u1ee7a nh\u00e0 cung c\u1ea5p<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1; font-weight: 600;\">C\u01a1 s\u1edf d\u1eef li\u1ec7u<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">Tri\u1ec3n khai tr\u1ef1c ti\u1ebfp PostgreSQL, MySQL, Redis, MongoDB<\/td>\n<td style=\"padding: 12px 15px; border: 1px solid #CBD5E1;\">Ph\u1ea3i mua th\u00eam d\u1ecbch v\u1ee5 Managed Database ri\u00eang<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Dokploy ph\u00f9 h\u1ee3p cho c\u00e1 nh\u00e2n, freelancer, l\u1eadp tr\u00ecnh vi\u00ean full-stack v\u00e0 c\u00e1c startup mu\u1ed1n x\u00e2y d\u1ef1ng h\u1ec7 th\u1ed1ng tri\u1ec3n khai t\u1ef1 \u0111\u1ed9ng \u1ed5n \u0111\u1ecbnh nh\u01b0ng c\u1ea7n ti\u1ebft ki\u1ec7m t\u1ed1i \u0111a ng\u00e2n s\u00e1ch v\u1eadn h\u00e0nh h\u1ea1 t\u1ea7ng.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43787\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dokploy.png\" alt=\"Dokploy\" width=\"1000\" height=\"470\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dokploy.png 1884w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dokploy-300x141.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dokploy-1024x482.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dokploy-768x361.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dokploy-1536x722.png 1536w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h2 id=\"section2\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">So S\u00e1nh Dokploy vs Coolify vs CapRover: Ch\u1ecdn C\u00e1i N\u00e0o?<\/h2>\n<p>Th\u1ecb tr\u01b0\u1eddng PaaS ngu\u1ed3n m\u1edf hi\u1ec7n c\u00f3 ba c\u00e1i t\u00ean n\u1ed5i b\u1eadt: Dokploy, Coolify v\u00e0 CapRover. M\u1ed7i c\u00f4ng c\u1ee5 ph\u1ee5c v\u1ee5 m\u1ed9t tri\u1ebft l\u00fd thi\u1ebft k\u1ebf v\u00e0 quy m\u00f4 h\u1ea1 t\u1ea7ng ri\u00eang bi\u1ec7t, \u0111\u00f2i h\u1ecfi ng\u01b0\u1eddi d\u00f9ng c\u00e2n nh\u1eafc k\u1ef9 l\u01b0\u1ee1ng c\u1ea5u h\u00ecnh ph\u1ea7n c\u1ee9ng tr\u01b0\u1edbc khi l\u1ef1a ch\u1ecdn.<\/p>\n<div style=\"overflow-x: auto; margin: 25px 0;\">\n<table style=\"width: 100%; border-collapse: collapse; text-align: left; font-size: 14px;\">\n<thead>\n<tr style=\"background-color: #1e3a8a; color: #ffffff;\">\n<th style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Ti\u00eau ch\u00ed<\/th>\n<th style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Dokploy<\/th>\n<th style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Coolify<\/th>\n<th style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">CapRover<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1; font-weight: 600;\">C\u1ed1t l\u00f5i \u0111i\u1ec1u ph\u1ed1i<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Docker Swarm<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Docker Engine chu\u1ea9n<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Docker Swarm<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1; font-weight: 600;\">M\u1ee9c chi\u1ebfm d\u1ee5ng RAM<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">R\u1ea5t nh\u1eb9 (~150MB &#8211; 300MB)<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Trung b\u00ecnh (~800MB &#8211; 1.5GB)<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Nh\u1eb9 (~300MB &#8211; 500MB)<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1; font-weight: 600;\">Giao di\u1ec7n (UI)<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Hi\u1ec7n \u0111\u1ea1i, t\u1ed1i gi\u1ea3n, vi\u1ebft b\u1eb1ng Next.js<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">R\u1ea5t gi\u00e0u t\u00ednh n\u0103ng, ph\u1ee9c t\u1ea1p<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">C\u1ed5 \u0111i\u1ec3n, giao di\u1ec7n c\u0169<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1; font-weight: 600;\">H\u1ed7 tr\u1ee3 Docker Compose<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">C\u00f3, h\u1ed7 tr\u1ee3 tr\u1ef1c ti\u1ebfp tr\u00ean Swarm<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">R\u1ea5t m\u1ea1nh, h\u1ed7 tr\u1ee3 ho\u00e0n ch\u1ec9nh<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">H\u1ed7 tr\u1ee3 th\u00f4ng qua Captain Definition<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1; font-weight: 600;\">\u0110\u1ed9 \u1ed5n \u0111\u1ecbnh cho d\u1ef1 \u00e1n nh\u1ecf<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">R\u1ea5t cao tr\u00ean VPS dung l\u01b0\u1ee3ng RAM th\u1ea5p<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">T\u1ed1t, y\u00eau c\u1ea7u RAM t\u1ed1i thi\u1ec3u t\u1eeb 2GB tr\u1edf l\u00ean<\/td>\n<td style=\"padding: 10px 12px; border: 1px solid #CBD5E1;\">Cao, \u0111\u00e3 ph\u00e1t tri\u1ec3n nhi\u1ec1u n\u0103m<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>N\u1ebfu b\u1ea1n s\u1edf h\u1eefu VPS c\u1ea5u h\u00ecnh v\u1eeba ph\u1ea3i (1GB \u0111\u1ebfn 2GB RAM) v\u00e0 c\u1ea7n s\u1ef1 g\u1ecdn g\u00e0ng, Dokploy l\u00e0 \u1ee9ng vi\u00ean s\u00e1ng gi\u00e1. N\u1ebfu b\u1ea1n c\u1ea7n h\u1ec7 sinh th\u00e1i \u0111\u1ed3 s\u1ed9 v\u1edbi h\u00e0ng tr\u0103m template c\u00f3 s\u1eb5n, h\u00e3y c\u00e2n nh\u1eafc <a href=\"https:\/\/interdata.vn\/blog\/cach-cai-coolify-tren-ubuntu\/\">c\u00e1ch c\u00e0i Coolify tr\u00ean Ubuntu<\/a>.<\/p>\n<p>\u0110\u1ed1i v\u1edbi c\u00e1c d\u1ef1 \u00e1n JavaScript hi\u1ec7n \u0111\u1ea1i c\u1ea7n scale nhi\u1ec1u container, b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 xem th\u00eam h\u01b0\u1edbng d\u1eabn <a href=\"https:\/\/interdata.vn\/blog\/deploy-nextjs-len-vps-bang-coolify\/\">deploy Next.js l\u00ean VPS b\u1eb1ng Coolify<\/a> \u0111\u1ec3 so s\u00e1nh tr\u1ef1c ti\u1ebfp hi\u1ec7u qu\u1ea3 qu\u1ea3n l\u00fd gi\u1eefa hai c\u00f4ng c\u1ee5.<\/p>\n<h2 id=\"section3\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">Y\u00eau C\u1ea7u H\u1ec7 Th\u1ed1ng Tr\u01b0\u1edbc Khi C\u00e0i \u0110\u1eb7t Dokploy<\/h2>\n<p>\u0110\u1ec3 \u0111\u1ea3m b\u1ea3o Dokploy ho\u1ea1t \u0111\u1ed9ng m\u01b0\u1ee3t m\u00e0, m\u00e1y ch\u1ee7 c\u1ea7n \u0111\u00e1p \u1ee9ng c\u00e1c \u0111i\u1ec1u ki\u1ec7n ti\u00eau chu\u1ea9n v\u1ec1 th\u00f4ng s\u1ed1 ph\u1ea7n c\u1ee9ng v\u00e0 m\u00f4i tr\u01b0\u1eddng m\u1ea1ng:<\/p>\n<ul>\n<li><strong>H\u1ec7 \u0111i\u1ec1u h\u00e0nh:<\/strong> Khuy\u1ebfn ngh\u1ecb d\u00f9ng <code>Ubuntu 22.04 LTS<\/code> ho\u1eb7c <code>Ubuntu 24.04 LTS<\/code>. N\u1ec1n t\u1ea3ng c\u0169ng h\u1ed7 tr\u1ee3 Debian 11\/12, CentOS Stream 9 v\u00e0 Fedora.<\/li>\n<li><strong>CPU &amp; RAM:<\/strong> T\u1ed1i thi\u1ec3u 1 vCPU v\u00e0 2GB RAM cho m\u00f4i tr\u01b0\u1eddng staging ho\u1eb7c th\u1eed nghi\u1ec7m. Khuy\u1ebfn ngh\u1ecb t\u1eeb 2 vCPU v\u00e0 4GB RAM tr\u1edf l\u00ean \u0111\u1ed1i v\u1edbi m\u00f4i tr\u01b0\u1eddng production c\u00f3 ch\u1ea1y c\u01a1 s\u1edf d\u1eef li\u1ec7u.<\/li>\n<li><strong>\u1ed4 c\u1ee9ng:<\/strong> T\u1ed1i thi\u1ec3u 30GB dung l\u01b0\u1ee3ng tr\u1ed1ng chu\u1ea9n SSD NVMe \u0111\u1ec3 ch\u1ee9a Docker image layers, database volumes v\u00e0 logs \u1ee9ng d\u1ee5ng.<\/li>\n<li><strong>C\u1ed5ng m\u1ea1ng (Ports):<\/strong> \u0110\u1ea3m b\u1ea3o c\u00e1c c\u1ed5ng <code>80<\/code> (HTTP), <code>443<\/code> (HTTPS) v\u00e0 <code>3000<\/code> (Dokploy Dashboard) kh\u00f4ng b\u1ecb chi\u1ebfm d\u1ee5ng b\u1edfi c\u00e1c ti\u1ebfn tr\u00ecnh web server kh\u00e1c.<\/li>\n<li><strong>Quy\u1ec1n h\u1ea1n:<\/strong> T\u00e0i kho\u1ea3n root ho\u1eb7c t\u00e0i kho\u1ea3n c\u00f3 quy\u1ec1n th\u1ef1c thi l\u1ec7nh <code>sudo<\/code> qua k\u1ebft n\u1ed1i SSH.<\/li>\n<\/ul>\n<p>Dokploy s\u1ebd t\u1ef1 \u0111\u1ed9ng t\u1ea3i v\u00e0 c\u1ea5u h\u00ecnh Docker n\u1ebfu m\u00e1y ch\u1ee7 ch\u01b0a c\u00f3 s\u1eb5n. D\u00f9 v\u1eady, vi\u1ec7c n\u1eafm ch\u1eafc quy tr\u00ecnh chu\u1ea9n h\u00f3a container t\u1eeb b\u00e0i <a href=\"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-docker\/\">h\u01b0\u1edbng d\u1eabn c\u00e0i \u0111\u1eb7t Docker tr\u00ean Ubuntu<\/a> s\u1ebd gi\u00fap b\u1ea1n ch\u1ee7 \u0111\u1ed9ng h\u01a1n khi tinh ch\u1ec9nh h\u1ec7 th\u1ed1ng v\u1ec1 sau.<\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: #fff; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.1;\">Thu\u00ea VPS InterData<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">CPU th\u1ebf h\u1ec7 m\u1edbi, SSD NVMe U.2, h\u1ed7 tr\u1ee3 k\u1ef9 thu\u1eadt 24\/7<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">C\u1ea7n VPS Linux \u0111\u1ec3 c\u00e0i Dokploy ngay?<\/h3>\n<p style=\"color: #4b5563; font-size: 15px; line-height: 1.6; margin-bottom: 20px;\">D\u1ecbch v\u1ee5 VPS Linux t\u1ea1i InterData cung c\u1ea5p to\u00e0n quy\u1ec1n root, t\u01b0\u01a1ng th\u00edch ho\u00e0n h\u1ea3o v\u1edbi Ubuntu v\u00e0 Debian. H\u1ec7 th\u1ed1ng s\u1eed d\u1ee5ng \u1ed5 c\u1ee9ng NVMe U.2 t\u1ed1c \u0111\u1ed9 cao v\u00e0 \u0111\u01b0\u1eddng truy\u1ec1n m\u1ea1ng b\u0103ng th\u00f4ng l\u1edbn, \u0111\u00e1p \u1ee9ng tr\u1ecdn v\u1eb9n y\u00eau c\u1ea7u build container v\u00e0 \u0111\u1ecbnh tuy\u1ebfn l\u01b0u l\u01b0\u1ee3ng qua c\u00e1c c\u1ed5ng 80, 443 v\u00e0 3000.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: #fff; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 15px rgba(37,99,235,0.3);\" href=\"https:\/\/interdata.vn\/thue-vps\/\" target=\"_blank\" rel=\"noopener\">Xem B\u1ea3ng Gi\u00e1 Thu\u00ea VPS \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<h2 id=\"section4\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy Tr\u00ean VPS Ubuntu T\u1eebng B\u01b0\u1edbc<\/h2>\n<p>Quy tr\u00ecnh c\u00e0i \u0111\u1eb7t Dokploy di\u1ec5n ra t\u1ef1 \u0111\u1ed9ng th\u00f4ng qua script ch\u00ednh th\u1ee9c t\u1eeb nh\u00e0 ph\u00e1t tri\u1ec3n. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 c\u00e1c b\u01b0\u1edbc thao t\u00e1c chu\u1ea9n x\u00e1c t\u1eeb terminal c\u1ee7a b\u1ea1n.<\/p>\n<p><strong>1\/ \u0110\u0103ng nh\u1eadp v\u00e0o VPS qua SSH<\/strong><\/p>\n<p>M\u1edf terminal m\u00e1y t\u00ednh c\u00e1 nh\u00e2n v\u00e0 k\u1ebft n\u1ed1i v\u00e0o m\u00e1y ch\u1ee7 b\u1eb1ng t\u00e0i kho\u1ea3n c\u00f3 quy\u1ec1n qu\u1ea3n tr\u1ecb cao nh\u1ea5t:<\/p>\n<pre><code class=\"language-bash\">ssh root@your-vps-ip<\/code><\/pre>\n<p><strong>&gt; Xem th\u00eam: <a href=\"https:\/\/interdata.vn\/blog\/cach-dang-nhap-vps-tren-may-tinh\/\">C\u00e1ch \u0110\u0103ng Nh\u1eadp VPS Tr\u00ean M\u00e1y T\u00ednh<\/a><\/strong><\/p>\n<p><strong>2\/ C\u1eadp nh\u1eadt danh s\u00e1ch g\u00f3i h\u1ec7 th\u1ed1ng<\/strong><\/p>\n<p>\u0110\u1ed3ng b\u1ed9 c\u00e1c b\u1ea3n v\u00e1 m\u1edbi nh\u1ea5t c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh tr\u01b0\u1edbc khi c\u1ea5u h\u00ecnh:<\/p>\n<pre><code class=\"language-bash\">sudo apt update &amp;&amp; sudo apt upgrade -y<\/code><\/pre>\n<p><strong>3\/ Th\u1ef1c thi script c\u00e0i \u0111\u1eb7t Dokploy<\/strong><\/p>\n<p>Ch\u1ea1y m\u1ed9t d\u00f2ng l\u1ec7nh duy nh\u1ea5t \u0111\u1ec3 t\u1ea3i v\u00e0 c\u00e0i \u0111\u1eb7t to\u00e0n b\u1ed9 th\u00e0nh ph\u1ea7n ph\u1ee5 thu\u1ed9c:<\/p>\n<pre><code class=\"language-bash\">curl -sSL https:\/\/dokploy.com\/install.sh | sh<\/code><\/pre>\n<p>Script n\u00e0y t\u1ef1 \u0111\u1ed9ng ki\u1ec3m tra Docker, k\u00edch ho\u1ea1t Docker Swarm mode v\u00e0 kh\u1edfi \u0111\u1ed9ng c\u1ee5m container qu\u1ea3n tr\u1ecb g\u1ed3m Traefik v\u00e0 Dokploy core.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43782\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/cai-dat-Dokploy-tren-Ubuntu-bang-script-tu-dong.png\" alt=\"c\u00e0i \u0111\u1eb7t Dokploy tr\u00ean Ubuntu b\u1eb1ng script t\u1ef1 \u0111\u1ed9ng\" width=\"1000\" height=\"562\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/cai-dat-Dokploy-tren-Ubuntu-bang-script-tu-dong.png 1558w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/cai-dat-Dokploy-tren-Ubuntu-bang-script-tu-dong-300x168.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/cai-dat-Dokploy-tren-Ubuntu-bang-script-tu-dong-1024x575.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/cai-dat-Dokploy-tren-Ubuntu-bang-script-tu-dong-768x431.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/cai-dat-Dokploy-tren-Ubuntu-bang-script-tu-dong-1536x863.png 1536w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p><strong>4\/ M\u1edf c\u1ed5ng t\u01b0\u1eddng l\u1eeda UFW<\/strong><\/p>\n<p>N\u1ebfu VPS c\u1ee7a b\u1ea1n \u0111ang b\u1eadt t\u01b0\u1eddng l\u1eeda, h\u00e3y m\u1edf c\u00e1c c\u1ed5ng d\u1ecbch v\u1ee5 c\u1ea7n thi\u1ebft:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 80\/tcp\r\nsudo ufw allow 443\/tcp\r\nsudo ufw allow 3000\/tcp\r\nsudo ufw reload<\/code><\/pre>\n<p><strong>&gt; Xem Th\u00eam: <a href=\"https:\/\/interdata.vn\/blog\/cai-dat-va-cau-hinh-ufw\/\">H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t V\u00e0 C\u1ea5u H\u00ecnh UFW Tr\u00ean Ubuntu Chi Ti\u1ebft T\u1eeb A-Z<\/a><\/strong><\/p>\n<p><strong>5\/ Truy c\u1eadp Dashboard<\/strong><\/p>\n<p>M\u1edf tr\u00ecnh duy\u1ec7t web v\u00e0 \u0111i\u1ec1u h\u01b0\u1edbng t\u1edbi \u0111\u1ecba ch\u1ec9:<\/p>\n<pre><code class=\"language-text\">http:\/\/your-vps-ip:3000<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43783\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-dashboard-Dokploy.png\" alt=\"Truy c\u1eadp dashboard Dokploy\" width=\"1000\" height=\"463\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-dashboard-Dokploy.png 1903w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-dashboard-Dokploy-300x139.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-dashboard-Dokploy-1024x475.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-dashboard-Dokploy-768x356.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Truy-cap-dashboard-Dokploy-1536x712.png 1536w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p><strong>6\/ T\u1ea1o t\u00e0i kho\u1ea3n qu\u1ea3n tr\u1ecb \u0111\u1ea7u ti\u00ean<\/strong><\/p>\n<p>\u0110i\u1ec1n th\u00f4ng tin h\u1ecd t\u00ean, \u0111\u1ecba ch\u1ec9 email v\u00e0 m\u1eadt kh\u1ea9u qu\u1ea3n tr\u1ecb \u0111\u1ec3 thi\u1ebft l\u1eadp quy\u1ec1n truy c\u1eadp master cho c\u1ee5m Dokploy.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43784\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-tai-khoan-Dokploy.png\" alt=\"T\u1ea1o t\u00e0i kho\u1ea3n Dokploy\" width=\"1000\" height=\"467\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-tai-khoan-Dokploy.png 1916w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-tai-khoan-Dokploy-300x140.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-tai-khoan-Dokploy-1024x478.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-tai-khoan-Dokploy-768x359.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Tao-tai-khoan-Dokploy-1536x717.png 1536w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">L\u01b0u \u00fd c\u1ea5u h\u00ecnh cho m\u00e1y ch\u1ee7 Debian v\u00e0 h\u1ea1 t\u1ea7ng m\u1ea1ng nhi\u1ec1u IP<\/h3>\n<p>Tr\u00ean Debian 11 ho\u1eb7c 12, quy tr\u00ecnh th\u1ef1c hi\u1ec7n t\u01b0\u01a1ng t\u1ef1 v\u00ec h\u1ec7 \u0111i\u1ec1u h\u00e0nh n\u00e0y s\u1eed d\u1ee5ng chung tr\u00ecnh qu\u1ea3n l\u00fd g\u00f3i <code>apt<\/code>. Trong tr\u01b0\u1eddng h\u1ee3p VPS c\u1ee7a b\u1ea1n c\u00f3 nhi\u1ec1u card m\u1ea1ng ho\u1eb7c script nh\u1eadn di\u1ec7n sai IP c\u00f4ng khai khi\u1ebfn Docker Swarm kh\u00f4ng th\u1ec3 giao ti\u1ebfp, h\u00e3y \u00e9p tham s\u1ed1 IP c\u00f4ng khai th\u00f4ng qua bi\u1ebfn m\u00f4i tr\u01b0\u1eddng sau:<\/p>\n<pre><code class=\"language-bash\">curl -sSL https:\/\/dokploy.com\/install.sh | sudo ADVERTISE_ADDR=your-public-ip sh<\/code><\/pre>\n<h2 id=\"section5\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">C\u00e1ch Tri\u1ec3n Khai \u1ee8ng D\u1ee5ng Khi C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy<\/h2>\n<p>Sau khi ho\u00e0n t\u1ea5t \u0111\u0103ng nh\u1eadp, Dokploy ph\u00e2n chia t\u00e0i nguy\u00ean theo c\u1ea5u tr\u00fac Projects (D\u1ef1 \u00e1n). B\u1ea1n c\u00f3 th\u1ec3 tri\u1ec3n khai t\u1eeb m\u00e3 ngu\u1ed3n Git, file c\u1ea5u h\u00ecnh Compose ho\u1eb7c database \u0111\u1ed9c l\u1eadp.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 20px;\">1. Tri\u1ec3n khai \u1ee9ng d\u1ee5ng tr\u1ef1c ti\u1ebfp t\u1eeb Git Repository<\/h3>\n<p>Dokploy h\u1ed7 tr\u1ee3 k\u00e9o m\u00e3 ngu\u1ed3n tr\u1ef1c ti\u1ebfp t\u1eeb GitHub, GitLab ho\u1eb7c b\u1ea5t k\u1ef3 Git URL c\u00f4ng khai n\u00e0o.<\/p>\n<ol style=\"line-height: 1.8; font-size: 15px;\">\n<li>T\u1ea1i m\u00e0n h\u00ecnh Dashboard, nh\u1ea5n <strong>Create Project<\/strong> v\u00e0 \u0111\u1eb7t t\u00ean cho d\u1ef1 \u00e1n c\u1ee7a b\u1ea1n.<\/li>\n<li>B\u00ean trong Project, ch\u1ecdn <strong>Add Service<\/strong> &gt; <strong>Application<\/strong>.<\/li>\n<li>T\u1ea1i m\u1ee5c <strong>Provider<\/strong>, ch\u1ecdn <strong>Git<\/strong> ho\u1eb7c li\u00ean k\u1ebft v\u1edbi t\u00e0i kho\u1ea3n GitHub \u0111\u00e3 ph\u00e2n quy\u1ec1n. Nh\u1eadp URL c\u1ee7a repository v\u00e0 nh\u00e1nh m\u00e3 ngu\u1ed3n (v\u00ed d\u1ee5: <code>main<\/code>).<\/li>\n<li>Ch\u1ecdn <strong>Build Type<\/strong>: Dokploy cung c\u1ea5p hai l\u1ef1a ch\u1ecdn c\u1ed1t l\u00f5i:\n<ul>\n<li><strong>Nixpacks:<\/strong> T\u1ef1 \u0111\u1ed9ng nh\u1eadn di\u1ec7n ng\u00f4n ng\u1eef l\u1eadp tr\u00ecnh (Node.js, Python, PHP, Golang, Rust) v\u00e0 t\u1ea1o image t\u1ed1i \u01b0u m\u00e0 kh\u00f4ng c\u1ea7n Dockerfile.<\/li>\n<li><strong>Dockerfile:<\/strong> \u0110\u1ecdc tr\u1ef1c ti\u1ebfp t\u1eeb file <code>Dockerfile<\/code> s\u1eb5n c\u00f3 trong source code \u0111\u1ec3 ng\u01b0\u1eddi d\u00f9ng to\u00e0n quy\u1ec1n ki\u1ec3m so\u00e1t build step.<\/li>\n<\/ul>\n<\/li>\n<li>Chuy\u1ec3n qua tab <strong>Domains<\/strong>, nh\u1eadp t\u00ean mi\u1ec1n (v\u00ed d\u1ee5: <code>app.yourdomain.com<\/code>), tr\u1ecf A record c\u1ee7a domain v\u1ec1 IP m\u00e1y ch\u1ee7 VPS v\u00e0 k\u00edch ho\u1ea1t t\u00f9y ch\u1ecdn <strong>HTTPS<\/strong>.<\/li>\n<li>Nh\u1ea5n <strong>Deploy<\/strong>. Dokploy s\u1ebd ti\u1ebfn h\u00e0nh clone m\u00e3 ngu\u1ed3n, ch\u1ea1y build, kh\u1edfi ch\u1ea1y container v\u00e0 t\u1ef1 \u0111\u1ed9ng g\u1eafn SSL qua Traefik.<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43785\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-truc-tiep-tu-Git-Repository-voi-Dokploy.png\" alt=\"Tri\u1ec3n khai \u1ee9ng d\u1ee5ng tr\u1ef1c ti\u1ebfp t\u1eeb Git Repository v\u1edbi Dokploy\" width=\"1000\" height=\"476\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-truc-tiep-tu-Git-Repository-voi-Dokploy.png 1888w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-truc-tiep-tu-Git-Repository-voi-Dokploy-300x143.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-truc-tiep-tu-Git-Repository-voi-Dokploy-1024x487.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-truc-tiep-tu-Git-Repository-voi-Dokploy-768x365.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-truc-tiep-tu-Git-Repository-voi-Dokploy-1536x731.png 1536w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">2. Tri\u1ec3n khai \u1ee9ng d\u1ee5ng qua Docker Compose<\/h3>\n<p>N\u1ebfu d\u1ef1 \u00e1n bao g\u1ed3m nhi\u1ec1u service li\u00ean k\u1ebft ch\u1eb7t ch\u1ebd (nh\u01b0 Web App + Worker + Cache), t\u00ednh n\u0103ng Compose t\u00edch h\u1ee3p s\u1ebd mang l\u1ea1i s\u1ef1 thu\u1eadn ti\u1ec7n t\u1ed1i \u0111a.<\/p>\n<p>V\u00e0o Project &gt; <strong>Add Service<\/strong> &gt; ch\u1ecdn <strong>Compose<\/strong>. H\u1ec7 th\u1ed1ng s\u1ebd m\u1edf ra m\u1ed9t tr\u00ecnh so\u1ea1n th\u1ea3o YAML tr\u1ef1c quan tr\u00ean giao di\u1ec7n web. B\u1ea1n ch\u1ec9 c\u1ea7n d\u00e1n c\u1ea5u h\u00ecnh ti\u00eau chu\u1ea9n v\u00e0o \u0111\u00e2y:<\/p>\n<pre><code class=\"language-yaml\">version: '3.8'\r\nservices:\r\n  web:\r\n    image: nginx:alpine\r\n    ports:\r\n      - \"8080:80\"\r\n    restart: always\r\n  cache:\r\n    image: redis:7-alpine\r\n    restart: always<\/code><\/pre>\n<p>K\u1ef9 n\u0103ng qu\u1ea3n l\u00fd c\u00e1c \u0111\u1ecbnh d\u1ea1ng khai b\u00e1o n\u00e0y r\u1ea5t quan tr\u1ecdng khi c\u1ea5u tr\u00fac h\u1ec7 th\u1ed1ng l\u1edbn. B\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o b\u00e0i <a href=\"https:\/\/interdata.vn\/blog\/cai-dat-docker-compose\/\">c\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Docker Compose<\/a> \u0111\u1ec3 n\u1eafm b\u1eaft c\u00fa ph\u00e1p khai b\u00e1o networks v\u00e0 volumes chuy\u00ean s\u00e2u.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43786\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-qua-Docker-Compose-voi-Dokploy.png\" alt=\"Tri\u1ec3n khai \u1ee9ng d\u1ee5ng qua Docker Compose v\u1edbi Dokploy\" width=\"1000\" height=\"474\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-qua-Docker-Compose-voi-Dokploy.png 1855w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-qua-Docker-Compose-voi-Dokploy-300x142.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-qua-Docker-Compose-voi-Dokploy-1024x486.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-qua-Docker-Compose-voi-Dokploy-768x364.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Trien-khai-ung-dung-qua-Docker-Compose-voi-Dokploy-1536x729.png 1536w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">3. C\u00e0i \u0111\u1eb7t Database \u0111\u1ed9c l\u1eadp (PostgreSQL, Redis, MongoDB)<\/h3>\n<p>Dokploy cho ph\u00e9p kh\u1edfi t\u1ea1o d\u1ecbch v\u1ee5 c\u01a1 s\u1edf d\u1eef li\u1ec7u production ch\u1ec9 v\u1edbi v\u00e0i c\u00fa nh\u1ea5p chu\u1ed9t m\u00e0 kh\u00f4ng c\u1ea7n vi\u1ebft file compose th\u1ee7 c\u00f4ng:<\/p>\n<ol style=\"line-height: 1.8; font-size: 15px;\">\n<li>Ch\u1ecdn <strong>Add Service<\/strong> &gt; ch\u1ecdn lo\u1ea1i Database: PostgreSQL, MySQL, MariaDB, MongoDB ho\u1eb7c Redis.<\/li>\n<li>Nh\u1eadp th\u00f4ng tin x\u00e1c th\u1ef1c g\u1ed3m Database Name, Username v\u00e0 Root Password.<\/li>\n<li>Nh\u1ea5n <strong>Deploy<\/strong>. Dokploy t\u1ef1 \u0111\u1ed9ng t\u1ea1o volume g\u1eafn ngo\u00e0i \u0111\u1ec3 duy tr\u00ec d\u1eef li\u1ec7u li\u00ean t\u1ee5c k\u1ec3 c\u1ea3 khi container kh\u1edfi \u0111\u1ed9ng l\u1ea1i.<\/li>\n<\/ol>\n<p><em>L\u01b0u \u00fd quan tr\u1ecdng:<\/em> Khi k\u1ebft n\u1ed1i database v\u1edbi \u1ee9ng d\u1ee5ng n\u1eb1m trong c\u00f9ng m\u1ed9t Project Dokploy, h\u00e3y s\u1eed d\u1ee5ng <strong>t\u00ean service n\u1ed9i b\u1ed9<\/strong> c\u1ee7a database l\u00e0m hostname (v\u00ed d\u1ee5: <code>postgres-service<\/code>) thay v\u00ec d\u00f9ng <code>localhost<\/code> hay IP m\u00e1y ch\u1ee7.<\/p>\n<div style=\"background: linear-gradient(135deg, #0F172A 0%, #1E3A8A 100%); border: 2px solid #3B82F6; border-radius: 14px; padding: 32px 25px; margin: 40px 0; text-align: center; color: #ffffff; box-shadow: 0 10px 25px rgba(15, 23, 42, 0.25); position: relative;\">\n<p><span style=\"background: #EF4444; color: #fff; font-size: 12px; font-weight: 800; text-transform: uppercase; padding: 4px 14px; border-radius: 20px; display: inline-block; margin-bottom: 14px; letter-spacing: 0.5px;\">Ti\u1ebft Ki\u1ec7m L\u00ean \u0110\u1ebfn 80% Chi Ph\u00ed PAAS<\/span><\/p>\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-size: 24px; font-weight: 800; margin: 0 0 10px; line-height: 1.3;\">Khoan Tr\u1ea3 Th\u00eam Ti\u1ec1n Cho Vercel Pro Hay Managed Database \u0110\u1eaft \u0110\u1ecf<\/p>\n<p style=\"font-size: 15px; color: #cbd5e1; max-width: 680px; margin: 0 auto 22px; line-height: 1.6;\">Thay v\u00ec tr\u1ea3 h\u00e0ng tr\u0103m USD m\u1ed7i th\u00e1ng theo l\u01b0\u1ee3ng request, b\u1ea1n ho\u00e0n to\u00e0n c\u00f3 th\u1ec3 t\u1ef1 ch\u1ea1y kh\u00f4ng gi\u1edbi h\u1ea1n website &amp; database tr\u00ean VPS ri\u00eang. L\u1ea5y ngay <strong>Hot Deals &amp; M\u00e3 Gi\u1ea3m Gi\u00e1 \u0110\u1ed9c Quy\u1ec1n<\/strong> t\u1eeb InterData \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt m\u1edbi nh\u1ea5t t\u1ea1i Canh Me.<\/p>\n<p><a style=\"background: #2563EB; color: #ffffff; padding: 14px 34px; text-decoration: none; font-weight: bold; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 20px rgba(37, 99, 235, 0.4); border: 1px solid #60A5FA;\" href=\"https:\/\/interdata.vn\/canhme\/\" target=\"_blank\" rel=\"noopener\">S\u0103n \u01afu \u0110\u00e3i VPS\/Server Ngay H\u00f4m Nay \u27f6<br \/>\n<\/a><\/p>\n<p style=\"margin: 12px 0 0; font-size: 12px; color: #94a3b8;\">\u00c1p d\u1ee5ng cho c\u1ea5u h\u00ecnh SSD NVMe U.2 \u2022 S\u1ed1 l\u01b0\u1ee3ng voucher c\u00f3 gi\u1edbi h\u1ea1n theo th\u00e1ng<\/p>\n<\/div>\n<h2 id=\"section6\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">Thi\u1ebft L\u1eadp Auto-Deploy T\u1eeb GitHub V\u1edbi Dokploy<\/h2>\n<p>\u0110\u1ec3 t\u1ed1i \u01b0u chu tr\u00ecnh ph\u00e1t tri\u1ec3n ph\u1ea7n m\u1ec1m theo ti\u00eau chu\u1ea9n CI\/CD hi\u1ec7n \u0111\u1ea1i, b\u1ea1n c\u1ea7n thi\u1ebft l\u1eadp \u0111\u1ec3 m\u1ed7i khi c\u00f3 commit m\u1edbi \u0111\u1ea9y l\u00ean repository, Dokploy s\u1ebd t\u1ef1 \u0111\u1ed9ng k\u00edch ho\u1ea1t ti\u1ebfn tr\u00ecnh build m\u1edbi.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 20px;\">1. S\u1eed d\u1ee5ng GitHub App ch\u00ednh th\u1ee9c (Khuy\u00ean d\u00f9ng)<\/h3>\n<p>\u0110\u00e2y l\u00e0 gi\u1ea3i ph\u00e1p an to\u00e0n v\u00e0 li\u1ec1n m\u1ea1ch nh\u1ea5t. Tr\u00ean giao di\u1ec7n Dokploy, \u0111i\u1ec1u h\u01b0\u1edbng t\u1edbi <strong>Settings<\/strong> &gt; <strong>Git Providers<\/strong> &gt; ch\u1ecdn <strong>GitHub<\/strong> v\u00e0 b\u1ea5m n\u00fat c\u00e0i \u0111\u1eb7t GitHub App. B\u1ea1n s\u1ebd \u0111\u01b0\u1ee3c chuy\u1ec3n h\u01b0\u1edbng t\u1edbi GitHub \u0111\u1ec3 ch\u1ecdn c\u00e1c repository mu\u1ed1n c\u1ea5p quy\u1ec1n cho Dokploy. Sau khi ho\u00e0n t\u1ea5t, h\u1ec7 th\u1ed1ng t\u1ef1 \u0111\u1ed9ng g\u00e1n webhook m\u00e0 kh\u00f4ng c\u1ea7n thao t\u00e1c th\u1ee7 c\u00f4ng.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">2. C\u1ea5u h\u00ecnh Webhook th\u1ee7 c\u00f4ng<\/h3>\n<p>N\u1ebfu b\u1ea1n s\u1eed d\u1ee5ng repository ri\u00eang l\u1ebb ho\u1eb7c h\u1ec7 th\u1ed1ng Git t\u1ef1 host:<\/p>\n<ol style=\"line-height: 1.8; font-size: 15px;\">\n<li>Truy c\u1eadp v\u00e0o \u1ee9ng d\u1ee5ng tr\u00ean Dokploy, t\u00ecm \u0111\u1ebfn tab <strong>Deployments<\/strong> v\u00e0 sao ch\u00e9p \u0111\u01b0\u1eddng d\u1eabn <strong>Webhook URL<\/strong>.<\/li>\n<li>\u0110\u0103ng nh\u1eadp GitHub, v\u00e0o repository c\u1ea7n thi\u1ebft l\u1eadp &gt; ch\u1ecdn <strong>Settings<\/strong> &gt; <strong>Webhooks<\/strong> &gt; <strong>Add webhook<\/strong>.<\/li>\n<li>D\u00e1n link v\u00e0o m\u1ee5c <strong>Payload URL<\/strong>.<\/li>\n<li>M\u1ee5c <strong>Content type<\/strong>, b\u1eaft bu\u1ed9c ph\u1ea3i ch\u1ecdn <code>application\/json<\/code>.<\/li>\n<li>T\u1ea1i ph\u1ea7n trigger, ch\u1ecdn <strong>Just the push event<\/strong> r\u1ed3i nh\u1ea5n <strong>Add webhook<\/strong>.<\/li>\n<\/ol>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">3. T\u00edch h\u1ee3p GitHub Actions qua Dokploy API<\/h3>\n<p>Trong c\u00e1c d\u1ef1 \u00e1n l\u1edbn c\u1ea7n ch\u1ea1y unit test ho\u1eb7c sonarqube tr\u01b0\u1edbc khi deploy, b\u1ea1n n\u00ean d\u00f9ng GitHub Actions \u0111\u1ec3 ki\u1ec3m th\u1eed, sau \u0111\u00f3 m\u1edbi g\u1eedi l\u1ec7nh deploy sang Dokploy:<\/p>\n<ol style=\"line-height: 1.8; font-size: 15px;\">\n<li>V\u00e0o Dokploy Dashboard &gt; <strong>Settings<\/strong> &gt; <strong>API Keys<\/strong> &gt; t\u1ea1o m\u1ed9t key m\u1edbi.<\/li>\n<li>Tr\u00ean GitHub Repository, l\u01b0u key n\u00e0y v\u00e0o <code>Settings &gt; Secrets and variables &gt; Actions<\/code> v\u1edbi t\u00ean <code>DOKPLOY_API_KEY<\/code>.<\/li>\n<li>Th\u00eam b\u01b0\u1edbc k\u00edch ho\u1ea1t v\u00e0o cu\u1ed1i file <code>.github\/workflows\/deploy.yml<\/code>:<\/li>\n<\/ol>\n<pre><code class=\"language-yaml\">name: Trigger Dokploy Deploy\r\non:\r\n  push:\r\n    branches: [ main ]\r\njobs:\r\n  deploy:\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n      - name: Trigger Webhook\r\n        run: |\r\n          curl -X POST \"${{ secrets.DOKPLOY_WEBHOOK_URL }}\" \\\r\n               -H \"Authorization: Bearer ${{ secrets.DOKPLOY_API_KEY }}\"<\/code><\/pre>\n<p>Khi ki\u1ec3m tra c\u00e1c l\u1ed7i ph\u00e1t sinh trong lu\u1ed3ng build n\u00e0y, vi\u1ec7c th\u00f4ng th\u1ea1o <a href=\"https:\/\/interdata.vn\/blog\/cac-lenh-docker\/\">c\u00e1c l\u1ec7nh Docker th\u00f4ng d\u1ee5ng<\/a> s\u1ebd gi\u00fap b\u1ea1n truy v\u1ebft log v\u00e0 ti\u1ebfn tr\u00ecnh c\u1ee7a build runner m\u1ed9t c\u00e1ch nhanh ch\u00f3ng.<\/p>\n<h2 id=\"section7\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">B\u1ea3o M\u1eadt v\u00e0 T\u1ed1i \u01afu Sau Khi C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy Xong<\/h2>\n<p>Sau khi h\u1ec7 th\u1ed1ng \u0111\u00e3 v\u1eadn h\u00e0nh tr\u01a1n tru, vi\u1ec7c b\u1ea3o v\u1ec7 m\u00e1y ch\u1ee7 kh\u1ecfi c\u00e1c r\u1ee7i ro an ninh m\u1ea1ng v\u00e0 duy tr\u00ec t\u00ednh \u1ed5n \u0111\u1ecbnh d\u1ecbch v\u1ee5 l\u00e0 b\u1eaft bu\u1ed9c.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 20px;\">1. \u0110\u1eb7t Domain ri\u00eang cho Dashboard v\u00e0 \u0111\u00f3ng Port 3000<\/h3>\n<p>Theo m\u1eb7c \u0111\u1ecbnh, c\u1ed5ng 3000 \u0111\u1ec3 m\u1edf ngo\u00e0i Internet l\u00e0 m\u1ed9t \u0111i\u1ec3m y\u1ebfu b\u1ea3o m\u1eadt ti\u1ec1m \u1ea9n. B\u1ea1n n\u00ean g\u00e1n domain cho giao di\u1ec7n Dokploy qua Traefik v\u1edbi ch\u1ee9ng ch\u1ec9 SSL, sau \u0111\u00f3 kh\u00f3a c\u1ed5ng 3000 \u1edf t\u1ea7ng firewall:<\/p>\n<ol style=\"line-height: 1.8; font-size: 15px;\">\n<li>Truy c\u1eadp Dokploy &gt; <strong>Settings<\/strong> &gt; <strong>Server Domain<\/strong> &gt; \u0111i\u1ec1n domain qu\u1ea3n tr\u1ecb (v\u00ed d\u1ee5: <code>manage.yourdomain.com<\/code>) v\u00e0 k\u00edch ho\u1ea1t Let&#8217;s Encrypt.<\/li>\n<li>Ki\u1ec3m tra \u0111\u0103ng nh\u1eadp th\u00e0nh c\u00f4ng qua giao di\u1ec7n HTTPS t\u1ea1i domain m\u1edbi.<\/li>\n<li>Kh\u00f3a c\u1ed5ng 3000 tr\u00ean t\u01b0\u1eddng l\u1eeda UFW:\n<pre><code class=\"language-bash\">sudo ufw delete allow 3000\/tcp\r\nsudo ufw reload<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">2. Thi\u1ebft l\u1eadp quy chu\u1ea9n b\u1ea3o m\u1eadt VPS<\/h3>\n<p>H\u1ea1 t\u1ea7ng m\u00e1y ch\u1ee7 b\u00ean d\u01b0\u1edbi c\u1ea7n \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp c\u01a1 ch\u1ebf kh\u00f3a c\u1ed5ng SSH root, chuy\u1ec3n c\u1ed5ng m\u1eb7c \u0111\u1ecbnh 22 sang c\u1ed5ng kh\u00e1c v\u00e0 c\u00e0i \u0111\u1eb7t fail2ban. B\u1ea1n c\u1ea7n tu\u00e2n th\u1ee7 l\u1ed9 tr\u00ecnh chu\u1ea9n t\u1ea1i b\u00e0i vi\u1ebft h\u01b0\u1edbng d\u1eabn <a href=\"https:\/\/interdata.vn\/blog\/bao-mat-vps-linux\/\">b\u1ea3o m\u1eadt VPS sau khi c\u00e0i \u0111\u1eb7t<\/a> \u0111\u1ec3 b\u1ea3o v\u1ec7 c\u00e1c \u1ee9ng d\u1ee5ng \u0111ang ch\u1ea1y b\u00ean trong.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">3. T\u00f9y ch\u1ecdn Reverse Proxy v\u00e0 gi\u1ea3i ph\u00e1p c\u1ea5p ph\u00e1t SSL<\/h3>\n<p>M\u1eb7c d\u00f9 Traefik \u0111\u01b0\u1ee3c Dokploy \u0111i\u1ec1u khi\u1ec3n t\u1ef1 \u0111\u1ed9ng r\u1ea5t ti\u1ec7n l\u1ee3i, nh\u01b0ng \u0111\u1ed1i v\u1edbi c\u00e1c h\u1ea1 t\u1ea7ng c\u1ea7n custom rewrite quy m\u00f4 l\u1edbn ho\u1eb7c k\u1ebft h\u1ee3p nhi\u1ec1u backend ph\u1ee9c t\u1ea1p, m\u1ed9t s\u1ed1 k\u1ef9 s\u01b0 v\u1eabn \u01b0u ti\u00ean c\u1ea5u h\u00ecnh Nginx \u0111\u1ee9ng tr\u01b0\u1edbc.<\/p>\n<p>Khi \u0111\u00f3, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o h\u01b0\u1edbng d\u1eabn <a href=\"https:\/\/interdata.vn\/blog\/cau-hinh-nginx-reverse-proxy\/\">c\u1ea5u h\u00ecnh Nginx Reverse Proxy<\/a> \u0111\u1ec3 chuy\u1ec3n ti\u1ebfp request v\u00e0o c\u00e1c container Swarm.<\/p>\n<p>\u0110\u1ed3ng th\u1eddi, n\u1ebfu g\u1eb7p t\u00ecnh hu\u1ed1ng Traefik kh\u00f4ng th\u1ec3 c\u1ea5p ph\u00e1t SSL do l\u1ed7i DNS cluster, vi\u1ec7c hi\u1ec3u c\u00e1ch <a href=\"https:\/\/interdata.vn\/blog\/cai-ssl-lets-encrypt-certbot\/\">c\u00e0i SSL Let&#8217;s Encrypt b\u1eb1ng Certbot<\/a> th\u1ee7 c\u00f4ng s\u1ebd cung c\u1ea5p cho b\u1ea1n ph\u01b0\u01a1ng \u00e1n d\u1ef1 ph\u00f2ng chu\u1ea9n x\u00e1c.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">4. Gi\u00e1m s\u00e1t t\u00ednh s\u1eb5n s\u00e0ng c\u1ee7a \u1ee9ng d\u1ee5ng<\/h3>\n<p>\u0110\u1ec3 nh\u1eadn c\u1ea3nh b\u00e1o s\u1ef1 c\u1ed1 m\u00e1y ch\u1ee7 k\u1ecbp th\u1eddi qua Telegram ho\u1eb7c Discord, b\u1ea1n n\u00ean ti\u1ebfn h\u00e0nh <a href=\"https:\/\/interdata.vn\/blog\/uptime-kuma\/\">c\u00e0i \u0111\u1eb7t Uptime Kuma \u0111\u1ec3 gi\u00e1m s\u00e1t uptime<\/a>.<\/p>\n<p>Uptime Kuma c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c deploy tr\u1ef1c ti\u1ebfp nh\u01b0 m\u1ed9t Compose service ngay tr\u00ean Dokploy \u0111\u1ec3 ki\u1ec3m tra t\u00ednh s\u1eb5n s\u00e0ng c\u1ee7a c\u00e1c container kh\u00e1c trong h\u1ec7 th\u1ed1ng.<\/p>\n<div style=\"display: flex; flex-wrap: wrap; background-color: #fff; border: 1.5px solid #BFDBFE; box-shadow: 0 8px 20px rgba(37,99,235,0.08); border-radius: 12px; overflow: hidden; margin: 35px 0;\">\n<div style=\"flex: 1; min-width: 250px; background: linear-gradient(135deg, #1E3A8A 0%, #2563EB 100%); display: flex; align-items: center; justify-content: center; padding: 30px; text-align: center;\">\n<div>\n<p style=\"color: #fff; font-size: 34px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.1;\">Cloud Server InterData<\/p>\n<p style=\"color: #dbeafe; font-size: 15px; font-weight: 600; margin-top: 12px;\">N\u00e2ng\/h\u1ea1 t\u00e0i nguy\u00ean nhanh theo t\u1ea3i, m\u1ea1ng t\u1ed1c \u0111\u1ed9 cao<\/p>\n<\/div>\n<\/div>\n<div style=\"flex: 2; padding: 25px; min-width: 300px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; margin-top: 0; font-size: 20px;\">Dokploy ph\u1ee5c v\u1ee5 production cho c\u1ea3 team?<\/h3>\n<p style=\"color: #4b5563; font-size: 15px; line-height: 1.6; margin-bottom: 20px;\">Khi c\u1ee5m Dokploy c\u1ee7a b\u1ea1n ph\u1ee5c v\u1ee5 nhi\u1ec1u th\u00e0nh vi\u00ean c\u00f9ng l\u00fac ho\u1eb7c l\u01b0\u1ee3ng truy c\u1eadp \u1ee9ng d\u1ee5ng t\u0103ng \u0111\u1ed9t bi\u1ebfn, gi\u1ea3i ph\u00e1p Cloud Server t\u1ea1i InterData cho ph\u00e9p linh ho\u1ea1t m\u1edf r\u1ed9ng CPU v\u00e0 RAM ngay l\u1eadp t\u1ee9c m\u00e0 kh\u00f4ng l\u00e0m gi\u00e1n \u0111o\u1ea1n h\u1ec7 th\u1ed1ng hay y\u00eau c\u1ea7u c\u1ea5u h\u00ecnh l\u1ea1i Docker Swarm t\u1eeb \u0111\u1ea7u.<\/p>\n<p><a style=\"background: linear-gradient(90deg, #2563EB 0%, #1E3A8A 100%); color: #fff; padding: 12px 25px; text-decoration: none; font-weight: 600; border-radius: 8px; font-size: 15px; display: inline-block; box-shadow: 0 5px 15px rgba(37,99,235,0.3);\" href=\"https:\/\/interdata.vn\/cloud-server\/\" target=\"_blank\" rel=\"noopener\">Xem B\u1ea3ng Gi\u00e1 Cloud Server \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<h2 id=\"section8\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; text-align: left; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px; line-height: 1.4;\">X\u1eed L\u00fd L\u1ed7i Th\u01b0\u1eddng G\u1eb7p Khi C\u00e0i \u0110\u1eb7t v\u00e0 S\u1eed D\u1ee5ng Dokploy<\/h2>\n<p>D\u01b0\u1edbi \u0111\u00e2y l\u00e0 4 l\u1ed7i k\u1ef9 thu\u1eadt ph\u1ed5 bi\u1ebfn nh\u1ea5t \u0111\u01b0\u1ee3c ghi nh\u1eadn trong qu\u00e1 tr\u00ecnh tri\u1ec3n khai th\u1ef1c t\u1ebf c\u00f9ng gi\u1ea3i ph\u00e1p x\u1eed l\u00fd tri\u1ec7t \u0111\u1ec3:<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 20px;\">1. Kh\u00f4ng v\u00e0o \u0111\u01b0\u1ee3c Dashboard t\u1ea1i \u0111\u1ecba ch\u1ec9 IP:3000<\/h3>\n<p><strong>Tri\u1ec7u ch\u1ee9ng:<\/strong> Tr\u00ecnh duy\u1ec7t b\u00e1o l\u1ed7i &#8220;Connection timed out&#8221; ho\u1eb7c &#8220;Unable to connect&#8221; khi truy c\u1eadp <code>http:\/\/vps-ip:3000<\/code>.<\/p>\n<p><strong>Nguy\u00ean nh\u00e2n:<\/strong> Do d\u1ecbch v\u1ee5 Dokploy ch\u01b0a ho\u00e0n t\u1ea5t kh\u1edfi \u0111\u1ed9ng ho\u1eb7c t\u01b0\u1eddng l\u1eeda c\u1ee7a h\u1ec7 \u0111i\u1ec1u h\u00e0nh\/nh\u00e0 cung c\u1ea5p \u0111ang ch\u1eb7n c\u1ed5ng 3000.<\/p>\n<p><strong>C\u00e1ch x\u1eed l\u00fd:<\/strong> Ki\u1ec3m tra tr\u1ea1ng th\u00e1i c\u1ee7a c\u00e1c container v\u00e0 log ti\u1ebfn tr\u00ecnh b\u1eb1ng c\u00e1c l\u1ec7nh sau:<\/p>\n<pre><code class=\"language-bash\"># Ki\u1ec3m tra danh s\u00e1ch service c\u1ee7a Docker Swarm\r\ndocker service ls\r\n\r\n# Xem chi ti\u1ebft log kh\u1edfi \u0111\u1ed9ng c\u1ee7a Dokploy\r\ndocker service logs dokploy --tail 50\r\n\r\n# Ki\u1ec3m tra tr\u1ea1ng th\u00e1i t\u01b0\u1eddng l\u1eeda UFW\r\nsudo ufw status<\/code><\/pre>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">2. C\u1ed5ng 3000 b\u1ecb \u1ee9ng d\u1ee5ng kh\u00e1c chi\u1ebfm d\u1ee5ng t\u1eeb tr\u01b0\u1edbc<\/h3>\n<p><strong>Tri\u1ec7u ch\u1ee9ng:<\/strong> Script c\u00e0i \u0111\u1eb7t xu\u1ea5t hi\u1ec7n c\u1ea3nh b\u00e1o <code>Port 3000 is already in use<\/code>.<\/p>\n<p><strong>Nguy\u00ean nh\u00e2n:<\/strong> C\u00f3 m\u1ed9t ti\u1ebfn tr\u00ecnh Node.js, Grafana ho\u1eb7c AdGuard Home \u0111ang l\u1eafng nghe tr\u00ean c\u1ed5ng 3000.<\/p>\n<p><strong>C\u00e1ch x\u1eed l\u00fd:<\/strong> X\u00e1c \u0111\u1ecbnh ti\u1ebfn tr\u00ecnh \u0111ang chi\u1ebfm c\u1ed5ng v\u00e0 d\u1eebng ti\u1ebfn tr\u00ecnh \u0111\u00f3, ho\u1eb7c ch\u1ec9 \u0111\u1ecbnh c\u1ed5ng kh\u00e1c cho Dokploy:<\/p>\n<pre><code class=\"language-bash\"># T\u00ecm PID c\u1ee7a ti\u1ebfn tr\u00ecnh \u0111ang gi\u1eef port 3000\r\nsudo ss -tulnp | grep ':3000'\r\n\r\n# Bu\u1ed9c d\u1eebng ti\u1ebfn tr\u00ecnh n\u1ebfu kh\u00f4ng s\u1eed d\u1ee5ng (thay PID b\u1eb1ng s\u1ed1 th\u1ef1c t\u1ebf)\r\nsudo kill -9 &lt;PID&gt;\r\n\r\n# Ho\u1eb7c c\u00e0i \u0111\u1eb7t Dokploy tr\u00ean c\u1ed5ng kh\u00e1c (v\u00ed d\u1ee5 c\u1ed5ng 3005)\r\ncurl -sSL https:\/\/dokploy.com\/install.sh | sudo PORT=3005 sh<\/code><\/pre>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">3. L\u1ed7i Docker Swarm kh\u00f4ng th\u1ec3 kh\u1edfi t\u1ea1o do nh\u1eadn di\u1ec7n sai IP<\/h3>\n<p><strong>Tri\u1ec7u ch\u1ee9ng:<\/strong> Script c\u00e0i \u0111\u1eb7t th\u00f4ng b\u00e1o l\u1ed7i <code>Error response from daemon: could not choose an IP address to advertise<\/code>.<\/p>\n<p><strong>Nguy\u00ean nh\u00e2n:<\/strong> M\u00e1y ch\u1ee7 c\u00f3 nhi\u1ec1u h\u01a1n m\u1ed9t giao di\u1ec7n m\u1ea1ng (network interface) ho\u1eb7c ch\u1ea1y tr\u00ean h\u1ea1 t\u1ea7ng m\u1ea1ng n\u1ed9i b\u1ed9 \u1ea3o khi\u1ebfn Docker Swarm kh\u00f4ng x\u00e1c \u0111\u1ecbnh \u0111\u01b0\u1ee3c card m\u1ea1ng ch\u00ednh.<\/p>\n<p><strong>C\u00e1ch x\u1eed l\u00fd:<\/strong> Ch\u1ea1y l\u1ea1i l\u1ec7nh c\u00e0i \u0111\u1eb7t k\u00e8m tham s\u1ed1 ch\u1ec9 \u0111\u1ecbnh IP c\u00f4ng khai ch\u00ednh x\u00e1c c\u1ee7a m\u00e1y ch\u1ee7:<\/p>\n<pre><code class=\"language-bash\">curl -sSL https:\/\/dokploy.com\/install.sh | sudo ADVERTISE_ADDR=your-public-ip sh<\/code><\/pre>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin-top: 25px;\">4. Webhook GitHub kh\u00f4ng k\u00edch ho\u1ea1t ti\u1ebfn tr\u00ecnh t\u1ef1 \u0111\u1ed9ng deploy<\/h3>\n<p><strong>Tri\u1ec7u ch\u1ee9ng:<\/strong> Push commit m\u1edbi l\u00ean GitHub nh\u01b0ng tab Deployments tr\u00ean Dokploy kh\u00f4ng c\u00f3 ho\u1ea1t \u0111\u1ed9ng build m\u1edbi.<\/p>\n<p><strong>Nguy\u00ean nh\u00e2n:<\/strong> Sai \u0111\u1ecbnh d\u1ea1ng d\u1eef li\u1ec7u g\u1eedi qua Webhook ho\u1eb7c IP m\u00e1y ch\u1ee7 b\u1ecb ch\u1eb7n b\u1edfi b\u1ed9 l\u1ecdc m\u1ea1ng.<\/p>\n<p><strong>C\u00e1ch x\u1eed l\u00fd:<\/strong><\/p>\n<ol style=\"line-height: 1.8; font-size: 15px;\">\n<li>Truy c\u1eadp repository GitHub &gt; <strong>Settings<\/strong> &gt; <strong>Webhooks<\/strong> &gt; nh\u1ea5n v\u00e0o webhook c\u1ee7a Dokploy.<\/li>\n<li>K\u00e9o xu\u1ed1ng m\u1ee5c <strong>Recent Deliveries<\/strong> \u0111\u1ec3 xem m\u00e3 ph\u1ea3n h\u1ed3i HTTP t\u1eeb VPS. N\u1ebfu nh\u1eadn m\u00e3 <code>400<\/code> ho\u1eb7c <code>500<\/code>, ki\u1ec3m tra l\u1ea1i Secret token.<\/li>\n<li>\u0110\u1ea3m b\u1ea3o m\u1ee5c <strong>Content type<\/strong> \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp ch\u00ednh x\u00e1c l\u00e0 <code>application\/json<\/code> (kh\u00f4ng d\u00f9ng <code>application\/x-www-form-urlencoded<\/code>).<\/li>\n<li>Ki\u1ec3m tra log nh\u1eadn request t\u1eeb Traefik b\u1eb1ng l\u1ec7nh:\n<pre><code class=\"language-bash\">docker service logs dokploy-traefik --tail 30<\/code><\/pre>\n<\/li>\n<\/ol>\n<div style=\"background-color: #f8fafc; border: 1.5px solid #E2E8F0; border-radius: 12px; padding: 30px; margin: 40px 0;\">\n<h2 style=\"color: #1e3a8a; font-size: 22px; font-weight: bold; margin-top: 0;\">C\u00e2u H\u1ecfi Th\u01b0\u1eddng G\u1eb7p v\u1ec1 Dokploy<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 17px; margin-top: 20px; font-weight: 600;\">Dokploy l\u00e0 g\u00ec v\u00e0 kh\u00e1c g\u00ec Vercel?<\/h3>\n<p style=\"color: #4b5563; font-size: 15px; line-height: 1.6;\">Dokploy l\u00e0 PaaS ngu\u1ed3n m\u1edf t\u1ef1 host tr\u00ean VPS c\u1ee7a ng\u01b0\u1eddi d\u00f9ng, kh\u00f4ng gi\u1edbi h\u1ea1n s\u1ed1 l\u01b0\u1ee3ng \u1ee9ng d\u1ee5ng hay b\u0103ng th\u00f4ng m\u1ea1ng. Ng\u01b0\u1ee3c l\u1ea1i, Vercel l\u00e0 n\u1ec1n t\u1ea3ng th\u01b0\u01a1ng m\u1ea1i \u0111\u00f3ng g\u00f3i s\u1eb5n, mi\u1ec5n ph\u00ed cho nhu c\u1ea7u c\u01a1 b\u1ea3n nh\u01b0ng t\u00ednh ph\u00ed r\u1ea5t cao khi \u1ee9ng d\u1ee5ng ph\u00e1t tri\u1ec3n quy m\u00f4 l\u1edbn.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 17px; margin-top: 20px; font-weight: 600;\">C\u00e0i Dokploy c\u1ea7n VPS c\u1ea5u h\u00ecnh nh\u01b0 th\u1ebf n\u00e0o?<\/h3>\n<p style=\"color: #4b5563; font-size: 15px; line-height: 1.6;\">H\u1ec7 th\u1ed1ng y\u00eau c\u1ea7u m\u00e1y ch\u1ee7 t\u1ed1i thi\u1ec3u 1 vCPU, 2GB RAM v\u00e0 30GB \u1ed5 c\u1ee9ng SSD. V\u1edbi m\u00f4i tr\u01b0\u1eddng production ch\u1ea1y c\u1ea3 database l\u1eabn \u1ee9ng d\u1ee5ng web, khuy\u1ebfn ngh\u1ecb c\u1ea5u h\u00ecnh t\u1eeb 2 vCPU v\u00e0 4GB RAM tr\u1edf l\u00ean \u0111\u1ec3 qu\u00e1 tr\u00ecnh build container di\u1ec5n ra \u1ed5n \u0111\u1ecbnh.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 17px; margin-top: 20px; font-weight: 600;\">Dokploy c\u00f3 t\u1ef1 \u0111\u1ed9ng c\u00e0i SSL kh\u00f4ng?<\/h3>\n<p style=\"color: #4b5563; font-size: 15px; line-height: 1.6;\">Dokploy t\u00edch h\u1ee3p s\u1eb5n Traefik reverse proxy v\u00e0 k\u1ebft n\u1ed1i tr\u1ef1c ti\u1ebfp v\u1edbi Let&#8217;s Encrypt. B\u1ea1n ch\u1ec9 c\u1ea7n tr\u1ecf b\u1ea3n ghi A c\u1ee7a t\u00ean mi\u1ec1n v\u1ec1 IP m\u00e1y ch\u1ee7 VPS v\u00e0 k\u00edch ho\u1ea1t t\u00f9y ch\u1ecdn SSL tr\u00ean giao di\u1ec7n qu\u1ea3n tr\u1ecb, ch\u1ee9ng ch\u1ec9 s\u1ebd \u0111\u01b0\u1ee3c c\u1ea5p ph\u00e1t ho\u00e0n to\u00e0n t\u1ef1 \u0111\u1ed9ng.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 17px; margin-top: 20px; font-weight: 600;\">Dokploy vs Coolify: n\u00ean ch\u1ecdn c\u00e1i n\u00e0o?<\/h3>\n<p style=\"color: #4b5563; font-size: 15px; line-height: 1.6;\">N\u1ebfu b\u1ea1n \u01b0u ti\u00ean s\u1ef1 nh\u1eb9 nh\u00e0ng, ti\u1ebft ki\u1ec7m RAM tr\u00ean VPS nh\u1ecf v\u00e0 th\u00edch giao di\u1ec7n hi\u1ec7n \u0111\u1ea1i, Dokploy l\u00e0 l\u1ef1a ch\u1ecdn h\u00e0ng \u0111\u1ea7u. Tr\u01b0\u1eddng h\u1ee3p b\u1ea1n c\u1ea7n h\u1ec7 sinh th\u00e1i m\u1eabu d\u1ecbch v\u1ee5 \u0111a d\u1ea1ng v\u00e0 t\u00ednh n\u0103ng qu\u1ea3n tr\u1ecb c\u1ee5m m\u00e1y ch\u1ee7 ph\u1ee9c t\u1ea1p, Coolify s\u1ebd ph\u00f9 h\u1ee3p h\u01a1n.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 17px; margin-top: 20px; font-weight: 600;\">Dokploy c\u00f3 h\u1ed7 tr\u1ee3 nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng (multi-user) kh\u00f4ng?<\/h3>\n<p style=\"color: #4b5563; font-size: 15px; line-height: 1.6;\">C\u00f3. Dokploy h\u1ed7 tr\u1ee3 t\u00ednh n\u0103ng ph\u00e2n quy\u1ec1n nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng trong nh\u00f3m. Qu\u1ea3n tr\u1ecb vi\u00ean c\u00f3 th\u1ec3 m\u1eddi th\u00e0nh vi\u00ean tham gia v\u00e0o t\u1eebng Project c\u1ee5 th\u1ec3 v\u00e0 c\u1ea5p quy\u1ec1n truy c\u1eadp linh ho\u1ea1t, gi\u00fap t\u0103ng c\u01b0\u1eddng t\u00ednh b\u1ea3o m\u1eadt khi v\u1eadn h\u00e0nh d\u1ef1 \u00e1n theo nh\u00f3m.<\/p>\n<\/div>\n<div style=\"border-top: 2px dashed #BFDBFE; margin-top: 50px; padding-top: 30px;\">\n<p style=\"font-size: 15px; line-height: 1.7; color: #374151;\">Qu\u00e1 tr\u00ecnh <strong>c\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Dokploy<\/strong> mang \u0111\u1ebfn tr\u1ea3i nghi\u1ec7m v\u1eadn h\u00e0nh t\u1ef1 \u0111\u1ed9ng h\u00f3a t\u01b0\u01a1ng t\u1ef1 c\u00e1c n\u1ec1n t\u1ea3ng PaaS th\u01b0\u01a1ng m\u1ea1i nh\u01b0ng b\u1ea3o to\u00e0n quy\u1ec1n s\u1edf h\u1eefu h\u1ea1 t\u1ea7ng v\u00e0 t\u1ed1i \u01b0u chi ph\u00ed cho b\u1ea1n.<\/p>\n<p style=\"font-size: 15px; line-height: 1.7; color: #374151;\">N\u1ec1n t\u1ea3ng n\u00e0y k\u1ebft h\u1ee3p ch\u1eb7t ch\u1ebd gi\u1eefa t\u00ednh g\u1ecdn nh\u1eb9 c\u1ee7a Docker Swarm v\u00e0 kh\u1ea3 n\u0103ng \u0111\u1ecbnh tuy\u1ebfn m\u1ea1nh m\u1ebd c\u1ee7a Traefik, \u0111\u00e1p \u1ee9ng tr\u1ecdn v\u1eb9n c\u1ea3 nhu c\u1ea7u dev c\u00e1 nh\u00e2n l\u1eabn m\u00f4i tr\u01b0\u1eddng l\u00e0m vi\u1ec7c nh\u00f3m chuy\u00ean nghi\u1ec7p.<\/p>\n<p style=\"font-size: 15px; line-height: 1.7; color: #374151;\">H\u00e3y ch\u1ecdn c\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 ph\u00f9 h\u1ee3p t\u1ea1i InterData \u0111\u1ec3 b\u1eaft \u0111\u1ea7u thi\u1ebft l\u1eadp c\u1ee5m PaaS c\u1ee7a ri\u00eang b\u1ea1n ngay h\u00f4m nay.<\/p>\n<\/div>\n<p style=\"text-align: justify; font-size: 13px; font-style: italic; color: #6b7280; margin-top: 30px; border-top: 1px solid #E5E7EB; padding-top: 15px;\"><em>N\u1ed9i dung mang t\u00ednh tham kh\u1ea3o. L\u1ec7nh, c\u00fa ph\u00e1p, \u0111\u01b0\u1eddng d\u1eabn file v\u00e0 t\u00f9y ch\u1ecdn c\u1ea5u h\u00ecnh c\u00f3 th\u1ec3 thay \u0111\u1ed5i theo phi\u00ean b\u1ea3n h\u1ec7 \u0111i\u1ec1u h\u00e0nh, phi\u00ean b\u1ea3n ph\u1ea7n m\u1ec1m v\u00e0 m\u00f4i tr\u01b0\u1eddng c\u1ee5 th\u1ec3. N\u00ean ki\u1ec3m th\u1eed, sao l\u01b0u d\u1eef li\u1ec7u v\u00e0 \u0111\u00e1nh gi\u00e1 r\u1ee7i ro tr\u01b0\u1edbc khi \u00e1p d\u1ee5ng l\u00ean server production.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vi\u1ec7c c\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Dokploy tr\u00ean m\u00e1y ch\u1ee7 ri\u00eang gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean v\u00e0 doanh nghi\u1ec7p l\u00e0m ch\u1ee7 ho\u00e0n to\u00e0n h\u1ea1 t\u1ea7ng tri\u1ec3n khai m\u00e0 kh\u00f4ng ph\u1ea3i ch\u1ecbu chi ph\u00ed \u0111\u1eaft \u0111\u1ecf t\u1eeb c\u00e1c n\u1ec1n t\u1ea3ng th\u01b0\u01a1ng m\u1ea1i nh\u01b0 Vercel hay Heroku. Khi tri\u1ec3n khai Dokploy tr\u00ean n\u1ec1n t\u1ea3ng m\u00e1y ch\u1ee7 c\u1ee7a InterData,<\/p>\n","protected":false},"author":2,"featured_media":43789,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[161],"tags":[],"class_list":["post-43776","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-huong-dan-chung"],"_links":{"self":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/comments?post=43776"}],"version-history":[{"count":7,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43776\/revisions"}],"predecessor-version":[{"id":43790,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43776\/revisions\/43790"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/43789"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=43776"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=43776"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=43776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}