{"id":43478,"date":"2026-09-09T16:43:08","date_gmt":"2026-09-09T09:43:08","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=43478"},"modified":"2026-09-09T17:05:09","modified_gmt":"2026-09-09T10:05:09","slug":"deploy-nextjs-len-vps-bang-coolify","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/deploy-nextjs-len-vps-bang-coolify\/","title":{"rendered":"H\u01b0\u1edbng D\u1eabn Deploy Next.js L\u00ean VPS B\u1eb1ng Coolify &#8211; Tho\u00e1t Ph\u00ed Vercel, T\u1ef1 Ch\u1ee7 H\u1ea1 T\u1ea7ng"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 100%;\"><strong>Deploy Next.js l\u00ean VPS b\u1eb1ng Coolify<\/strong> l\u00e0 h\u01b0\u1edbng \u0111i nhi\u1ec1u dev Vi\u1ec7t Nam chuy\u1ec3n sang khi h\u00f3a \u0111\u01a1n Vercel t\u0103ng theo build minutes v\u00e0 bandwidth, ho\u1eb7c khi c\u1ea7n t\u1ef1 ch\u1ee7 h\u1ea1 t\u1ea7ng cho nhi\u1ec1u d\u1ef1 \u00e1n c\u00f9ng l\u00fac. Coolify cho b\u1ea1n giao di\u1ec7n qu\u1ea3n l\u00fd g\u1ea7n gi\u1ed1ng Vercel, nh\u01b0ng ch\u1ea1y tr\u00ean ch\u00ednh VPS c\u1ee7a b\u1ea1n. B\u00e0i vi\u1ebft n\u00e0y c\u1ee7a <a href=\"https:\/\/interdata.vn\/\">InterData<\/a> \u0111i t\u1eebng b\u01b0\u1edbc th\u1eadt, k\u00e8m l\u1ed7i th\u01b0\u1eddng g\u1eb7p v\u00e0 c\u00e1ch x\u1eed l\u00fd.<\/span><\/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\">Coolify l\u00e0 g\u00ec? V\u00ec sao deploy Next.js qua Coolify thay v\u00ec Vercel?<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section2\">Chu\u1ea9n b\u1ecb g\u00ec tr\u01b0\u1edbc khi deploy Next.js l\u00ean VPS b\u1eb1ng Coolify<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section3\">C\u00e0i \u0111\u1eb7t Coolify tr\u00ean VPS<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section4\">Tr\u1ecf domain v\u00e0 c\u1ea5u h\u00ecnh SSL t\u1ef1 \u0111\u1ed9ng cho Coolify<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section5\">Deploy Next.js t\u1eeb Git repository qua Coolify<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section6\">C\u1ea5u h\u00ecnh bi\u1ebfn m\u00f4i tr\u01b0\u1eddng \u0111\u00fang c\u00e1ch: build-time vs runtime<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section7\">Thi\u1ebft l\u1eadp auto-deploy khi push code l\u00ean GitHub<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section8\">X\u1eed l\u00fd l\u1ed7i th\u01b0\u1eddng g\u1eb7p khi deploy Next.js b\u1eb1ng Coolify<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section9\">N\u00ean ch\u1ecdn VPS hay Cloud Server \u0111\u1ec3 ch\u1ea1y Coolify?<\/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-232653106\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-232653106 {\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;\">Coolify L\u00e0 G\u00ec? V\u00ec Sao Deploy Next.js Qua Coolify Thay V\u00ec Vercel?<\/h2>\n<p style=\"text-align: justify;\">Coolify l\u00e0 ph\u1ea7n m\u1ec1m PaaS (Platform as a Service) m\u00e3 ngu\u1ed3n m\u1edf, c\u00e0i tr\u1ef1c ti\u1ebfp tr\u00ean <a href=\"https:\/\/interdata.vn\/blog\/vps-la-gi\/\">VPS<\/a> c\u1ee7a b\u1ea1n \u0111\u1ec3 build, deploy v\u00e0 qu\u1ea3n l\u00fd \u1ee9ng d\u1ee5ng qua giao di\u1ec7n web &#8211; vai tr\u00f2 g\u1ea7n gi\u1ed1ng Vercel hay Heroku, nh\u01b0ng ch\u1ea1y tr\u00ean h\u1ea1 t\u1ea7ng b\u1ea1n t\u1ef1 ki\u1ec3m so\u00e1t, kh\u00f4ng b\u1ecb gi\u1edbi h\u1ea1n theo g\u00f3i tr\u1ea3 ph\u00ed c\u1ee7a b\u00ean th\u1ee9 ba.<\/p>\n<p style=\"text-align: justify;\">C\u1ea7n ph\u00e2n bi\u1ec7t r\u00f5 ngay t\u1eeb \u0111\u1ea7u: b\u00e0i n\u00e0y h\u01b0\u1edbng d\u1eabn t\u1ef1 c\u00e0i Coolify (self-hosted) tr\u00ean VPS c\u1ee7a b\u1ea1n &#8211; m\u00e3 ngu\u1ed3n m\u1edf, kh\u00f4ng m\u1ea5t ph\u00ed b\u1ea3n quy\u1ec1n. Coolify Cloud l\u00e0 b\u1ea3n SaaS do ch\u00ednh \u0111\u1ed9i ng\u0169 Coolify v\u1eadn h\u00e0nh, t\u00ednh ph\u00ed theo th\u00e1ng v\u00e0 b\u1ea1n kh\u00f4ng c\u1ea7n qu\u1ea3n l\u00fd server. Hai m\u00f4 h\u00ecnh tri\u1ec3n khai kh\u00e1c nhau ho\u00e0n to\u00e0n d\u00f9 giao di\u1ec7n s\u1eed d\u1ee5ng gi\u1ed1ng nhau, v\u00e0 to\u00e0n b\u1ed9 b\u00e0i vi\u1ebft n\u00e0y ch\u1ec9 n\u00f3i v\u1ec1 c\u00e1ch t\u1ef1 host.<\/p>\n<p style=\"text-align: justify;\">Coolify ch\u1ea1y d\u1ef1a tr\u00ean n\u1ec1n <a href=\"https:\/\/interdata.vn\/blog\/docker-la-gi\/\">Docker<\/a>: m\u1ed7i \u1ee9ng d\u1ee5ng b\u1ea1n deploy \u0111\u01b0\u1ee3c \u0111\u00f3ng g\u00f3i th\u00e0nh container ri\u00eang, c\u00f4 l\u1eadp v\u1edbi nhau tr\u00ean c\u00f9ng m\u1ed9t VPS. \u0110\u00e2y l\u00e0 l\u00fd do Coolify c\u00f3 th\u1ec3 ch\u1ea1y nhi\u1ec1u <a href=\"https:\/\/interdata.vn\/blog\/next-js-la-gi\/\">Next.js<\/a> app, ho\u1eb7c k\u1ebft h\u1ee3p c\u1ea3 database, c\u00f9ng l\u00fac tr\u00ean m\u1ed9t m\u00e1y ch\u1ee7 m\u00e0 kh\u00f4ng xung \u0111\u1ed9t m\u00f4i tr\u01b0\u1eddng.<\/p>\n<p style=\"text-align: justify;\">So v\u1edbi Vercel, l\u00fd do ph\u1ed5 bi\u1ebfn nh\u1ea5t khi\u1ebfn dev chuy\u1ec3n sang t\u1ef1 host l\u00e0 chi ph\u00ed \u1edf quy m\u00f4 l\u1edbn: build minutes, bandwidth, s\u1ed1 l\u01b0\u1ee3ng function invocation \u0111\u1ec1u t\u00ednh ph\u00ed theo g\u00f3i, v\u00e0 t\u0103ng nhanh khi traffic ho\u1eb7c s\u1ed1 d\u1ef1 \u00e1n t\u0103ng. L\u00fd do th\u1ee9 hai l\u00e0 mu\u1ed1n ch\u1ee7 \u0111\u1ed9ng h\u1ea1 t\u1ea7ng &#8211; t\u1ef1 quy\u1ebft \u0111\u1ecbnh RAM, region, c\u00e1ch scale, thay v\u00ec ph\u1ee5 thu\u1ed9c v\u00e0o gi\u1edbi h\u1ea1n c\u1ee7a n\u1ec1n t\u1ea3ng. \u0110\u00e2y kh\u00f4ng ph\u1ea3i nh\u1eadn \u0111\u1ecbnh Vercel k\u00e9m, ch\u1ec9 l\u00e0 b\u00e0i to\u00e1n chi ph\u00ed v\u00e0 quy\u1ec1n ki\u1ec3m so\u00e1t kh\u00e1c nhau theo quy m\u00f4 s\u1eed d\u1ee5ng.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43175\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Coolify-Dashboard.png\" alt=\"Coolify Dashboard\" width=\"800\" height=\"387\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Coolify-Dashboard.png 1904w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Coolify-Dashboard-300x145.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Coolify-Dashboard-1024x495.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Coolify-Dashboard-768x371.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Coolify-Dashboard-1536x743.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/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;\">Chu\u1ea9n B\u1ecb G\u00ec Tr\u01b0\u1edbc Khi Deploy Next.js L\u00ean VPS B\u1eb1ng Coolify<\/h2>\n<p style=\"text-align: justify;\">Tr\u01b0\u1edbc khi m\u1edf dashboard Coolify, c\u1ea7n chu\u1ea9n b\u1ecb \u0111\u1ee7 4 th\u1ee9: m\u1ed9t VPS c\u00f3 quy\u1ec1n root, domain \u0111\u00e3 tr\u1ecf \u0111\u01b0\u1ee3c, source code tr\u00ean Git, v\u00e0 Next.js \u0111\u00e3 c\u1ea5u h\u00ecnh \u0111\u00fang cho m\u00f4i tr\u01b0\u1eddng container. B\u1ecf s\u00f3t b\u01b0\u1edbc c\u1ea5u h\u00ecnh Next.js l\u00e0 l\u1ed7i ph\u1ed5 bi\u1ebfn nh\u1ea5t khi\u1ebfn ng\u01b0\u1eddi m\u1edbi deploy l\u1ea7n \u0111\u1ea7u b\u1ecb k\u1eb9t.<\/p>\n<ul style=\"padding-left: 20px;\">\n<li style=\"margin-bottom: 10px;\">M\u1ed9t <a href=\"https:\/\/interdata.vn\/blog\/vps-la-gi\/\">VPS<\/a> ch\u1ea1y Ubuntu, c\u00f3 quy\u1ec1n truy c\u1eadp root qua SSH &#8211; Coolify c\u1ea7n c\u00e0i tr\u1ef1c ti\u1ebfp v\u00e0o h\u1ec7 \u0111i\u1ec1u h\u00e0nh, kh\u00f4ng ch\u1ea1y \u0111\u01b0\u1ee3c tr\u00ean hosting chia s\u1ebb.<\/li>\n<li style=\"margin-bottom: 10px;\">Domain ho\u1eb7c subdomain \u0111\u00e3 tr\u1ecf b\u1ea3n ghi A v\u1ec1 IP c\u1ee7a VPS (c\u00f3 th\u1ec3 tr\u1ecf sau khi c\u00e0i Coolify xong, nh\u01b0ng n\u00ean chu\u1ea9n b\u1ecb tr\u01b0\u1edbc \u0111\u1ec3 kh\u00f4ng m\u1ea5t th\u1eddi gian ch\u1edd DNS propagate \u1edf b\u01b0\u1edbc SSL).<\/li>\n<li style=\"margin-bottom: 10px;\">Source code Next.js \u0111\u00e3 \u0111\u1ea9y l\u00ean repository tr\u00ean <a href=\"https:\/\/interdata.vn\/blog\/github-la-gi\/\">GitHub<\/a> ho\u1eb7c GitLab &#8211; Coolify k\u00e9o code tr\u1ef1c ti\u1ebfp t\u1eeb \u0111\u00e2y \u0111\u1ec3 build.<\/li>\n<li style=\"margin-bottom: 10px;\">\u1ee8ng d\u1ee5ng \u0111\u00e3 ch\u1ea1y \u0111\u01b0\u1ee3c l\u1ec7nh <code>npm run build<\/code> th\u00e0nh c\u00f4ng \u1edf m\u00e1y local. N\u1ebfu build l\u1ed7i \u1edf local, Coolify c\u0169ng s\u1ebd l\u1ed7i y h\u1ec7t, ch\u1ec9 kh\u00e1c l\u00e0 kh\u00f3 debug h\u01a1n v\u00ec ph\u1ea3i \u0111\u1ecdc log trong container.<\/li>\n<li style=\"margin-bottom: 10px;\">N\u1ebfu \u0111\u1ecbnh d\u00f9ng build pack Dockerfile (ph\u1ea7n sau s\u1ebd so s\u00e1nh), file <code>next.config.js<\/code> c\u1ea7n th\u00eam <code>output: 'standalone'<\/code> \u0111\u1ec3 Next.js xu\u1ea5t ra b\u1ea3n build g\u1ecdn, ch\u1ec9 ch\u1ee9a \u0111\u00fang file c\u1ea7n thi\u1ebft cho runtime.<\/li>\n<li style=\"margin-bottom: 10px;\">Danh s\u00e1ch c\u00e1c bi\u1ebfn m\u00f4i tr\u01b0\u1eddng \u1ee9ng d\u1ee5ng c\u1ea7n, \u0111\u1eb7c bi\u1ec7t ph\u00e2n lo\u1ea1i r\u00f5 bi\u1ebfn n\u00e0o c\u00f3 ti\u1ec1n t\u1ed1 <code>NEXT_PUBLIC_<\/code> &#8211; ph\u1ea7n n\u00e0y s\u1ebd quy\u1ebft \u0111\u1ecbnh app ch\u1ea1y \u0111\u00fang hay sai \u1edf b\u01b0\u1edbc sau.<\/li>\n<\/ul>\n<p><!-- BOX CTA #1 - VPS --><\/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 m\u1ed9t VPS c\u00f3 root access \u0111\u1ec3 c\u00e0i Coolify?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">Coolify ch\u1ec9 c\u00e0i \u0111\u01b0\u1ee3c tr\u00ean m\u00e1y ch\u1ee7 c\u00f3 to\u00e0n quy\u1ec1n root, vi\u1ec7c hosting chia s\u1ebb kh\u00f4ng \u0111\u00e1p \u1ee9ng \u0111\u01b0\u1ee3c. VPS InterData cho b\u1ea1n quy\u1ec1n root ngay t\u1eeb \u0111\u1ea7u, ch\u1ed1ng DDoS c\u01a1 b\u1ea3n \u0111i k\u00e8m, v\u00e0 \u0111\u1ed9i k\u1ef9 thu\u1eadt h\u1ed7 tr\u1ee3 n\u1ebfu qu\u00e1 tr\u00ecnh c\u00e0i \u0111\u1eb7t g\u1eb7p v\u01b0\u1edbng m\u1eafc v\u1ec1 network hay firewall.<\/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 c\u00e1c g\u00f3i VPS Gi\u00e1 T\u1ed1t \u27f6<\/a><\/p>\n<\/div>\n<\/div>\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;\">C\u00e0i \u0110\u1eb7t Coolify Tr\u00ean VPS<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: bold; margin: 25px 0 12px;\">Y\u00eau c\u1ea7u tr\u01b0\u1edbc khi c\u00e0i<\/h3>\n<p style=\"text-align: justify;\">Coolify t\u1ef1 c\u00e0i Docker v\u00e0 c\u00e1c dependency c\u1ea7n thi\u1ebft trong qu\u00e1 tr\u00ecnh ch\u1ea1y script, n\u00ean b\u1ea1n kh\u00f4ng c\u1ea7n c\u00e0i <a href=\"https:\/\/interdata.vn\/blog\/docker-la-gi\/\">Docker<\/a> th\u1ee7 c\u00f4ng tr\u01b0\u1edbc. \u0110i\u1ec1u ki\u1ec7n th\u1ef1c t\u1ebf l\u00e0 VPS ch\u1ea1y Ubuntu (khuy\u1ebfn ngh\u1ecb b\u1ea3n LTS), c\u00f3 k\u1ebft n\u1ed1i internet \u1ed5n \u0111\u1ecbnh \u0111\u1ec3 t\u1ea3i image, v\u00e0 \u0111\u1ee7 RAM \u0111\u1ec3 c\u1ea3 Coolify l\u1eabn \u1ee9ng d\u1ee5ng build c\u00f9ng l\u00fac &#8211; Next.js build th\u01b0\u1eddng n\u1eb7ng h\u01a1n l\u00fac ch\u1ea1y runtime, n\u00ean n\u1ebfu VPS c\u1ea5u h\u00ecnh th\u1ea5p, n\u00ean th\u1eed build th\u1eed m\u1ed9t l\u1ea7n tr\u01b0\u1edbc khi \u0111\u01b0a v\u00e0o production thay v\u00ec suy \u0111o\u00e1n con s\u1ed1 c\u1ee5 th\u1ec3.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: bold; margin: 25px 0 12px;\">Ch\u1ea1y script c\u00e0i \u0111\u1eb7t<\/h3>\n<p style=\"text-align: justify;\">SSH v\u00e0o VPS v\u1edbi quy\u1ec1n root, r\u1ed3i ch\u1ea1y script c\u00e0i \u0111\u1eb7t ch\u00ednh th\u1ee9c c\u1ee7a Coolify:<\/p>\n<pre><code>curl -fsSL https:\/\/cdn.coollabs.io\/coolify\/install.sh | sudo bash<\/code><\/pre>\n<p style=\"text-align: justify;\">Script s\u1ebd t\u1ef1 c\u00e0i Docker, k\u00e9o c\u00e1c image c\u1ea7n thi\u1ebft v\u00e0 kh\u1edfi \u0111\u1ed9ng Coolify. Qu\u00e1 tr\u00ecnh n\u00e0y m\u1ea5t v\u00e0i ph\u00fat t\u00f9y t\u1ed1c \u0111\u1ed9 m\u1ea1ng c\u1ee7a VPS. N\u1ebfu b\u1ea1n mu\u1ed1n xem chi ti\u1ebft t\u1eebng b\u01b0\u1edbc c\u00e0i tr\u00ean Ubuntu, tham kh\u1ea3o th\u00eam <a href=\"https:\/\/interdata.vn\/blog\/cach-cai-coolify-tren-ubuntu\/\">h\u01b0\u1edbng d\u1eabn c\u00e1ch c\u00e0i \u0111\u1eb7t Coolify tr\u00ean Ubuntu<\/a> c\u1ee7a InterData.<\/p>\n<figure id=\"attachment_43173\" aria-describedby=\"caption-attachment-43173\" style=\"width: 800px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-43173\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Chay-script-cai-dat-Coolify.png\" alt=\"Ch\u1ea1y script c\u00e0i \u0111\u1eb7t Coolify\" width=\"800\" height=\"518\" title=\"\"><figcaption id=\"caption-attachment-43173\" class=\"wp-caption-text\">Ch\u1ea1y script c\u00e0i \u0111\u1eb7t Coolify<\/figcaption><\/figure>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: bold; margin: 25px 0 12px;\">Truy c\u1eadp dashboard l\u1ea7n \u0111\u1ea7u<\/h3>\n<p style=\"text-align: justify;\">Sau khi script ch\u1ea1y xong, m\u1edf tr\u00ecnh duy\u1ec7t v\u00e0 truy c\u1eadp <code>http:\/\/IP-VPS-CUA-BAN:8000<\/code> \u0111\u1ec3 v\u00e0o dashboard Coolify. L\u1ea7n \u0111\u1ea7u v\u00e0o, b\u1ea1n t\u1ea1o t\u00e0i kho\u1ea3n admin, sau \u0111\u00f3 Coolify s\u1ebd d\u1eabn qua b\u01b0\u1edbc c\u1ea5u h\u00ecnh &#8220;Server&#8221; &#8211; ch\u00ednh l\u00e0 VPS b\u1ea1n v\u1eeba c\u00e0i, \u0111\u1ec3 Coolify bi\u1ebft n\u01a1i tri\u1ec3n khai container.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43174\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Truy-cap-Coolify-Dashboard.png\" alt=\"Truy c\u1eadp Coolify Dashboard\" width=\"800\" height=\"559\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Truy-cap-Coolify-Dashboard.png 1374w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Truy-cap-Coolify-Dashboard-300x210.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Truy-cap-Coolify-Dashboard-1024x715.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/08\/Truy-cap-Coolify-Dashboard-768x537.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\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;\">Tr\u1ecf Domain V\u00e0 C\u1ea5u H\u00ecnh SSL T\u1ef1 \u0110\u1ed9ng Cho Coolify<\/h2>\n<p style=\"text-align: justify;\">Coolify d\u00f9ng Traefik l\u00e0m reverse proxy m\u1eb7c \u0111\u1ecbnh, kh\u00f4ng ph\u1ea3i <a href=\"https:\/\/interdata.vn\/blog\/nginx-la-gi\/\">Nginx<\/a> nh\u01b0 nhi\u1ec1u h\u01b0\u1edbng d\u1eabn t\u1ef1 c\u1ea5u h\u00ecnh VPS th\u1ee7 c\u00f4ng v\u1eabn d\u00f9ng. Vai tr\u00f2 th\u00ec gi\u1ed1ng nhau &#8211; \u0111i\u1ec1u h\u01b0\u1edbng traffic t\u1eeb domain v\u00e0o \u0111\u00fang container \u1ee9ng d\u1ee5ng &#8211; nh\u01b0ng Traefik \u0111\u01b0\u1ee3c Coolify t\u00edch h\u1ee3p s\u1eb5n, t\u1ef1 \u0111\u1ed9ng ph\u00e1t hi\u1ec7n container m\u1edbi v\u00e0 c\u1ea5p ch\u1ee9ng ch\u1ec9 SSL m\u00e0 b\u1ea1n kh\u00f4ng c\u1ea7n ch\u1ec9nh file c\u1ea5u h\u00ecnh b\u1eb1ng tay.<\/p>\n<p style=\"text-align: justify;\">\u0110\u1ec3 domain tr\u1ecf \u0111\u00fang, v\u00e0o ph\u1ea7n qu\u1ea3n l\u00fd DNS c\u1ee7a domain, t\u1ea1o b\u1ea3n ghi A tr\u1ecf v\u1ec1 IP VPS. Sau khi DNS \u0111\u00e3 propagate (ki\u1ec3m tra b\u1eb1ng l\u1ec7nh <code>ping domain-cua-ban.com<\/code> th\u1ea5y \u0111\u00fang IP), v\u00e0o Application trong Coolify, g\u00e1n domain \u1edf m\u1ee5c Domains, Coolify s\u1ebd t\u1ef1 \u0111\u1ed9ng g\u1ecdi <a href=\"https:\/\/interdata.vn\/blog\/lets-encrypt-la-gi\/\">Let&#8217;s Encrypt<\/a> \u0111\u1ec3 c\u1ea5p SSL mi\u1ec5n ph\u00ed qua Traefik, kh\u00f4ng c\u1ea7n thao t\u00e1c th\u1ee7 c\u00f4ng nh\u01b0 khi t\u1ef1 c\u1ea5u h\u00ecnh Certbot.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43488\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-1.png\" alt=\"G\u00e1n domain v\u00e0o Coolify 1\" width=\"800\" height=\"182\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-1.png 1901w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-1-300x68.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-1-1024x233.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-1-768x175.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-1-1536x349.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43487\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-2.png\" alt=\"G\u00e1n domain v\u00e0o Coolify 2\" width=\"800\" height=\"424\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-2.png 867w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-2-300x159.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Gan-domain-vao-Coolify-2-768x407.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: justify;\"><strong>\u0110i\u1ec3m hay b\u1ecb b\u1ecf s\u00f3t:<\/strong> SSL ch\u1ec9 c\u1ea5p \u0111\u01b0\u1ee3c khi domain \u0111\u00e3 th\u1eadt s\u1ef1 ph\u00e2n gi\u1ea3i \u0111\u00fang IP t\u1ea1i th\u1eddi \u0111i\u1ec3m Coolify g\u1ecdi Let&#8217;s Encrypt. G\u00e1n domain qu\u00e1 s\u1edbm, l\u00fac DNS ch\u01b0a propagate xong, Coolify s\u1ebd b\u00e1o l\u1ed7i c\u1ea5p SSL th\u1ea5t b\u1ea1i &#8211; c\u00e1ch x\u1eed l\u00fd \u0111\u01a1n gi\u1ea3n l\u00e0 \u0111\u1ee3i DNS \u1ed5n \u0111\u1ecbnh r\u1ed3i b\u1ea5m c\u1ea5p l\u1ea1i ch\u1ee9ng ch\u1ec9 trong Coolify, kh\u00f4ng c\u1ea7n c\u1ea5u h\u00ecnh g\u00ec th\u00eam.<\/p>\n<p><!-- BOX CTA #2 - CANH ME --><\/p>\n<div style=\"background: linear-gradient(135deg, #EFF6FF 0%, #DBEAFE 100%); border: 1.5px solid #2563EB; border-radius: 12px; padding: 28px; margin: 35px 0; text-align: center;\">\n<p style=\"font-family: 'Be Vietnam Pro', sans-serif; font-size: 22px; font-weight: bold; color: #1e3a8a; margin: 0 0 8px;\">S\u0103n \u01afu \u0110\u00e3i VPS &amp; Cloud Server Ti\u1ebft Ki\u1ec7m<\/p>\n<p style=\"font-size: 15px; color: #4b5563; margin-bottom: 20px;\">Canh Me t\u1ed5ng h\u1ee3p khuy\u1ebfn m\u00e3i, m\u00e3 gi\u1ea3m gi\u00e1, th\u1eddi gian \u00e1p d\u1ee5ng v\u00e0 \u0111i\u1ec1u ki\u1ec7n \u0111\u0103ng k\u00fd m\u1edbi nh\u1ea5t c\u1ee7a InterData &#8211; xem tr\u01b0\u1edbc \u0111\u1ec3 ch\u1ecdn c\u1ea5u h\u00ecnh c\u00e0i Coolify v\u1edbi chi ph\u00ed t\u1ed1t nh\u1ea5t tr\u01b0\u1edbc khi \u0111\u0103ng k\u00fd.<\/p>\n<p><a style=\"background: #2563EB; color: #fff; padding: 12px 30px; text-decoration: none; font-weight: 600; border-radius: 8px; display: inline-block;\" href=\"https:\/\/interdata.vn\/canhme\/\" target=\"_blank\" rel=\"noopener\">Xem \u01afu \u0110\u00e3i VPS &amp; Cloud Server Ngay \u27f6<\/a><\/p>\n<\/div>\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;\">Deploy Next.js T\u1eeb Git Repository Qua Coolify<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: bold; margin: 25px 0 12px;\">T\u1ea1o Application m\u1edbi<\/h3>\n<p style=\"text-align: justify;\">Trong <strong>dashboard<\/strong>, ch\u1ecdn <strong>Project<\/strong> r\u1ed3i b\u1ea5m <strong>&#8220;New Resource&#8221;<\/strong> &gt; <strong>&#8220;Application&#8221;<\/strong>. Coolify h\u1ed7 tr\u1ee3 k\u1ebft n\u1ed1i tr\u1ef1c ti\u1ebfp <a href=\"https:\/\/interdata.vn\/blog\/github-la-gi\/\">GitHub<\/a> qua GitHub App (khuy\u1ebfn ngh\u1ecb, v\u00ec cho ph\u00e9p ch\u1ecdn \u0111\u00fang repo c\u1ea7n quy\u1ec1n truy c\u1eadp thay v\u00ec c\u1ea5p to\u00e0n b\u1ed9 t\u00e0i kho\u1ea3n), ho\u1eb7c k\u1ebft n\u1ed1i b\u1eb1ng Deploy Key cho repo private kh\u00f4ng mu\u1ed1n c\u00e0i App. Sau khi ch\u1ecdn repo v\u00e0 branch, Coolify chuy\u1ec3n sang b\u01b0\u1edbc ch\u1ecdn build pack.<\/p>\n<p><strong>B\u01b0\u1edbc 1: T\u1ea1o Project<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43482\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-1.png\" alt=\"Deploy Nextjs T\u1eeb Git Repository Qua Coolify 1\" width=\"800\" height=\"219\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-1.png 1908w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-1-300x82.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-1-1024x281.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-1-768x211.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-1-1536x421.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43481\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-2.png\" alt=\"Deploy Nextjs T\u1eeb Git Repository Qua Coolify 2\" width=\"800\" height=\"336\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-2.png 886w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-2-300x126.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-2-768x322.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><strong>B\u01b0\u1edbc 2: Th\u00eam Resouces<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43480\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-3.png\" alt=\"Deploy Nextjs T\u1eeb Git Repository Qua Coolify 3\" width=\"800\" height=\"242\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-3.png 1889w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-3-300x91.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-3-1024x310.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-3-768x233.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-3-1536x465.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43479\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-4.png\" alt=\"Deploy Nextjs T\u1eeb Git Repository Qua Coolify 4\" width=\"800\" height=\"349\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-4.png 1907w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-4-300x131.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-4-1024x446.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-4-768x335.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Deploy-Nextjs-Tu-Git-Repository-Qua-Coolify-4-1536x669.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: bold; margin: 25px 0 12px;\">Ch\u1ecdn build pack: Nixpacks hay Dockerfile?<\/h3>\n<p style=\"text-align: justify;\">\u0110\u00e2y l\u00e0 quy\u1ebft \u0111\u1ecbnh \u1ea3nh h\u01b0\u1edfng tr\u1ef1c ti\u1ebfp \u0111\u1ebfn t\u1ed1c \u0111\u1ed9 build, dung l\u01b0\u1ee3ng image v\u00e0 m\u1ee9c ki\u1ec3m so\u00e1t b\u1ea1n c\u00f3.<\/p>\n<p style=\"text-align: justify;\">Nixpacks t\u1ef1 nh\u1eadn di\u1ec7n Next.js v\u00e0 ch\u1ea1y build m\u00e0 kh\u00f4ng c\u1ea7n b\u1ea1n vi\u1ebft g\u00ec th\u00eam ph\u00f9 h\u1ee3p n\u1ebfu b\u1ea1n mu\u1ed1n deploy nhanh v\u00e0 kh\u00f4ng c\u1ea7n t\u1ed1i \u01b0u s\u00e2u.<\/p>\n<p style=\"text-align: justify;\">Dockerfile \u0111\u00f2i h\u1ecfi b\u1ea1n t\u1ef1 vi\u1ebft multi-stage build, nh\u01b0ng cho image g\u1ecdn h\u01a1n v\u00e0 ki\u1ec3m so\u00e1t r\u00f5 t\u1eebng b\u01b0\u1edbc, \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch khi k\u1ebft h\u1ee3p v\u1edbi <code>output: 'standalone'<\/code> c\u1ee7a Next.js.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 15px 0;\">\n<tbody>\n<tr style=\"background-color: #eff6ff;\">\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">Ti\u00eau ch\u00ed<\/th>\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">Nixpacks<\/th>\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">Dockerfile (standalone)<\/th>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Thi\u1ebft l\u1eadp ban \u0111\u1ea7u<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Kh\u00f4ng c\u1ea7n vi\u1ebft g\u00ec, t\u1ef1 nh\u1eadn di\u1ec7n framework<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">C\u1ea7n t\u1ef1 vi\u1ebft Dockerfile multi-stage<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Dung l\u01b0\u1ee3ng image<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Th\u01b0\u1eddng l\u1edbn h\u01a1n do gi\u1eef nguy\u00ean node_modules \u0111\u1ea7y \u0111\u1ee7<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">G\u1ecdn h\u01a1n nh\u1edd standalone output ch\u1ec9 copy file c\u1ea7n thi\u1ebft<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Ki\u1ec3m so\u00e1t build<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">H\u1ea1n ch\u1ebf, ph\u1ee5 thu\u1ed9c c\u00e1ch Nixpacks t\u1ef1 suy lu\u1eadn<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">To\u00e0n quy\u1ec1n: ch\u1ecdn base image, cache layer, b\u01b0\u1edbc build<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Ph\u00f9 h\u1ee3p v\u1edbi<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Deploy nhanh, d\u1ef1 \u00e1n \u0111\u01a1n gi\u1ea3n, m\u1edbi b\u1eaft \u0111\u1ea7u v\u1edbi Coolify<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Production nhi\u1ec1u traffic, c\u1ea7n image nh\u1eb9 v\u00e0 build \u1ed5n \u0111\u1ecbnh l\u00e2u d\u00e0i<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">N\u1ebfu ch\u1ec9 deploy th\u1eed ho\u1eb7c d\u1ef1 \u00e1n c\u00e1 nh\u00e2n nh\u1ecf, Nixpacks \u0111\u1ee7 d\u00f9ng v\u00e0 ti\u1ebft ki\u1ec7m th\u1eddi gian thi\u1ebft l\u1eadp. V\u1edbi \u1ee9ng d\u1ee5ng ch\u1ea1y production th\u1eadt, \u0111\u1eb7c bi\u1ec7t khi \u0111\u1ecbnh ch\u1ea1y nhi\u1ec1u app tr\u00ean c\u00f9ng m\u1ed9t Coolify instance, Dockerfile v\u1edbi standalone output \u0111\u00e1ng \u0111\u1ea7u t\u01b0 h\u01a1n &#8211; image nh\u1eb9 gi\u00fap deploy nhanh h\u01a1n v\u00e0 t\u1ed1n \u00edt t\u00e0i nguy\u00ean h\u01a1n \u1edf m\u1ed7i l\u1ea7n build.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43483\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chon-build-pack.png\" alt=\"Ch\u1ecdn build pack\" width=\"800\" height=\"343\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chon-build-pack.png 1903w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chon-build-pack-300x128.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chon-build-pack-1024x439.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chon-build-pack-768x329.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Chon-build-pack-1536x658.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: justify;\">So v\u1edbi vi\u1ec7c t\u1ef1 c\u1ea5u h\u00ecnh h\u1ea1 t\u1ea7ng b\u1eb1ng tay, d\u01b0\u1edbi \u0111\u00e2y l\u00e0 so s\u00e1nh t\u1ed5ng quan \u0111\u1ec3 d\u1ec5 h\u00ecnh dung Coolify \u0111\u1ee9ng \u1edf \u0111\u00e2u:<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 15px 0;\">\n<tbody>\n<tr style=\"background-color: #eff6ff;\">\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">Ti\u00eau ch\u00ed<\/th>\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">Coolify (self-host)<\/th>\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">Vercel<\/th>\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">T\u1ef1 c\u1ea5u h\u00ecnh Nginx\/PM2<\/th>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Chi ph\u00ed<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Ch\u1ec9 tr\u1ea3 ti\u1ec1n VPS, kh\u00f4ng t\u00ednh theo build\/bandwidth<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Mi\u1ec5n ph\u00ed \u1edf quy m\u00f4 nh\u1ecf, t\u0103ng theo build minutes\/bandwidth<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Ch\u1ec9 tr\u1ea3 ti\u1ec1n VPS, kh\u00f4ng ph\u00ed ph\u1ea7n m\u1ec1m<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">SSL, domain<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">T\u1ef1 \u0111\u1ed9ng qua Traefik + Let&#8217;s Encrypt<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">T\u1ef1 \u0111\u1ed9ng, t\u00edch h\u1ee3p s\u1eb5n<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">T\u1ef1 c\u1ea5u h\u00ecnh Certbot th\u1ee7 c\u00f4ng<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Auto deploy khi push code<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">C\u00f3, qua webhook t\u00edch h\u1ee3p s\u1eb5n<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">C\u00f3, m\u1eb7c \u0111\u1ecbnh<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Ph\u1ea3i t\u1ef1 vi\u1ebft script CI\/CD<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Th\u1eddi gian thi\u1ebft l\u1eadp ban \u0111\u1ea7u<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Trung b\u00ecnh &#8211; c\u00e0i Coolify r\u1ed3i k\u1ebft n\u1ed1i repo<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">R\u1ea5t nhanh, g\u1ea7n nh\u01b0 kh\u00f4ng c\u1ea5u h\u00ecnh<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">L\u00e2u nh\u1ea5t, t\u1ef1 tay t\u1eebng b\u01b0\u1edbc<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\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;\">C\u1ea5u H\u00ecnh Bi\u1ebfn M\u00f4i Tr\u01b0\u1eddng \u0110\u00fang C\u00e1ch: Build-Time Vs Runtime<\/h2>\n<p style=\"text-align: justify;\">L\u1ed7i bi\u1ebfn m\u00f4i tr\u01b0\u1eddng <code>NEXT_PUBLIC_*<\/code> r\u1ed7ng sau khi deploy l\u00e0 l\u1ed7i g\u1eb7p nhi\u1ec1u nh\u1ea5t khi d\u00f9ng Coolify v\u1edbi Next.js. Nguy\u00ean nh\u00e2n: Next.js &#8220;n\u01b0\u1edbng&#8221; c\u00e1c bi\u1ebfn c\u00f3 ti\u1ec1n t\u1ed1 <code>NEXT_PUBLIC_<\/code> th\u1eb3ng v\u00e0o bundle JavaScript ngay l\u00fac ch\u1ea1y <code>next build<\/code>, kh\u00f4ng ph\u1ea3i l\u00fac container kh\u1edfi \u0111\u1ed9ng ch\u1ea1y runtime.<\/p>\n<p style=\"text-align: justify;\">Trong Coolify, ph\u1ea7n Environment Variables c\u00f3 hai lo\u1ea1i: Runtime Variables (ch\u1ec9 inject v\u00e0o container l\u00fac container start) v\u00e0 Build Variables (c\u00f3 m\u1eb7t trong qu\u00e1 tr\u00ecnh build image). N\u1ebfu b\u1ea1n ch\u1ec9 khai b\u00e1o <code>NEXT_PUBLIC_API_URL<\/code> \u1edf Runtime Variables m\u00e0 qu\u00ean b\u1eadt c\u1edd kh\u1ea3 d\u1ee5ng l\u00fac build, \u1ee9ng d\u1ee5ng v\u1eabn ch\u1ea1y b\u00ecnh th\u01b0\u1eddng, kh\u00f4ng b\u00e1o l\u1ed7i g\u00ec &#8211; nh\u01b0ng gi\u00e1 tr\u1ecb bi\u1ebfn \u0111\u00f3 trong bundle client s\u1ebd l\u00e0 chu\u1ed7i r\u1ed7ng, v\u00ec l\u00fac build kh\u00f4ng c\u00f3 n\u00f3.<\/p>\n<p style=\"text-align: justify;\">C\u00e1ch x\u1eed l\u00fd trong Coolify: khi th\u00eam bi\u1ebfn m\u00f4i tr\u01b0\u1eddng cho Application, b\u1eadt t\u00f9y ch\u1ecdn \u0111\u00e1nh d\u1ea5u bi\u1ebfn \u0111\u00f3 kh\u1ea3 d\u1ee5ng \u1edf b\u01b0\u1edbc build (th\u01b0\u1eddng hi\u1ec3n th\u1ecb d\u1ea1ng &#8220;Is Build Variable?&#8221; ho\u1eb7c &#8220;Available at Buildtime&#8221; t\u00f9y phi\u00ean b\u1ea3n Coolify v4). V\u1edbi m\u1ecdi bi\u1ebfn <code>NEXT_PUBLIC_<\/code>, lu\u00f4n b\u1eadt t\u00f9y ch\u1ecdn n\u00e0y &#8211; n\u1ebfu kh\u00f4ng, d\u00f9 set \u0111\u00fang gi\u00e1 tr\u1ecb \u1edf Runtime, bundle v\u1eabn kh\u00f4ng nh\u1eadn \u0111\u01b0\u1ee3c.<\/p>\n<p style=\"text-align: justify;\">N\u1ebfu b\u1ea1n d\u00f9ng build pack Dockerfile t\u1ef1 vi\u1ebft thay v\u00ec Nixpacks, c\u00f2n m\u1ed9t b\u01b0\u1edbc n\u1eefa d\u1ec5 b\u1ecb b\u1ecf s\u00f3t: Nixpacks t\u1ef1 \u0111\u1ed9ng truy\u1ec1n Build Variables c\u1ee7a Coolify v\u00e0o qu\u00e1 tr\u00ecnh build, nh\u01b0ng Dockerfile t\u1ef1 vi\u1ebft th\u00ec kh\u00f4ng t\u1ef1 \u0111\u1ed9ng &#8211; b\u1ea1n ph\u1ea3i khai b\u00e1o r\u00f5 trong Dockerfile:<\/p>\n<pre><code>ARG NEXT_PUBLIC_API_URL\r\nENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL\r\n\r\nRUN npm run build<\/code><\/pre>\n<p style=\"text-align: justify;\">Thi\u1ebfu c\u1eb7p <code>ARG<\/code>\/<code>ENV<\/code> n\u00e0y, Coolify c\u00f3 set \u0111\u00fang Build Variable \u1edf giao di\u1ec7n c\u0169ng v\u00f4 ngh\u0129a, v\u00ec Docker build stage kh\u00f4ng bi\u1ebft truy\u1ec1n gi\u00e1 tr\u1ecb \u0111\u00f3 v\u00e0o \u0111\u00e2u. \u0110\u00e2y l\u00e0 \u0111i\u1ec3m kh\u00e1c bi\u1ec7t th\u1ef1c t\u1ebf gi\u1eefa hai build pack m\u00e0 nhi\u1ec1u h\u01b0\u1edbng d\u1eabn kh\u00f4ng n\u00f3i t\u1edbi.<\/p>\n<p style=\"text-align: justify;\">V\u1edbi bi\u1ebfn kh\u00f4ng c\u00f3 ti\u1ec1n t\u1ed1 <code>NEXT_PUBLIC_<\/code> &#8211; v\u00ed d\u1ee5 connection string database d\u00f9ng ph\u00eda server &#8211; ch\u1ec9 c\u1ea7n khai b\u00e1o Runtime Variables l\u00e0 \u0111\u1ee7, v\u00ec c\u00e1c bi\u1ebfn n\u00e0y \u0111\u01b0\u1ee3c \u0111\u1ecdc l\u00fac ch\u1ea1y trong Server Components ho\u1eb7c API Routes, kh\u00f4ng b\u1ecb \u0111\u00f3ng c\u1ee9ng v\u00e0o bundle client.<\/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;\">Thi\u1ebft L\u1eadp Auto-Deploy Khi Push Code L\u00ean GitHub<\/h2>\n<p>Coolify h\u1ed7 tr\u1ee3 t\u1ef1 \u0111\u1ed9ng tri\u1ec3n khai m\u1ed7i khi repository c\u00f3 code m\u1edbi. Sau khi c\u1ea5u h\u00ecnh webhook, m\u1ed7i l\u1ea7n b\u1ea1n push code l\u00ean branch \u0111ang \u0111\u01b0\u1ee3c Application s\u1eed d\u1ee5ng, GitHub s\u1ebd g\u1eedi s\u1ef1 ki\u1ec7n \u0111\u1ebfn Coolify. Coolify sau \u0111\u00f3 t\u1ef1 \u0111\u1ed9ng l\u1ea5y phi\u00ean b\u1ea3n code m\u1edbi, build v\u00e0 deploy l\u1ea1i Application m\u00e0 kh\u00f4ng c\u1ea7n nh\u1ea5n <strong>Deploy<\/strong> th\u1ee7 c\u00f4ng.<\/p>\n<p>\u0110\u1ec3 thi\u1ebft l\u1eadp, trong Coolify h\u00e3y m\u1edf Application c\u1ea7n c\u1ea5u h\u00ecnh, sau \u0111\u00f3 v\u00e0o <strong>Webhooks<\/strong>. T\u1ea1i ph\u1ea7n <strong>Manual Git webhooks \u2192 GitHub<\/strong>, Coolify cung c\u1ea5p hai th\u00f4ng tin c\u1ea7n thi\u1ebft:<\/p>\n<ul>\n<li><strong>Webhook URL:<\/strong> \u0111\u1ecba ch\u1ec9 \u0111\u1ec3 GitHub g\u1eedi s\u1ef1 ki\u1ec7n push \u0111\u1ebfn Coolify.<\/li>\n<li><strong>Webhook secret:<\/strong> chu\u1ed7i b\u00ed m\u1eadt d\u00f9ng \u0111\u1ec3 x\u00e1c th\u1ef1c webhook gi\u1eefa GitHub v\u00e0 Coolify.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43492\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-1-1.png\" alt=\"Thi\u1ebft L\u1eadp Auto-Deploy Khi Push Code L\u00ean GitHub 1\" width=\"1000\" height=\"448\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-1-1.png 1870w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-1-1-300x134.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-1-1-1024x458.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-1-1-768x344.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-1-1-1536x688.png 1536w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Ti\u1ebfp theo, m\u1edf repository t\u01b0\u01a1ng \u1ee9ng tr\u00ean GitHub v\u00e0 truy c\u1eadp <strong>Settings \u2192 Webhooks \u2192 Add webhook<\/strong>. T\u1ea1i \u0111\u00e2y, c\u1ea5u h\u00ecnh nh\u01b0 sau:<\/p>\n<ul>\n<li><strong>Payload URL:<\/strong> d\u00e1n <strong>Webhook URL<\/strong> l\u1ea5y t\u1eeb m\u1ee5c <strong>Manual Git webhooks \u2192 GitHub<\/strong> c\u1ee7a Coolify.<\/li>\n<li><strong>Content type:<\/strong> ch\u1ecdn <code>application\/json<\/code>.<\/li>\n<li><strong>Secret:<\/strong> d\u00e1n ch\u00ednh x\u00e1c <strong>Webhook secret<\/strong> \u0111\u01b0\u1ee3c Coolify cung c\u1ea5p.<\/li>\n<li><strong>Events:<\/strong> ch\u1ecdn <strong>Just the push event<\/strong>.<\/li>\n<li><strong>Active:<\/strong> b\u1eadt \u0111\u1ec3 webhook b\u1eaft \u0111\u1ea7u ho\u1ea1t \u0111\u1ed9ng.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43491\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-2.png\" alt=\"Thi\u1ebft L\u1eadp Auto-Deploy Khi Push Code L\u00ean GitHub 2\" width=\"1000\" height=\"578\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-2.png 1530w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-2-300x173.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-2-1024x592.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Thiet-Lap-Auto-Deploy-Khi-Push-Code-Len-GitHub-2-768x444.png 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Sau \u0111\u00f3 nh\u1ea5n <strong>Add webhook<\/strong> \u0111\u1ec3 ho\u00e0n t\u1ea5t. T\u1eeb l\u1ea7n push code ti\u1ebfp theo l\u00ean branch \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh cho Application, GitHub s\u1ebd g\u1eedi s\u1ef1 ki\u1ec7n \u0111\u1ebfn endpoint webhook v\u00e0 Coolify s\u1ebd t\u1ef1 \u0111\u1ed9ng k\u00edch ho\u1ea1t qu\u00e1 tr\u00ecnh build, deploy phi\u00ean b\u1ea3n m\u1edbi.<\/p>\n<p><strong>L\u01b0u \u00fd:<\/strong> kh\u00f4ng s\u1eed d\u1ee5ng URL trong m\u1ee5c <strong>Deploy webhook<\/strong> l\u00e0m Payload URL c\u1ee7a GitHub. URL n\u00e0y d\u00f9ng \u0111\u1ec3 k\u00edch ho\u1ea1t deployment tr\u1ef1c ti\u1ebfp th\u00f4ng qua API ho\u1eb7c c\u00e1c c\u00f4ng c\u1ee5 automation. V\u1edbi GitHub, h\u00e3y s\u1eed d\u1ee5ng URL t\u1ea1i <strong>Manual Git webhooks \u2192 GitHub \u2192 Webhook URL<\/strong>.<\/p>\n<p>Sau khi c\u1ea5u h\u00ecnh, b\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m tra webhook t\u1ea1i <strong>GitHub \u2192 Settings \u2192 Webhooks \u2192 Recent Deliveries<\/strong>. N\u1ebfu request tr\u1ea3 v\u1ec1 m\u00e3 HTTP <code>2xx<\/code> v\u00e0 Coolify xu\u1ea5t hi\u1ec7n deployment m\u1edbi trong <strong>Deployment Logs<\/strong>, Auto-Deploy \u0111\u00e3 ho\u1ea1t \u0111\u1ed9ng th\u00e0nh c\u00f4ng.<\/p>\n<p>V\u1edbi d\u1ef1 \u00e1n c\u00f3 nhi\u1ec1u m\u00f4i tr\u01b0\u1eddng nh\u01b0 <strong>staging<\/strong> v\u00e0 <strong>production<\/strong>, n\u00ean t\u1ea1o Application ri\u00eang cho t\u1eebng branch t\u01b0\u01a1ng \u1ee9ng. C\u00e1ch n\u00e0y gi\u00fap c\u1ea5u h\u00ecnh Environment Variables, l\u1ecbch s\u1eed deployment v\u00e0 quy tr\u00ecnh rollback c\u1ee7a t\u1eebng m\u00f4i tr\u01b0\u1eddng \u0111\u01b0\u1ee3c t\u00e1ch bi\u1ec7t, h\u1ea1n ch\u1ebf deploy nh\u1ea7m phi\u00ean b\u1ea3n l\u00ean production.<\/p>\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 Deploy Next.js B\u1eb1ng Coolify<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: bold; margin: 25px 0 12px;\">Build fail, tho\u00e1t ti\u1ebfn tr\u00ecnh \u0111\u1ed9t ng\u1ed9t<\/h3>\n<p style=\"text-align: justify;\">Th\u01b0\u1eddng do VPS kh\u00f4ng \u0111\u1ee7 RAM cho qu\u00e1 tr\u00ecnh build. Next.js build (\u0111\u1eb7c bi\u1ec7t v\u1edbi nhi\u1ec1u route, \u1ea3nh, ho\u1eb7c d\u1ef1 \u00e1n l\u1edbn) t\u1ed1n RAM h\u01a1n h\u1eb3n l\u00fac app ch\u1ea1y runtime b\u00ecnh th\u01b0\u1eddng. C\u00e1ch x\u1eed l\u00fd nhanh nh\u1ea5t l\u00e0 th\u00eam swap cho VPS \u0111\u1ec3 b\u00f9 l\u00fac build c\u1ea7n \u0111\u1ec9nh RAM, sau \u0111\u00f3 theo d\u00f5i th\u1ef1c t\u1ebf m\u1ee9c RAM ti\u00eau th\u1ee5 qua v\u00e0i l\u1ea7n build \u0111\u1ec3 quy\u1ebft \u0111\u1ecbnh c\u00f3 c\u1ea7n n\u00e2ng c\u1ea5u h\u00ecnh VPS hay kh\u00f4ng &#8211; kh\u00f4ng n\u00ean \u0111o\u00e1n tr\u01b0\u1edbc m\u1ed9t con s\u1ed1 c\u1ed1 \u0111\u1ecbnh v\u00ec m\u1ee9c ti\u00eau th\u1ee5 ph\u1ee5 thu\u1ed9c tr\u1ef1c ti\u1ebfp v\u00e0o quy m\u00f4 d\u1ef1 \u00e1n.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: bold; margin: 25px 0 12px;\">Domain tr\u1ea3 v\u1ec1 l\u1ed7i 502 Bad Gateway<\/h3>\n<p style=\"text-align: justify;\">Ph\u1ed5 bi\u1ebfn nh\u1ea5t l\u00e0 DNS ch\u01b0a propagate xong t\u1ea1i th\u1eddi \u0111i\u1ec3m truy c\u1eadp, ho\u1eb7c b\u1ea3n ghi A tr\u1ecf sai IP. Ki\u1ec3m tra b\u1eb1ng <code>ping domain-cua-ban.com<\/code>, \u0111\u1ed1i chi\u1ebfu \u0111\u00fang IP VPS. N\u1ebfu DNS \u0111\u00e3 \u0111\u00fang m\u00e0 v\u1eabn 502, ki\u1ec3m tra container \u1ee9ng d\u1ee5ng c\u00f3 \u0111ang ch\u1ea1y trong Coolify kh\u00f4ng &#8211; 502 ngh\u0129a l\u00e0 Traefik nh\u1eadn \u0111\u01b0\u1ee3c request nh\u01b0ng kh\u00f4ng k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c t\u1edbi container ph\u00eda sau, th\u01b0\u1eddng v\u00ec container \u0111\u00e3 crash ho\u1eb7c ch\u01b0a start xong.<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 20px; font-weight: bold; margin: 25px 0 12px;\">SSL kh\u00f4ng t\u1ef1 c\u1ea5p \u0111\u01b0\u1ee3c<\/h3>\n<p style=\"text-align: justify;\">Let&#8217;s Encrypt y\u00eau c\u1ea7u domain \u0111\u00e3 ph\u00e2n gi\u1ea3i \u0111\u00fang IP t\u1ea1i \u0111\u00fang th\u1eddi \u0111i\u1ec3m x\u00e1c th\u1ef1c. N\u1ebfu b\u1ea1n g\u00e1n domain v\u00e0o Application tr\u01b0\u1edbc khi DNS propagate xong, Coolify s\u1ebd b\u00e1o l\u1ed7i c\u1ea5p ch\u1ee9ng ch\u1ec9. \u0110\u1ee3i DNS \u1ed5n \u0111\u1ecbnh (c\u00f3 th\u1ec3 m\u1ea5t t\u1eeb v\u00e0i ph\u00fat \u0111\u1ebfn v\u00e0i gi\u1edd t\u00f9y nh\u00e0 cung c\u1ea5p domain), sau \u0111\u00f3 v\u00e0o Coolify b\u1ea5m c\u1ea5p l\u1ea1i SSL, kh\u00f4ng c\u1ea7n c\u1ea5u h\u00ecnh th\u00eam g\u00ec kh\u00e1c.<\/p>\n<p><!-- BOX CTA #3 - CLOUD SERVER --><\/p>\n<h2 id=\"section9\" 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;\">N\u00ean Ch\u1ecdn VPS Hay Cloud Server \u0110\u1ec3 Ch\u1ea1y Coolify?<\/h2>\n<p style=\"text-align: justify;\">N\u1ebfu ch\u1ec9 ch\u1ea1y m\u1ed9t ho\u1eb7c v\u00e0i Next.js app tr\u00ean m\u1ed9t Coolify instance, VPS c\u1ea5u h\u00ecnh kh\u1edfi \u0111i\u1ec3m l\u00e0 \u0111\u1ee7 &#8211; chi ph\u00ed th\u1ea5p, \u0111\u00e1p \u1ee9ng t\u1ed1t ph\u1ea7n l\u1edbn d\u1ef1 \u00e1n c\u00e1 nh\u00e2n, landing page, ho\u1eb7c d\u1ef1 \u00e1n agency quy m\u00f4 nh\u1ecf. V\u1ea5n \u0111\u1ec1 ph\u00e1t sinh khi b\u1ea1n b\u1eaft \u0111\u1ea7u ch\u1ea1y nhi\u1ec1u app c\u00f9ng l\u00fac, ho\u1eb7c traffic m\u1ed9t trong s\u1ed1 \u0111\u00f3 t\u0103ng \u0111\u1ed9t bi\u1ebfn: RAM v\u00e0 CPU tr\u1edf th\u00e0nh gi\u1edbi h\u1ea1n \u0111\u1ea7u ti\u00ean, \u0111\u1eb7c bi\u1ec7t l\u00fac nhi\u1ec1u app build song song.<\/p>\n<table style=\"width: 100%; border-collapse: collapse; margin: 15px 0;\">\n<tbody>\n<tr style=\"background-color: #eff6ff;\">\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">T\u00ecnh hu\u1ed1ng s\u1eed d\u1ee5ng<\/th>\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">G\u1ee3i \u00fd<\/th>\n<th style=\"border: 1px solid #E5E7EB; padding: 10px; text-align: left; color: #1e3a8a;\">L\u00fd do<\/th>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">1 app, traffic \u1ed5n \u0111\u1ecbnh<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">VPS<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Chi ph\u00ed th\u1ea5p, \u0111\u1ee7 t\u00e0i nguy\u00ean cho nhu c\u1ea7u c\u1ed1 \u0111\u1ecbnh<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Nhi\u1ec1u app\/site tr\u00ean c\u00f9ng Coolify instance<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Cloud Server<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">D\u1ec5 n\u00e2ng RAM\/CPU ri\u00eang l\u1ebb khi th\u00eam app, kh\u00f4ng ph\u1ea3i \u0111\u1ed5i m\u00e1y ch\u1ee7<\/td>\n<\/tr>\n<tr>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Traffic bi\u1ebfn \u0111\u1ed9ng m\u1ea1nh theo th\u1eddi \u0111i\u1ec3m<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">Cloud Server<\/td>\n<td style=\"border: 1px solid #E5E7EB; padding: 10px;\">N\u00e2ng\/h\u1ea1 t\u00e0i nguy\u00ean nhanh theo t\u1ea3i th\u1ef1c t\u1ebf, kh\u00f4ng c\u1ea7n d\u1ef1 ph\u00f2ng d\u01b0 th\u1eeba c\u1ed1 \u0111\u1ecbnh<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\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;\">Coolify qu\u1ea3n l\u00fd nhi\u1ec1u app, traffic t\u0103ng?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">Khi build v\u00e0 ch\u1ea1y song song nhi\u1ec1u Next.js app tr\u00ean m\u1ed9t Coolify instance, RAM\/CPU l\u00e0 gi\u1edbi h\u1ea1n xu\u1ea5t hi\u1ec7n \u0111\u1ea7u ti\u00ean. Cloud Server InterData cho ph\u00e9p n\u00e2ng c\u1ea5u h\u00ecnh theo nhu c\u1ea7u th\u1ef1c t\u1ebf m\u00e0 kh\u00f4ng c\u1ea7n d\u1ef1ng l\u1ea1i m\u00e1y ch\u1ee7 t\u1eeb \u0111\u1ea7u, ph\u00f9 h\u1ee3p khi s\u1ed1 l\u01b0\u1ee3ng d\u1ef1 \u00e1n b\u1ea1n qu\u1ea3n l\u00fd qua Coolify t\u0103ng d\u1ea7n theo th\u1eddi gian.<\/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 g\u00f3i Cloud Server \u27f6<\/a><\/p>\n<\/div>\n<\/div>\n<div style=\"border-top: 2px dashed #BFDBFE; margin-top: 50px; padding-top: 30px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 22px; font-weight: bold; margin-bottom: 20px;\">C\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p khi deploy Next.js b\u1eb1ng Coolify<\/h3>\n<p style=\"font-weight: bold; color: #1e3a8a; margin-bottom: 6px;\">Coolify c\u00f3 mi\u1ec5n ph\u00ed kh\u00f4ng?<\/p>\n<p style=\"text-align: justify; margin-bottom: 20px;\">Coolify self-hosted (t\u1ef1 c\u00e0i tr\u00ean VPS c\u1ee7a b\u1ea1n) l\u00e0 m\u00e3 ngu\u1ed3n m\u1edf, mi\u1ec5n ph\u00ed ho\u00e0n to\u00e0n, kh\u00f4ng gi\u1edbi h\u1ea1n s\u1ed1 app hay s\u1ed1 server qu\u1ea3n l\u00fd. Ch\u1ec9 Coolify Cloud &#8211; b\u1ea3n SaaS do \u0111\u1ed9i ng\u0169 Coolify v\u1eadn h\u00e0nh &#8211; m\u1edbi t\u00ednh ph\u00ed theo th\u00e1ng, v\u00e0 \u0111\u00e2y l\u00e0 l\u1ef1a ch\u1ecdn kh\u00e1c v\u1edbi h\u01b0\u1edbng d\u1eabn trong b\u00e0i n\u00e0y.<\/p>\n<p style=\"font-weight: bold; color: #1e3a8a; margin-bottom: 6px;\">Coolify c\u00e0i tr\u00ean VPS n\u00e0o c\u0169ng \u0111\u01b0\u1ee3c kh\u00f4ng?<\/p>\n<p style=\"text-align: justify; margin-bottom: 20px;\">C\u00e0i \u0111\u01b0\u1ee3c tr\u00ean h\u1ea7u h\u1ebft VPS ch\u1ea1y Ubuntu c\u00f3 quy\u1ec1n root qua SSH. Kh\u00f4ng c\u00e0i \u0111\u01b0\u1ee3c tr\u00ean hosting chia s\u1ebb v\u00ec Coolify c\u1ea7n to\u00e0n quy\u1ec1n qu\u1ea3n l\u00fd Docker v\u00e0 h\u1ec7 \u0111i\u1ec1u h\u00e0nh. V\u1edbi d\u1ef1 \u00e1n ch\u1ea1y nhi\u1ec1u app c\u00f9ng l\u00fac, n\u00ean ch\u1ecdn c\u1ea5u h\u00ecnh \u0111\u1ee7 RAM \u0111\u1ec3 build kh\u00f4ng b\u1ecb gi\u00e1n \u0111o\u1ea1n.<\/p>\n<p style=\"font-weight: bold; color: #1e3a8a; margin-bottom: 6px;\">Next.js ch\u1ea1y tr\u00ean VPS \u0111\u01b0\u1ee3c kh\u00f4ng, c\u00f3 c\u1ea7n Vercel kh\u00f4ng?<\/p>\n<p style=\"text-align: justify; margin-bottom: 20px;\">Next.js ch\u1ea1y t\u1ed1t tr\u00ean VPS, k\u1ec3 c\u1ea3 c\u00e1c t\u00ednh n\u0103ng nh\u01b0 Server Components hay API Routes, mi\u1ec5n l\u00e0 m\u00f4i tr\u01b0\u1eddng c\u00f3 <a href=\"https:\/\/interdata.vn\/blog\/node-js-la-gi\/\">Node.js<\/a> \u0111\u00fang phi\u00ean b\u1ea3n y\u00eau c\u1ea7u. Vercel kh\u00f4ng b\u1eaft bu\u1ed9c &#8211; \u0111\u00f3 l\u00e0 n\u1ec1n t\u1ea3ng \u0111\u01b0\u1ee3c t\u1ed1i \u01b0u s\u1eb5n cho Next.js, c\u00f2n t\u1ef1 host qua Coolify l\u00e0 l\u1ef1a ch\u1ecdn thay th\u1ebf kh\u1ea3 thi cho ph\u1ea7n l\u1edbn \u1ee9ng d\u1ee5ng.<\/p>\n<p style=\"font-weight: bold; color: #1e3a8a; margin-bottom: 6px;\">Coolify c\u00f3 t\u1ef1 \u0111\u1ed9ng deploy khi push code kh\u00f4ng?<\/p>\n<p style=\"text-align: justify; margin-bottom: 20px;\">C\u00f3, th\u00f4ng qua webhook. N\u1ebfu k\u1ebft n\u1ed1i repo qua GitHub App, webhook \u0111\u01b0\u1ee3c \u0111\u0103ng k\u00fd t\u1ef1 \u0111\u1ed9ng v\u00e0 b\u1ea1n ch\u1ec9 c\u1ea7n b\u1eadt t\u00f9y ch\u1ecdn Automatic Deployment. N\u1ebfu d\u00f9ng Deploy Key th\u1ee7 c\u00f4ng, c\u1ea7n t\u1ef1 th\u00eam webhook trong ph\u1ea7n c\u00e0i \u0111\u1eb7t c\u1ee7a repository tr\u00ean GitHub ho\u1eb7c GitLab.<\/p>\n<p style=\"font-weight: bold; color: #1e3a8a; margin-bottom: 6px;\">V\u00ec sao Coolify build Next.js b\u1ecb l\u1ed7i d\u00f9 local ch\u1ea1y b\u00ecnh th\u01b0\u1eddng?<\/p>\n<p style=\"text-align: justify; margin-bottom: 0;\">Th\u01b0\u1eddng do thi\u1ebfu RAM l\u00fac build tr\u00ean VPS, ho\u1eb7c thi\u1ebfu bi\u1ebfn m\u00f4i tr\u01b0\u1eddng c\u1ea7n thi\u1ebft ch\u01b0a \u0111\u01b0\u1ee3c khai b\u00e1o trong Coolify. V\u1edbi bi\u1ebfn <code>NEXT_PUBLIC_*<\/code>, c\u1ea7n b\u1eadt \u0111\u00fang t\u00f9y ch\u1ecdn kh\u1ea3 d\u1ee5ng \u1edf build-time, kh\u00f4ng ch\u1ec9 khai b\u00e1o \u1edf runtime, n\u1ebfu kh\u00f4ng gi\u00e1 tr\u1ecb s\u1ebd r\u1ed7ng d\u00f9 build kh\u00f4ng b\u00e1o l\u1ed7i.<\/p>\n<\/div>\n<div style=\"margin-top: 50px;\">\n<h3 style=\"font-family: 'Be Vietnam Pro', sans-serif; color: #1e3a8a; font-size: 22px; font-weight: bold; margin-bottom: 15px;\">L\u1eddi k\u1ebft<\/h3>\n<p style=\"text-align: justify;\">Deploy Next.js l\u00ean VPS b\u1eb1ng Coolify kh\u00f4ng ph\u1ee9c t\u1ea1p h\u01a1n Vercel bao nhi\u00eau v\u1ec1 thao t\u00e1c, ch\u1ec9 kh\u00e1c l\u00e0 b\u1ea1n t\u1ef1 ch\u1ecbu tr\u00e1ch nhi\u1ec7m ph\u1ea7n h\u1ea1 t\u1ea7ng ph\u00eda sau &#8211; c\u00e0i \u0111\u1eb7t, SSL, bi\u1ebfn m\u00f4i tr\u01b0\u1eddng, v\u00e0 theo d\u00f5i t\u00e0i nguy\u00ean khi s\u1ed1 l\u01b0\u1ee3ng app t\u0103ng l\u00ean. Ba \u0111i\u1ec3m c\u1ea7n nh\u1edb: b\u1eadt \u0111\u00fang Build Variable cho m\u1ecdi bi\u1ebfn <code>NEXT_PUBLIC_*<\/code>, chu\u1ea9n b\u1ecb DNS tr\u01b0\u1edbc khi c\u1ea5p SSL, v\u00e0 theo d\u00f5i RAM l\u00fac build \u0111\u1ec3 bi\u1ebft khi n\u00e0o c\u1ea7n n\u00e2ng c\u1ea5p m\u00e1y ch\u1ee7. N\u1ebfu b\u1ea1n \u0111ang chu\u1ea9n b\u1ecb VPS ho\u1eb7c Cloud Server \u0111\u1ec3 b\u1eaft \u0111\u1ea7u, InterData c\u00f3 s\u1eb5n c\u00e1c g\u00f3i ph\u00f9 h\u1ee3p cho t\u1eeb m\u1ed9t app nh\u1ecf \u0111\u1ebfn nhi\u1ec1u d\u1ef1 \u00e1n ch\u1ea1y song song.<\/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;\"><span style=\"font-size: 100%;\"><em>N\u1ed9i dung mang t\u00ednh tham kh\u1ea3o. Coolify l\u00e0 ph\u1ea7n m\u1ec1m m\u00e3 ngu\u1ed3n m\u1edf c\u1ee7a b\u00ean th\u1ee9 ba, kh\u00f4ng ph\u1ea3i s\u1ea3n ph\u1ea9m c\u1ee7a InterData. C\u00e1ch c\u00e0i \u0111\u1eb7t, giao di\u1ec7n v\u00e0 th\u00f4ng s\u1ed1 c\u00f3 th\u1ec3 thay \u0111\u1ed5i theo phi\u00ean b\u1ea3n Coolify, Next.js v\u00e0 h\u1ec7 \u0111i\u1ec1u h\u00e0nh th\u1ef1c t\u1ebf. 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 cho production.<\/em><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Deploy Next.js l\u00ean VPS b\u1eb1ng Coolify l\u00e0 h\u01b0\u1edbng \u0111i nhi\u1ec1u dev Vi\u1ec7t Nam chuy\u1ec3n sang khi h\u00f3a \u0111\u01a1n Vercel t\u0103ng theo build minutes v\u00e0 bandwidth, ho\u1eb7c khi c\u1ea7n t\u1ef1 ch\u1ee7 h\u1ea1 t\u1ea7ng cho nhi\u1ec1u d\u1ef1 \u00e1n c\u00f9ng l\u00fac. Coolify cho b\u1ea1n giao di\u1ec7n qu\u1ea3n l\u00fd g\u1ea7n gi\u1ed1ng Vercel, nh\u01b0ng ch\u1ea1y tr\u00ean ch\u00ednh VPS c\u1ee7a b\u1ea1n.<\/p>\n","protected":false},"author":2,"featured_media":43485,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[161],"tags":[],"class_list":["post-43478","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\/43478","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=43478"}],"version-history":[{"count":4,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43478\/revisions"}],"predecessor-version":[{"id":43493,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43478\/revisions\/43493"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/43485"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=43478"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=43478"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=43478"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}