{"id":43537,"date":"2026-09-15T15:18:59","date_gmt":"2026-09-15T08:18:59","guid":{"rendered":"https:\/\/interdata.vn\/blog\/?p=43537"},"modified":"2026-09-15T15:21:30","modified_gmt":"2026-09-15T08:21:30","slug":"cai-dat-va-su-dung-immich-tren-ubuntu","status":"publish","type":"post","link":"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-immich-tren-ubuntu\/","title":{"rendered":"H\u01b0\u1edbng D\u1eabn C\u00e0i \u0110\u1eb7t V\u00e0 S\u1eed D\u1ee5ng Immich Tr\u00ean Ubuntu B\u1eb1ng Docker Compose"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 100%;\"><strong>C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Immich tr\u00ean Ubuntu<\/strong> l\u00e0 gi\u1ea3i ph\u00e1p t\u1ef1 host kho l\u01b0u tr\u1eef \u1ea3nh v\u00e0 video c\u00e1 nh\u00e2n hi\u1ec7u qu\u1ea3 nh\u1ea5t hi\u1ec7n nay \u0111\u1ec3 thay th\u1ebf Google Photos v\u00e0 iCloud m\u00e0 kh\u00f4ng t\u1ed1n ph\u00ed duy tr\u00ec h\u00e0ng th\u00e1ng. B\u00e0i vi\u1ebft n\u00e0y t\u1eeb <a href=\"https:\/\/interdata.vn\/\">InterData<\/a> s\u1ebd h\u01b0\u1edbng d\u1eabn b\u1ea1n t\u1eebng b\u01b0\u1edbc thi\u1ebft l\u1eadp Immich b\u1eb1ng Docker Compose, t\u1ed1i \u01b0u m\u00f4 h\u00ecnh Machine Learning, m\u1edf port an to\u00e0n v\u00e0 c\u1ea5u h\u00ecnh \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng t\u1ef1 \u0111\u1ed9ng sao l\u01b0u n\u1ec1n li\u00ean t\u1ee5c.<\/span><\/p>\n<p><!-- H\u1ed8P M\u1ee4C L\u1ee4C B\u00c0I VI\u1ebeT --><\/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. Immich L\u00e0 G\u00ec? V\u00ec Sao N\u00ean T\u1ef1 Host Thay Th\u1ebf Google Photos?<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section2\">2. Y\u00eau C\u1ea7u Ph\u1ea7n C\u1ee9ng \u0110\u1ec3 V\u1eadn H\u00e0nh Immich Tr\u00ean M\u00e1y Ch\u1ee7 Ubuntu<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section3\">3. Quy Tr\u00ecnh 5 B\u01b0\u1edbc C\u00e0i \u0110\u1eb7t Immich Tr\u00ean Ubuntu B\u1eb1ng Docker Compose<\/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\u1ea5u H\u00ecnh V\u00e0 S\u1eed D\u1ee5ng Immich L\u1ea7n \u0110\u1ea7u<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section5\">5. T\u1ed1i \u01afu Machine Learning V\u00e0 B\u1ea3o M\u1eadt B\u1eb1ng Nginx Reverse Proxy<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section6\">6. H\u01b0\u1edbng D\u1eabn Sao L\u01b0u D\u1eef Li\u1ec7u V\u00e0 C\u1eadp Nh\u1eadt Immich \u0110\u1ecbnh K\u1ef3<\/a><\/li>\n<li style=\"margin-bottom: 10px;\"><a style=\"text-decoration: none; color: #2563eb; font-weight: bold;\" href=\"#section7\">7. C\u00e2u H\u1ecfi Th\u01b0\u1eddng G\u1eb7p V\u1ec1 C\u00e0i \u0110\u1eb7t V\u00e0 S\u1eed D\u1ee5ng Immich Tr\u00ean Ubuntu (FAQ)<\/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-338915225\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-338915225 {\n  padding-top: 15px;\n}\n<\/style>\n\t<\/div>\n\t\n<p><!-- N\u1ed8I DUNG TH\u00c2N B\u00c0I --><\/p>\n<h2 id=\"section1\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">1. Immich L\u00e0 G\u00ec? V\u00ec Sao N\u00ean T\u1ef1 Host Thay Th\u1ebf Google Photos?<\/h2>\n<p style=\"text-align: justify;\">Immich l\u00e0 ph\u1ea7n m\u1ec1m m\u00e1y ch\u1ee7 m\u00e3 ngu\u1ed3n m\u1edf t\u1ef1 host (self-hosted) chuy\u00ean d\u00f9ng \u0111\u1ec3 qu\u1ea3n l\u00fd, sao l\u01b0u v\u00e0 l\u1eadp ch\u1ec9 m\u1ee5c h\u00ecnh \u1ea3nh, video v\u1edbi t\u1ed1c \u0111\u1ed9 x\u1eed l\u00fd cao. \u0110\u01b0\u1ee3c ph\u00e1t tri\u1ec3n nh\u1eb1m thay th\u1ebf tr\u1ef1c ti\u1ebfp c\u00e1c d\u1ecbch v\u1ee5 l\u01b0u tr\u1eef \u0111\u00e1m m\u00e2y \u0111\u1ed9c quy\u1ec1n, Immich cung c\u1ea5p \u1ee9ng d\u1ee5ng di \u0111\u1ed9ng h\u1ed7 tr\u1ee3 \u0111\u1ed3ng b\u1ed9 t\u1ef1 \u0111\u1ed9ng, c\u01a1 ch\u1ebf nh\u1eadn di\u1ec7n khu\u00f4n m\u1eb7t v\u00e0 t\u00ecm ki\u1ebfm ng\u1eef ngh\u0129a th\u00f4ng minh ngay tr\u00ean m\u00e1y ch\u1ee7 c\u1ee7a b\u1ea1n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43587\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Immich.png\" alt=\"Immich\" width=\"800\" height=\"350\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Immich.png 1920w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Immich-300x131.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Immich-1024x447.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Immich-768x336.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Immich-1536x671.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: justify;\">Khi c\u00e1c n\u1ec1n t\u1ea3ng \u0111\u00e1m m\u00e2y l\u1edbn \u00e1p d\u1ee5ng m\u1ee9c ph\u00ed thu\u00ea bao \u0111\u1ecbnh k\u1ef3 cho dung l\u01b0\u1ee3ng v\u01b0\u1ee3t m\u1ee9c 15GB, nhu c\u1ea7u chuy\u1ec3n \u0111\u1ed5i sang <a href=\"https:\/\/interdata.vn\/blog\/cloud-storage-la-gi\/\">gi\u1ea3i ph\u00e1p l\u01b0u tr\u1eef Cloud Storage<\/a> t\u1ef1 qu\u1ea3n l\u00fd ng\u00e0y c\u00e0ng ph\u1ed5 bi\u1ebfn. Immich n\u1ed5i l\u00ean nh\u01b0 m\u1ed9t l\u1ef1a ch\u1ecdn d\u1eabn \u0111\u1ea7u nh\u1edd c\u00e1c \u0111\u1eb7c \u0111i\u1ec3m k\u1ef9 thu\u1eadt c\u1ee5 th\u1ec3:<\/p>\n<ul style=\"text-align: justify; line-height: 1.8;\">\n<li><strong>Giao di\u1ec7n t\u01b0\u01a1ng \u0111\u1ed3ng:<\/strong> Giao di\u1ec7n Web v\u00e0 Mobile (iOS\/Android) \u0111\u01b0\u1ee3c thi\u1ebft k\u1ebf hi\u1ec7n \u0111\u1ea1i, h\u1ed7 tr\u1ee3 d\u00f2ng th\u1eddi gian (timeline), xem album, b\u1ea3n \u0111\u1ed3 \u0111\u1ecbnh v\u1ecb (Map View) v\u00e0 qu\u1ea3n l\u00fd ng\u01b0\u1eddi d\u00f9ng \u0111\u1ed9c l\u1eadp.<\/li>\n<li><strong>\u1ee8ng d\u1ee5ng Tr\u00ed tu\u1ec7 Nh\u00e2n t\u1ea1o On-premise:<\/strong> T\u00edch h\u1ee3p s\u1eb5n m\u00f4 h\u00ecnh CLIP \u0111\u1ec3 t\u00ecm ki\u1ebfm h\u00ecnh \u1ea3nh b\u1eb1ng v\u0103n b\u1ea3n t\u1ef1 nhi\u00ean (v\u00ed d\u1ee5: &#8220;ch\u00f3 ch\u1ea1y tr\u00ean c\u1ecf&#8221;, &#8220;h\u00f3a \u0111\u01a1n&#8221;, &#8220;ho\u00e0ng h\u00f4n&#8221;) v\u00e0 m\u00f4 h\u00ecnh Facial Recognition \u0111\u1ec3 gom nh\u00f3m khu\u00f4n m\u1eb7t t\u1ef1 \u0111\u1ed9ng m\u00e0 kh\u00f4ng g\u1eedi d\u1eef li\u1ec7u ra m\u00e1y ch\u1ee7 b\u00ean ngo\u00e0i.<\/li>\n<li><strong>H\u1ed7 tr\u1ee3 \u0111\u1ecbnh d\u1ea1ng g\u1ed1c:<\/strong> X\u1eed l\u00fd m\u01b0\u1ee3t m\u00e0 \u1ea3nh RAW c\u1ee7a m\u00e1y \u1ea3nh chuy\u00ean nghi\u1ec7p, Live Photos t\u1eeb iOS, Motion Photos t\u1eeb Android v\u00e0 video \u0111\u1ecbnh d\u1ea1ng 4K HDR\/HEVC v\u1edbi kh\u1ea3 n\u0103ng chuy\u1ec3n m\u00e3 ph\u1ea7n c\u1ee9ng (Hardware Transcoding).<\/li>\n<li><strong>Quy\u1ec1n s\u1edf h\u1eefu d\u1eef li\u1ec7u 100%:<\/strong> To\u00e0n b\u1ed9 t\u1ec7p tin media n\u1eb1m tr\u1ef1c ti\u1ebfp trong h\u1ec7 th\u1ed1ng t\u1ec7p c\u1ee5c b\u1ed9 theo c\u1ea5u tr\u00fac th\u01b0 m\u1ee5c r\u00f5 r\u00e0ng, kh\u00f4ng b\u1ecb m\u00e3 h\u00f3a hay \u0111\u00f3ng g\u00f3i v\u00e0o c\u01a1 s\u1edf d\u1eef li\u1ec7u \u0111\u00f3ng.<\/li>\n<\/ul>\n<h2 id=\"section2\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">2. Y\u00eau C\u1ea7u Ph\u1ea7n C\u1ee9ng \u0110\u1ec3 V\u1eadn H\u00e0nh Immich Tr\u00ean M\u00e1y Ch\u1ee7 Ubuntu<\/h2>\n<p style=\"text-align: justify;\">Kh\u00e1c v\u1edbi c\u00e1c \u1ee9ng d\u1ee5ng l\u01b0u tr\u1eef t\u0129nh \u0111\u01a1n gi\u1ea3n, Immich v\u1eadn h\u00e0nh \u0111\u1ed3ng th\u1eddi c\u00e1c ti\u1ebfn tr\u00ecnh tr\u00edch xu\u1ea5t thumbnail, encode video v\u00e0 suy lu\u1eadn vector Machine Learning. Vi\u1ec7c tri\u1ec3n khai tr\u00ean <a href=\"https:\/\/interdata.vn\/blog\/ubuntu-server-la-gi\/\">h\u1ec7 \u0111i\u1ec1u h\u00e0nh Ubuntu Server<\/a> (phi\u00ean b\u1ea3n 22.04 LTS ho\u1eb7c 24.04 LTS) y\u00eau c\u1ea7u c\u1ea5u h\u00ecnh ph\u1ea7n c\u1ee9ng \u0111\u00e1p \u1ee9ng c\u00e1c th\u00f4ng s\u1ed1 sau:<\/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 #BFDBFE;\">T\u00e0i Nguy\u00ean<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #BFDBFE;\">C\u00e1 Nh\u00e2n \/ Gia \u0110\u00ecnh Nh\u1ecf (1-3 Users)<\/th>\n<th style=\"padding: 12px 15px; border: 1px solid #BFDBFE;\">Nhi\u1ebfp \u1ea2nh Gia \/ Doanh Nghi\u1ec7p (Nhi\u1ec1u TB)<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0; font-weight: bold;\">CPU<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">2 vCPU (T\u1ea7n s\u1ed1 xung nh\u1ecbp t\u1eeb 2.4 GHz)<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">4 &#8211; 8 vCPU (H\u1ed7 tr\u1ee3 t\u1eadp l\u1ec7nh AVX2 cho ML)<\/td>\n<\/tr>\n<tr style=\"background-color: #ffffff;\">\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0; font-weight: bold;\">RAM Th\u1ef1c<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">T\u1ed1i thi\u1ec3u 4 GB (Khuy\u1ebfn ngh\u1ecb 6 GB)<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">8 GB &#8211; 16 GB RAM ECC<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0; font-weight: bold;\">B\u1ed9 Nh\u1edb \u1ea2o (Swap)<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">2 GB &#8211; 4 GB Swap<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">4 GB &#8211; 8 GB Swap<\/td>\n<\/tr>\n<tr style=\"background-color: #ffffff;\">\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0; font-weight: bold;\">\u1ed4 C\u1ee9ng (Disk I\/O)<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">50 GB &#8211; 200 GB SSD NVMe<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">T\u1eeb 1 TB SSD NVMe U.2 Enterprise tr\u1edf l\u00ean<\/td>\n<\/tr>\n<tr style=\"background-color: #f8fafc;\">\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0; font-weight: bold;\">H\u1ec7 \u0110i\u1ec1u H\u00e0nh<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">Ubuntu Server 22.04 LTS \/ 24.04 LTS x64<\/td>\n<td style=\"padding: 10px 15px; border: 1px solid #E2E8F0;\">Ubuntu Server 22.04 LTS \/ 24.04 LTS x64<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p style=\"text-align: justify;\">N\u1ebfu b\u1ea1n t\u1ef1 host tr\u00ean m\u00e1y t\u00ednh c\u00e1 nh\u00e2n ho\u1eb7c bo m\u1ea1ch Raspberry Pi, r\u1ee7i ro m\u1ea5t \u0111i\u1ec7n \u0111\u1ed9t ng\u1ed9t c\u00f3 th\u1ec3 l\u00e0m h\u1ecfng c\u01a1 s\u1edf d\u1eef li\u1ec7u PostgreSQL. H\u01a1n n\u1eefa, vi\u1ec7c kh\u00f4ng c\u00f3 \u0111\u1ecba ch\u1ec9 IP t\u0129nh khi\u1ebfn vi\u1ec7c sao l\u01b0u d\u1eef li\u1ec7u di \u0111\u1ed9ng ngo\u00e0i m\u1ea1ng n\u1ed9i b\u1ed9 g\u1eb7p kh\u00f3 kh\u0103n. Do \u0111\u00f3, ph\u01b0\u01a1ng \u00e1n tri\u1ec3n khai tr\u00ean <a href=\"https:\/\/interdata.vn\/blog\/vps-ubuntu-la-gi\/\">m\u00e1y ch\u1ee7 \u1ea3o VPS Ubuntu<\/a> \u0111\u1eb7t t\u1ea1i c\u00e1c trung t\u00e2m d\u1eef li\u1ec7u ti\u00eau chu\u1ea9n mang l\u1ea1i \u0111\u01b0\u1eddng truy\u1ec1n m\u1ea1ng li\u00ean t\u1ee5c v\u00e0 t\u1ed1c \u0111\u1ed9 \u0111\u1ecdc ghi I\/O cao cho th\u01b0 vi\u1ec7n \u1ea3nh.<\/p>\n<p><!-- BOX CTA #1: THU\u00ca VPS GI\u00c1 T\u1ed0T --><\/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: 28px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.2;\">Thu\u00ea VPS Server Gi\u00e1 T\u1ed1t<\/p>\n<p style=\"color: #dbeafe; font-size: 14px; font-weight: 600; margin-top: 10px;\">\u1ed4 c\u1ee9ng SSD NVMe U.2 t\u1ed1c \u0111\u1ed9 cao, IP t\u0129nh, ho\u1ea1t \u0111\u1ed9ng 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\u00e1y ch\u1ee7 \u1ed5n \u0111\u1ecbnh \u0111\u1ec3 \u0111\u1ed3ng b\u1ed9 \u1ea3nh t\u1eeb xa li\u00ean t\u1ee5c?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">T\u1ef1 ch\u1ea1y m\u00e1y ch\u1ee7 t\u1ea1i nh\u00e0 d\u1ec5 b\u1ecb ng\u1eaft qu\u00e3ng khi m\u1ea5t \u0111i\u1ec7n ho\u1eb7c IP m\u1ea1ng thay \u0111\u1ed5i. S\u1eed d\u1ee5ng VPS Linux t\u1ea1i InterData gi\u00fap \u0111i\u1ec7n tho\u1ea1i c\u1ee7a b\u1ea1n t\u1ef1 \u0111\u1ed9ng sao l\u01b0u \u1ea3nh n\u1ec1n qua 4G\/5G m\u01b0\u1ee3t m\u00e0, kh\u00f4ng ngh\u1ebdn b\u0103ng th\u00f4ng.<\/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=\"section3\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">3. Quy Tr\u00ecnh 5 B\u01b0\u1edbc C\u00e0i \u0110\u1eb7t Immich Tr\u00ean Ubuntu B\u1eb1ng Docker Compose<\/h2>\n<p style=\"text-align: justify;\">Ph\u01b0\u01a1ng ph\u00e1p c\u00e0i \u0111\u1eb7t chu\u1ea9n h\u00f3a v\u00e0 d\u1ec5 n\u00e2ng c\u1ea5p nh\u1ea5t hi\u1ec7n nay l\u00e0 s\u1eed d\u1ee5ng Docker Compose V2. Quy tr\u00ecnh bao g\u1ed3m 5 b\u01b0\u1edbc th\u1ef1c hi\u1ec7n tr\u1ef1c ti\u1ebfp tr\u00ean giao di\u1ec7n d\u00f2ng l\u1ec7nh (CLI):<\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">B\u01b0\u1edbc 1: C\u1eadp nh\u1eadt h\u1ec7 th\u1ed1ng v\u00e0 c\u00e0i \u0111\u1eb7t Docker Engine + Docker Compose Plugin<\/h3>\n<p style=\"text-align: justify;\">Tr\u01b0\u1edbc ti\u00ean, k\u1ebft n\u1ed1i SSH v\u00e0o m\u00e1y ch\u1ee7 Ubuntu v\u00e0 th\u1ef1c hi\u1ec7n c\u1eadp nh\u1eadt to\u00e0n b\u1ed9 c\u00e1c g\u00f3i ph\u1ea7n m\u1ec1m hi\u1ec7n c\u00f3. N\u1ebfu m\u00e1y ch\u1ee7 ch\u01b0a c\u00f3 Docker, h\u00e3y tham kh\u1ea3o <a href=\"https:\/\/interdata.vn\/blog\/cai-dat-va-su-dung-docker-compose-tren-ubuntu\/\">c\u00e0i \u0111\u1eb7t Docker Compose V2 tr\u00ean Ubuntu<\/a> \u0111\u1ec3 ho\u00e0n thi\u1ec7n m\u00f4i tr\u01b0\u1eddng n\u1ec1n t\u1ea3ng.<\/p>\n<pre><code># C\u1eadp nh\u1eadt danh s\u00e1ch g\u00f3i h\u1ec7 th\u1ed1ng\r\nsudo apt update &amp;&amp; sudo apt upgrade -y\r\n\r\n# C\u00e0i \u0111\u1eb7t c\u00e1c g\u00f3i ph\u1ee5 thu\u1ed9c c\u1ea7n thi\u1ebft\r\nsudo apt install -y curl wget apt-transport-https ca-certificates gnupg lsb-release\r\n\r\n# C\u00e0i \u0111\u1eb7t Docker v\u00e0 Docker Compose Plugin ch\u00ednh th\u1ee9c\r\ncurl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/docker.gpg\r\necho \"deb [arch=$(dpkg --print-architecture) signed-by=\/etc\/apt\/keyrings\/docker.gpg] https:\/\/download.docker.com\/linux\/ubuntu $(lsb_release -cs) stable\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null\r\nsudo apt update\r\nsudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\r\n\r\n# Ki\u1ec3m tra phi\u00ean b\u1ea3n Docker Compose V2\r\ndocker compose version<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43576\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cai-dat-Docker-compose.png\" alt=\"C\u00e0i \u0111\u1eb7t Docker compose\" width=\"800\" height=\"682\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cai-dat-Docker-compose.png 1140w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cai-dat-Docker-compose-300x256.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cai-dat-Docker-compose-1024x873.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cai-dat-Docker-compose-768x655.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">B\u01b0\u1edbc 2: T\u1ea1o th\u01b0 m\u1ee5c l\u01b0u tr\u1eef c\u1ea5u h\u00ecnh Immich<\/h3>\n<p style=\"text-align: justify;\">T\u1ea1o m\u1ed9t th\u01b0 m\u1ee5c ri\u00eang bi\u1ec7t chuy\u00ean d\u00f9ng \u0111\u1ec3 ch\u1ee9a c\u00e1c file \u0111\u1ecbnh ngh\u0129a container v\u00e0 bi\u1ebfn m\u00f4i tr\u01b0\u1eddng:<\/p>\n<pre><code>mkdir -p .\/immich-app\r\ncd .\/immich-app<\/code><\/pre>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">B\u01b0\u1edbc 3: T\u1ea3i t\u1ec7p tin c\u1ea5u h\u00ecnh chu\u1ea9n t\u1eeb kho l\u01b0u tr\u1eef Immich<\/h3>\n<p style=\"text-align: justify;\">S\u1eed d\u1ee5ng <code>wget<\/code> \u0111\u1ec3 t\u1ea3i t\u1ec7p \u0111\u1ecbnh ngh\u0129a container <code>docker-compose.yml<\/code> v\u00e0 t\u1ec7p m\u1eabu bi\u1ebfn m\u00f4i tr\u01b0\u1eddng <code>example.env<\/code> ch\u00ednh th\u1ee9c:<\/p>\n<pre><code>wget -O docker-compose.yml https:\/\/github.com\/immich-app\/immich\/releases\/latest\/download\/docker-compose.yml\r\nwget -O .env https:\/\/github.com\/immich-app\/immich\/releases\/latest\/download\/example.env<\/code><\/pre>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">B\u01b0\u1edbc 4: C\u1ea5u h\u00ecnh t\u1ec7p bi\u1ebfn m\u00f4i tr\u01b0\u1eddng .env<\/h3>\n<p style=\"text-align: justify;\">M\u1edf t\u1ec7p tin <code>.env<\/code> b\u1eb1ng tr\u00ecnh bi\u00ean t\u1eadp nano \u0111\u1ec3 ch\u1ec9 \u0111\u1ecbnh \u0111\u01b0\u1eddng d\u1eabn l\u01b0u tr\u1eef d\u1eef li\u1ec7u v\u00e0 th\u00f4ng tin x\u00e1c th\u1ef1c c\u01a1 s\u1edf d\u1eef li\u1ec7u:<\/p>\n<pre><code>nano .env<\/code><\/pre>\n<p style=\"text-align: justify;\">B\u1ea1n c\u1ea7n \u0111i\u1ec1u ch\u1ec9nh 3 th\u00f4ng s\u1ed1 then ch\u1ed1t sau:<\/p>\n<ul style=\"text-align: justify; line-height: 1.8;\">\n<li><strong>UPLOAD_LOCATION:<\/strong> \u0110\u01b0\u1eddng d\u1eabn tuy\u1ec7t \u0111\u1ed1i tr\u00ean m\u00e1y ch\u1ee7 Ubuntu n\u01a1i l\u01b0u tr\u1eef to\u00e0n b\u1ed9 \u1ea3nh, video v\u00e0 thumbnail (V\u00ed d\u1ee5: <code>\/mnt\/storage\/immich-photos<\/code> ho\u1eb7c <code>\/var\/immich\/upload<\/code>).<\/li>\n<li><strong>DB_PASSWORD:<\/strong> Chu\u1ed7i m\u1eadt kh\u1ea9u ng\u1eabu nhi\u00ean c\u00f3 \u0111\u1ed9 ph\u1ee9c t\u1ea1p cao d\u00e0nh cho PostgreSQL.<\/li>\n<li><strong>IMMICH_VERSION:<\/strong> Gi\u1eef nguy\u00ean gi\u00e1 tr\u1ecb <code>release<\/code> \u0111\u1ec3 lu\u00f4n t\u1ea3i phi\u00ean b\u1ea3n \u1ed5n \u0111\u1ecbnh nh\u1ea5t.<\/li>\n<\/ul>\n<pre><code># V\u00ed d\u1ee5 n\u1ed9i dung t\u1ec7p .env chu\u1ea9n\r\nUPLOAD_LOCATION=\/var\/immich\/upload\r\nIMMICH_VERSION=release\r\nDB_PASSWORD=MatKhauBaoMatPostgres_2026!\r\nDB_USERNAME=postgres\r\nDB_DATABASE_NAME=immich<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43577\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cau-hinh-tep-bien-moi-truong.png\" alt=\"C\u1ea5u h\u00ecnh t\u1ec7p bi\u1ebfn m\u00f4i tr\u01b0\u1eddng\" width=\"800\" height=\"474\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cau-hinh-tep-bien-moi-truong.png 864w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cau-hinh-tep-bien-moi-truong-300x178.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cau-hinh-tep-bien-moi-truong-768x455.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: justify;\">Sau khi ch\u1ec9nh s\u1eeda xong, nh\u1ea5n <code>Ctrl + O<\/code>, nh\u1ea5n <code>Enter<\/code> \u0111\u1ec3 l\u01b0u l\u1ea1i v\u00e0 nh\u1ea5n <code>Ctrl + X<\/code> \u0111\u1ec3 tho\u00e1t nano. \u0110\u1ea3m b\u1ea3o c\u1ea5p quy\u1ec1n cho th\u01b0 m\u1ee5c upload \u0111\u00e3 khai b\u00e1o:<\/p>\n<pre><code>sudo mkdir -p \/var\/immich\/upload\r\nsudo chown -R $USER:$USER \/var\/immich\/upload<\/code><\/pre>\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 Tr\u01b0\u1edbc Khi Tri\u1ec3n Khai H\u1ea1 T\u1ea7ng<\/p>\n<p style=\"font-size: 15px; color: #4b5563; margin-bottom: 20px;\">Canh Me l\u00e0 trang chuy\u00ean t\u1ed5ng h\u1ee3p c\u00e1c m\u00e3 gi\u1ea3m gi\u00e1, voucher khuy\u1ebfn m\u00e3i m\u00e1y ch\u1ee7 \u1ea3o VPS v\u00e0 Cloud Server dung l\u01b0\u1ee3ng cao m\u1edbi nh\u1ea5t t\u1eeb InterData. Ki\u1ec3m tra \u01b0u \u0111\u00e3i tr\u01b0\u1edbc khi kh\u1edfi t\u1ea1o h\u1ea1 t\u1ea7ng \u0111\u1ec3 ti\u1ebft ki\u1ec7m chi ph\u00ed v\u1eadn h\u00e0nh l\u00e2u d\u00e0i.<\/p>\n<p><a style=\"background: #2563EB; color: #fff; padding: 12px 30px; text-decoration: none; font-weight: 600; border-radius: 8px; display: inline-block; box-shadow: 0 4px 12px rgba(37,99,235,0.25);\" href=\"https:\/\/interdata.vn\/canhme\/\" target=\"_blank\" rel=\"noopener\">S\u0103n \u01afu \u0110\u00e3i VPS &amp; Cloud Server T\u1ea1i Canh Me \u27f6<\/a><\/p>\n<\/div>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">B\u01b0\u1edbc 5: Kh\u1edfi ch\u1ea1y c\u1ee5m container v\u00e0 x\u00e1c th\u1ef1c tr\u1ea1ng th\u00e1i<\/h3>\n<p style=\"text-align: justify;\">Kh\u1edfi \u0111\u1ed9ng to\u00e0n b\u1ed9 d\u1ecbch v\u1ee5 Immich (bao g\u1ed3m <code>immich-server<\/code>, <code>immich-machine-learning<\/code>, <code>immich_redis<\/code>, <code>immich_postgres<\/code>) \u1edf ch\u1ebf \u0111\u1ed9 ch\u1ea1y n\u1ec1n (detached mode):<\/p>\n<pre><code>docker compose up -d<\/code><\/pre>\n<p style=\"text-align: justify;\">Ki\u1ec3m tra xem t\u1ea5t c\u1ea3 c\u00e1c container \u0111\u00e3 \u1edf tr\u1ea1ng th\u00e1i <code>Up (healthy)<\/code> hay ch\u01b0a:<\/p>\n<pre><code>docker compose ps<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43585\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-trang-thai-Docker-compose-1.png\" alt=\"Ki\u1ec3m tra tr\u1ea1ng th\u00e1i Docker compose\" width=\"800\" height=\"149\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-trang-thai-Docker-compose-1.png 1578w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-trang-thai-Docker-compose-1-300x56.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-trang-thai-Docker-compose-1-1024x191.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-trang-thai-Docker-compose-1-768x143.png 768w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Kiem-tra-trang-thai-Docker-compose-1-1536x286.png 1536w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p style=\"text-align: justify;\">N\u1ebfu c\u1ea7n theo d\u00f5i nh\u1eadt k\u00fd ho\u1ea1t \u0111\u1ed9ng \u0111\u1ec3 x\u1eed l\u00fd s\u1ef1 c\u1ed1 kh\u1edfi t\u1ea1o c\u01a1 s\u1edf d\u1eef li\u1ec7u ban \u0111\u1ea7u, s\u1eed d\u1ee5ng l\u1ec7nh:<\/p>\n<pre><code>docker compose logs -f<\/code><\/pre>\n<h2 id=\"section4\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">4. H\u01b0\u1edbng D\u1eabn C\u1ea5u H\u00ecnh V\u00e0 S\u1eed D\u1ee5ng Immich L\u1ea7n \u0110\u1ea7u<\/h2>\n<p style=\"text-align: justify;\">Sau khi c\u1ee5m container ho\u1ea1t \u0111\u1ed9ng \u1ed5n \u0111\u1ecbnh, h\u00e3y ti\u1ebfn h\u00e0nh thi\u1ebft l\u1eadp t\u00e0i kho\u1ea3n qu\u1ea3n tr\u1ecb v\u00e0 k\u1ebft n\u1ed1i \u1ee9ng d\u1ee5ng theo c\u00e1c b\u01b0\u1edbc sau:<\/p>\n<p><strong>1\/ Kh\u1edfi t\u1ea1o t\u00e0i kho\u1ea3n Admin:<\/strong> M\u1edf tr\u00ecnh duy\u1ec7t web v\u00e0 truy c\u1eadp \u0111\u1ecba ch\u1ec9 <code>http:\/\/&lt;IP-M\u00e1y-Ch\u1ee7&gt;:2283<\/code>. Nh\u1ea5p ch\u1ecdn <strong>Getting Started<\/strong>, nh\u1eadp \u0111\u1ecba ch\u1ec9 email, h\u1ecd t\u00ean v\u00e0 m\u1eadt kh\u1ea9u cho t\u00e0i kho\u1ea3n qu\u1ea3n tr\u1ecb vi\u00ean cao nh\u1ea5t.<\/p>\n<p>N\u1ebfu \u1edf b\u01b0\u1edbc n\u00e0y m\u00e0 b\u1ea1n <strong>kh\u00f4ng th\u1ec3 truy c\u1eadp<\/strong> \u0111\u1ecba ch\u1ec9 <code>http:\/\/&lt;IP-M\u00e1y-Ch\u1ee7&gt;:2283<\/code>, th\u00ec nguy\u00ean nh\u00e2n c\u00f3 th\u1ec3 l\u00e0 do <strong>ch\u01b0a m\u1edf port<\/strong> ho\u1eb7c <strong>browser c\u1ed1 n\u00e2ng HTTP request th\u00e0nh HTTPS<\/strong> do c\u1ea5u h\u00ecnh Helmet m\u1eb7c \u0111\u1ecbnh s\u1eed d\u1ee5ng upgrade-insecure-requests (theo <a href=\"https:\/\/docs.immich.app\/install\/environment-variables\/\" target=\"_blank\" rel=\"noopener\">t\u00e0i li\u1ec7u c\u1ee7a Immich<\/a>).<\/p>\n<p>N\u1ebfu g\u1eb7p t\u00ecnh tr\u1ea1ng kh\u00f4ng th\u1ec3 truy c\u1eadp \u0111\u1ecba ch\u1ec9 <code>http:\/\/&lt;IP-M\u00e1y-Ch\u1ee7&gt;:2283<\/code>, h\u00e3y ti\u1ebfp t\u1ee5c \u0111\u1ecdc ph\u1ea7n h\u01b0\u1edbng d\u1eabn m\u1edf port v\u00e0 thi\u1ebft l\u1eadp HTTPS b\u00ean d\u01b0\u1edbi.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43579\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-tao-tai-khoan-Admin-Immich.png\" alt=\"Kh\u1edfi t\u1ea1o t\u00e0i kho\u1ea3n Admin Immich\" width=\"800\" height=\"575\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-tao-tai-khoan-Admin-Immich.png 1201w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-tao-tai-khoan-Admin-Immich-300x216.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-tao-tai-khoan-Admin-Immich-1024x736.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Khoi-tao-tai-khoan-Admin-Immich-768x552.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43591\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dang-ky-tai-khoan-Immich.png\" alt=\"\u0110\u0103ng k\u00fd t\u00e0i kho\u1ea3n Immich\" width=\"800\" height=\"658\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dang-ky-tai-khoan-Immich.png 1124w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dang-ky-tai-khoan-Immich-300x247.png 300w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dang-ky-tai-khoan-Immich-1024x843.png 1024w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Dang-ky-tai-khoan-Immich-768x632.png 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p><strong>2\/ C\u1ea5u h\u00ecnh App tr\u00ean \u0111i\u1ec7n tho\u1ea1i di \u0111\u1ed9ng:<\/strong><\/p>\n<ul>\n<li>T\u1ea3i \u1ee9ng d\u1ee5ng <strong>Immich<\/strong> ch\u00ednh th\u1ee9c tr\u00ean Apple App Store ho\u1eb7c Google Play Store.<\/li>\n<li>M\u1edf \u1ee9ng d\u1ee5ng, t\u1ea1i m\u1ee5c <strong>Server Endpoint URL<\/strong>, \u0111i\u1ec1n \u0111\u1ecba ch\u1ec9 m\u00e1y ch\u1ee7 (V\u00ed d\u1ee5: <code>http:\/\/103.xxx.xxx.xxx:2283\/api<\/code> ho\u1eb7c domain HTTPS).<\/li>\n<li>\u0110\u0103ng nh\u1eadp b\u1eb1ng t\u00e0i kho\u1ea3n Admin \u0111\u00e3 t\u1ea1o ho\u1eb7c t\u00e0i kho\u1ea3n ng\u01b0\u1eddi d\u00f9ng th\u00e0nh vi\u00ean.<\/li>\n<\/ul>\n<p><strong>3\/ K\u00edch ho\u1ea1t t\u00ednh n\u0103ng Backup t\u1ef1 \u0111\u1ed9ng:<\/strong><\/p>\n<ul>\n<li>V\u00e0o tab <strong>Backup<\/strong> trong \u1ee9ng d\u1ee5ng \u0111i\u1ec7n tho\u1ea1i.<\/li>\n<li>C\u1ea5p quy\u1ec1n truy c\u1eadp <strong>Full Photos Access<\/strong> \u0111\u1ec3 \u1ee9ng d\u1ee5ng \u0111\u1ecdc \u0111\u01b0\u1ee3c th\u01b0 vi\u1ec7n h\u00ecnh \u1ea3nh v\u00e0 video.<\/li>\n<li>Ch\u1ecdn c\u00e1c album c\u1ea7n \u0111\u1ed3ng b\u1ed9 (Camera, Screenshots, WhatsApp&#8230;) v\u00e0 g\u1ea1t b\u1eadt <strong>Background Backup<\/strong> \u0111\u1ec3 thi\u1ebft b\u1ecb t\u1ef1 \u0111\u1ed3ng b\u1ed9 khi c\u00f3 k\u1ebft n\u1ed1i Wi-Fi ho\u1eb7c d\u1eef li\u1ec7u di \u0111\u1ed9ng.<\/li>\n<\/ul>\n<h2 id=\"section5\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">5. T\u1ed1i \u01afu Machine Learning V\u00e0 B\u1ea3o M\u1eadt B\u1eb1ng Nginx Reverse Proxy<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">5.1. Thi\u1ebft l\u1eadp Swap Memory ch\u1ed1ng s\u1eadp container Machine Learning<\/h3>\n<p style=\"text-align: justify;\">Khi t\u1ea3i l\u00ean h\u00e0ng ngh\u00ecn b\u1ee9c \u1ea3nh c\u00f9ng l\u00fac, container <code>immich-machine-learning<\/code> s\u1ebd k\u00edch ho\u1ea1t c\u00e1c m\u00f4 h\u00ecnh tr\u00edch xu\u1ea5t khu\u00f4n m\u1eb7t v\u00e0 vector CLIP. Qu\u00e1 tr\u00ecnh n\u00e0y ti\u00eau t\u1ed1n l\u01b0\u1ee3ng RAM \u0111\u1ed9t bi\u1ebfn, d\u1ec5 d\u1eabn \u0111\u1ebfn l\u1ed7i Out-Of-Memory (OOM Killer) l\u00e0m s\u1eadp h\u1ec7 th\u1ed1ng. Vi\u1ec7c <a href=\"https:\/\/interdata.vn\/blog\/swap-memory-la-gi\/\">c\u1ea5u h\u00ecnh Swap Memory tr\u00ean Linux<\/a> l\u00e0 gi\u1ea3i ph\u00e1p quan tr\u1ecdng \u0111\u1ec3 t\u1ea1o v\u00f9ng \u0111\u1ec7m an to\u00e0n:<\/p>\n<pre><code># T\u1ea1o file swap dung l\u01b0\u1ee3ng 4GB\r\nsudo fallocate -l 4G \/swapfile\r\nsudo chmod 600 \/swapfile\r\nsudo mkswap \/swapfile\r\nsudo swapon \/swapfile\r\n\r\n# Duy tr\u00ec file swap sau khi kh\u1edfi \u0111\u1ed9ng l\u1ea1i m\u00e1y ch\u1ee7\r\necho '\/swapfile none swap sw 0 0' | sudo tee -a \/etc\/fstab<\/code><\/pre>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">5.2. M\u1edf c\u1ed5ng m\u1ea1ng b\u1eb1ng t\u01b0\u1eddng l\u1eeda UFW<\/h3>\n<p style=\"text-align: justify;\">\u0110\u1ec3 b\u1ea3o v\u1ec7 m\u00e1y ch\u1ee7 kh\u1ecfi c\u00e1c cu\u1ed9c qu\u00e9t c\u1ed5ng tr\u00e1i ph\u00e9p, b\u1ea1n n\u00ean <a href=\"https:\/\/interdata.vn\/blog\/cai-dat-va-cau-hinh-ufw\/\">thi\u1ebft l\u1eadp t\u01b0\u1eddng l\u1eeda UFW<\/a>, ch\u1ec9 m\u1edf c\u00e1c c\u1ed5ng d\u1ecbch v\u1ee5 c\u1ea7n thi\u1ebft g\u1ed3m SSH (22), HTTP (80), HTTPS (443) v\u00e0 c\u1ed5ng m\u1eb7c \u0111\u1ecbnh c\u1ee7a Immich (2283):<\/p>\n<pre><code>sudo ufw allow 22\/tcp\r\nsudo ufw allow 80\/tcp\r\nsudo ufw allow 443\/tcp\r\nsudo ufw allow 2283\/tcp\r\nsudo ufw enable<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-43583\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Mo-cong-mang.png\" alt=\"M\u1edf c\u1ed5ng m\u1ea1ng\" width=\"500\" height=\"369\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Mo-cong-mang.png 544w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Mo-cong-mang-300x221.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">5.3. C\u1ea5u h\u00ecnh Nginx Reverse Proxy k\u1ebft h\u1ee3p ch\u1ee9ng ch\u1ec9 SSL Let&#8217;s Encrypt<\/h3>\n<p style=\"text-align: justify;\">Vi\u1ec7c truy c\u1eadp tr\u1ef1c ti\u1ebfp qua giao th\u1ee9c HTTP (c\u1ed5ng 2283) kh\u00f4ng \u0111\u1ea3m b\u1ea3o an to\u00e0n cho d\u1eef li\u1ec7u nh\u1ea1y c\u1ea3m khi \u0111\u1ed3ng b\u1ed9 ngo\u00e0i m\u1ea1ng c\u00f4ng c\u1ed9ng. B\u1ea1n n\u00ean <a href=\"https:\/\/interdata.vn\/blog\/nginx-la-gi\/\">s\u1eed d\u1ee5ng Nginx l\u00e0m reverse proxy<\/a> k\u1ebft h\u1ee3p ch\u1ee9ng ch\u1ec9 b\u1ea3o m\u1eadt HTTPS. \u0110\u1ec3 xem nguy\u00ean l\u00fd chi ti\u1ebft, b\u1ea1n c\u00f3 th\u1ec3 tham kh\u1ea3o th\u00eam h\u01b0\u1edbng d\u1eabn <a href=\"https:\/\/interdata.vn\/blog\/huong-dan-deploy-nodejs-tren-vps\/\">c\u1ea5u h\u00ecnh Nginx Reverse Proxy v\u00e0 c\u00e0i ch\u1ee9ng ch\u1ec9 SSL Let&#8217;s Encrypt<\/a>.<\/p>\n<p style=\"text-align: justify;\">C\u00e0i \u0111\u1eb7t Nginx v\u00e0 Certbot:<\/p>\n<pre><code>sudo apt install -y nginx certbot python3-certbot-nginx<\/code><\/pre>\n<p style=\"text-align: justify;\">T\u1ea1o t\u1ec7p c\u1ea5u h\u00ecnh virtual host cho Immich t\u1ea1i <code>\/etc\/nginx\/sites-available\/immich.conf<\/code>.<\/p>\n<p>M\u1edf t\u1ec7p b\u1eb1ng l\u1ec7nh <code>sudo nano \/etc\/nginx\/sites-available\/immich.conf<\/code> v\u00e0 d\u00e1n \u0111o\u1ea1n c\u1ea5u h\u00ecnh sau v\u00e0o. Thay th\u1ebf <strong>&#8220;photos.yourdomain.com&#8221;<\/strong> b\u1eb1ng <strong>t\u00ean mi\u1ec1n<\/strong> c\u1ee7a b\u1ea1n ho\u1eb7c n\u1ebfu mu\u1ed1n d\u00f9ng <strong>localhost<\/strong> th\u00ec c\u00f3 th\u1ec3 gi\u1eef nguy\u00ean.<\/p>\n<pre><code>server {\r\n    server_name photos.yourdomain.com;\r\n\r\n    # Cho ph\u00e9p t\u1ea3i l\u00ean t\u1ec7p video l\u1edbn (kh\u00f4ng gi\u1edbi h\u1ea1n k\u00edch th\u01b0\u1edbc)\r\n    client_max_body_size 50000M;\r\n\r\n    location \/ {\r\n        proxy_pass http:\/\/127.0.0.1:2283;\r\n        proxy_set_header Host $host;\r\n        proxy_set_header X-Real-IP $remote_addr;\r\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header X-Forwarded-Proto $scheme;\r\n\r\n        # H\u1ed7 tr\u1ee3 k\u1ebft n\u1ed1i Websocket cho t\u00ednh n\u0103ng \u0111\u1ed3ng b\u1ed9 th\u1eddi gian th\u1ef1c\r\n        proxy_http_version 1.1;\r\n        proxy_set_header Upgrade $http_upgrade;\r\n        proxy_set_header Connection \"upgrade\";\r\n\r\n        # Th\u1eddi gian ch\u1edd truy\u1ec1n t\u1ea3i t\u1ec7p tin dung l\u01b0\u1ee3ng l\u1edbn\r\n        proxy_read_timeout 600s;\r\n        proxy_send_timeout 600s;\r\n        send_timeout 600s;\r\n    }\r\n}<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-43584\" src=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cau-hinh-Nginx-Reverse-Proxy.png\" alt=\"C\u1ea5u h\u00ecnh Nginx Reverse Proxy\" width=\"696\" height=\"559\" title=\"\" srcset=\"https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cau-hinh-Nginx-Reverse-Proxy.png 696w, https:\/\/interdata.vn\/blog\/wp-content\/uploads\/2026\/09\/Cau-hinh-Nginx-Reverse-Proxy-300x241.png 300w\" sizes=\"auto, (max-width: 696px) 100vw, 696px\" \/><\/p>\n<p>Sau \u0111\u00f3,<\/p>\n<p><strong>Ctrl + O<\/strong> \u2192 <strong>Enter<\/strong>: l\u01b0u file.<\/p>\n<p><strong>Ctrl + X<\/strong>: tho\u00e1t.<\/p>\n<p style=\"text-align: justify;\">K\u00edch ho\u1ea1t c\u1ea5u h\u00ecnh v\u00e0 c\u1ea5p ch\u1ee9ng ch\u1ec9 SSL mi\u1ec5n ph\u00ed:<\/p>\n<pre><code>sudo ln -s \/etc\/nginx\/sites-available\/immich.conf \/etc\/nginx\/sites-enabled\/\r\nsudo nginx -t\r\nsudo systemctl reload nginx\r\nsudo certbot --nginx -d photos.yourdomain.com<\/code><\/pre>\n<p><!-- BOX CTA #3: CLOUD SERVER --><\/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: 28px; font-family: 'Be Vietnam Pro', sans-serif; font-weight: bold; margin: 0; line-height: 1.2;\">Thu\u00ea Cloud Server<\/p>\n<p style=\"color: #dbeafe; font-size: 14px; font-weight: 600; margin-top: 10px;\">M\u1edf r\u1ed9ng dung l\u01b0\u1ee3ng \u0111\u0129a v\u00e0 t\u00e0i nguy\u00ean RAM t\u1ee9c th\u00ec kh\u00f4ng c\u1ea7n t\u1eaft m\u00e1y<\/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;\">Th\u01b0 vi\u1ec7n media nhi\u1ec1u Terabyte v\u00e0 c\u1ea7n nh\u1eadn di\u1ec7n AI li\u00ean t\u1ee5c?<\/h3>\n<p style=\"text-align: justify; font-size: 15px; margin-bottom: 15px;\">Khi nhi\u1ec1u ng\u01b0\u1eddi d\u00f9ng c\u00f9ng t\u1ea3i d\u1eef li\u1ec7u, vi\u1ec7c tr\u00edch xu\u1ea5t vector AI \u0111\u00f2i h\u1ecfi n\u0103ng l\u1ef1c x\u1eed l\u00fd CPU \u0111a nh\u00e2n v\u00e0 RAM l\u1edbn. Cloud Server InterData cho ph\u00e9p g\u1eafn th\u00eam \u1ed5 \u0111\u0129a l\u01b0u tr\u1eef dung l\u01b0\u1ee3ng cao v\u1edbi h\u1ea1 t\u1ea7ng Enterprise chu\u1ea9n x\u00e1c.<\/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=\"section6\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">6. H\u01b0\u1edbng D\u1eabn Sao L\u01b0u D\u1eef Li\u1ec7u V\u00e0 C\u1eadp Nh\u1eadt Immich \u0110\u1ecbnh K\u1ef3<\/h2>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">6.1. Quy tr\u00ecnh sao l\u01b0u (Backup) c\u01a1 s\u1edf d\u1eef li\u1ec7u PostgreSQL v\u00e0 th\u01b0 m\u1ee5c \u1ea3nh<\/h3>\n<p style=\"text-align: justify;\">\u0110\u1ec3 \u0111\u1ea3m b\u1ea3o an to\u00e0n tuy\u1ec7t \u0111\u1ed1i, h\u1ec7 th\u1ed1ng backup Immich c\u1ea7n th\u1ef1c hi\u1ec7n 2 ph\u1ea7n \u0111\u1ed9c l\u1eadp: b\u1ea3n sao l\u01b0u c\u01a1 s\u1edf d\u1eef li\u1ec7u (ch\u1ee9a metadata, khu\u00f4n m\u1eb7t, album) v\u00e0 th\u01b0 m\u1ee5c t\u1ec7p tin \u1ea3nh g\u1ed1c (\u0111\u00e3 c\u1ea5u h\u00ecnh t\u1ea1i <code>UPLOAD_LOCATION<\/code>).<\/p>\n<pre><code># Chuy\u1ec3n v\u00e0o th\u01b0 m\u1ee5c ch\u1ee9a docker-compose.yml c\u1ee7a Immich\r\ncd ~\/immich-app\r\n\r\n# Xu\u1ea5t to\u00e0n b\u1ed9 c\u01a1 s\u1edf d\u1eef li\u1ec7u Postgres ra file .sql\r\ndocker compose exec -t immich_postgres pg_dumpall -c -U postgres &gt; immich_db_backup_$(date +%F).sql\r\n\r\n# N\u00e9n th\u01b0 m\u1ee5c \u1ea3nh g\u1ed1c (ho\u1eb7c \u0111\u1ed3ng b\u1ed9 qua rsync\/Rclone sang m\u00e1y ch\u1ee7 l\u01b0u tr\u1eef th\u1ee9 hai)\r\nsudo rsync -avz --progress \/var\/immich\/upload \/backup\/immich-media\/<\/code><\/pre>\n<h3 style=\"color: #1e3a8a; font-size: 18px; margin: 25px 0 10px;\">6.2. Quy tr\u00ecnh c\u1eadp nh\u1eadt (Update) Immich l\u00ean phi\u00ean b\u1ea3n m\u1edbi nh\u1ea5t<\/h3>\n<p style=\"text-align: justify;\">\u0110\u1ed9i ng\u0169 ph\u00e1t tri\u1ec3n Immich ph\u00e1t h\u00e0nh b\u1ea3n c\u1eadp nh\u1eadt th\u01b0\u1eddng xuy\u00ean. Tr\u01b0\u1edbc khi n\u00e2ng c\u1ea5p, h\u00e3y \u0111\u1ecdc qua <em>Release Notes<\/em> tr\u00ean GitHub \u0111\u1ec3 ki\u1ec3m tra c\u00e1c thay \u0111\u1ed5i c\u1ea5u tr\u00fac c\u00f3 th\u1ec3 g\u00e2y xung \u0111\u1ed9t (Breaking Changes), sau \u0111\u00f3 ch\u1ea1y c\u00e1c l\u1ec7nh sau:<\/p>\n<pre><code>cd ~\/immich-app\r\n\r\n# K\u00e9o container images m\u1edbi nh\u1ea5t v\u1ec1 m\u00e1y\r\ndocker compose pull\r\n\r\n# D\u1eebng v\u00e0 kh\u1edfi \u0111\u1ed9ng l\u1ea1i c\u1ee5m container v\u1edbi image m\u1edbi\r\ndocker compose up -d\r\n\r\n# X\u00f3a b\u1ecf c\u00e1c images c\u0169 kh\u00f4ng c\u00f2n s\u1eed d\u1ee5ng \u0111\u1ec3 gi\u1ea3i ph\u00f3ng dung l\u01b0\u1ee3ng \u0111\u0129a\r\ndocker image prune -f<\/code><\/pre>\n<h2 id=\"section7\" style=\"color: #1e3a8a; font-size: 24px; font-weight: bold; border-left: 5px solid #2563EB; padding-left: 15px; margin: 40px 0 20px;\">7. C\u00e2u H\u1ecfi Th\u01b0\u1eddng G\u1eb7p V\u1ec1 C\u00e0i \u0110\u1eb7t V\u00e0 S\u1eed D\u1ee5ng Immich Tr\u00ean Ubuntu (FAQ)<\/h2>\n<div style=\"margin-bottom: 20px;\">\n<p style=\"font-weight: bold; color: #1e3a8a; font-size: 16px; margin-bottom: 5px;\">1. Immich c\u00f3 l\u00e0m thay \u0111\u1ed5i ch\u1ea5t l\u01b0\u1ee3ng \u1ea3nh g\u1ed1c ho\u1eb7c x\u00f3a th\u00f4ng tin EXIF kh\u00f4ng?<\/p>\n<p style=\"text-align: justify; font-size: 15px; margin-top: 0;\">Kh\u00f4ng. Immich gi\u1eef nguy\u00ean v\u1eb9n 100% t\u1ec7p tin \u1ea3nh g\u1ed1c, video g\u1ed1c c\u00f9ng to\u00e0n b\u1ed9 si\u00eau d\u1eef li\u1ec7u EXIF (ng\u00e0y ch\u1ee5p, thi\u1ebft b\u1ecb, t\u1ecda \u0111\u1ed9 GPS, kh\u1ea9u \u0111\u1ed9). H\u1ec7 th\u1ed1ng ch\u1ec9 t\u1ea1o th\u00eam c\u00e1c t\u1ec7p thumbnail \u0111\u1ecbnh d\u1ea1ng WebP ho\u1eb7c WebM ph\u1ee5c v\u1ee5 vi\u1ec7c t\u1ea3i nhanh tr\u00ean giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng.<\/p>\n<\/div>\n<div style=\"margin-bottom: 20px;\">\n<p style=\"font-weight: bold; color: #1e3a8a; font-size: 16px; margin-bottom: 5px;\">2. T\u00f4i c\u00f3 th\u1ec3 import th\u01b0 vi\u1ec7n \u1ea3nh c\u00f3 s\u1eb5n t\u1eeb \u1ed5 c\u1ee9ng ngo\u00e0i v\u00e0o Immich \u0111\u01b0\u1ee3c kh\u00f4ng?<\/p>\n<p style=\"text-align: justify; font-size: 15px; margin-top: 0;\">C\u00f3. Immich h\u1ed7 tr\u1ee3 t\u00ednh n\u0103ng <em>External Libraries<\/em> (Th\u01b0 vi\u1ec7n ngo\u00e0i). B\u1ea1n ch\u1ec9 c\u1ea7n mount \u1ed5 c\u1ee9ng v\u00e0o Ubuntu, g\u1eafn volume \u0111\u01b0\u1eddng d\u1eabn \u0111\u00f3 v\u00e0o t\u1ec7p <code>docker-compose.yml<\/code> v\u00e0 th\u00eam \u0111\u01b0\u1eddng d\u1eabn trong giao di\u1ec7n qu\u1ea3n tr\u1ecb Admin m\u00e0 kh\u00f4ng c\u1ea7n copy \u0111\u00e8 hay thay \u0111\u1ed5i v\u1ecb tr\u00ed file c\u0169.<\/p>\n<\/div>\n<div style=\"margin-bottom: 20px;\">\n<p style=\"font-weight: bold; color: #1e3a8a; font-size: 16px; margin-bottom: 5px;\">3. L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 t\u1eaft t\u00ednh n\u0103ng Machine Learning n\u1ebfu m\u00e1y ch\u1ee7 c\u00f3 \u00edt RAM?<\/p>\n<p style=\"text-align: justify; font-size: 15px; margin-top: 0;\">N\u1ebfu m\u00e1y ch\u1ee7 ch\u1ec9 c\u00f3 2GB &#8211; 3GB RAM, b\u1ea1n c\u00f3 th\u1ec3 v\u00f4 hi\u1ec7u h\u00f3a d\u1ecbch v\u1ee5 n\u00e0y b\u1eb1ng c\u00e1ch x\u00f3a ho\u1eb7c comment container <code>immich-machine-learning<\/code> trong file <code>docker-compose.yml<\/code>, \u0111\u1ed3ng th\u1eddi v\u00e0o <strong>Administration &gt; Settings &gt; Machine Learning Settings<\/strong> tr\u00ean giao di\u1ec7n web \u0111\u1ec3 t\u1eaft t\u00ednh n\u0103ng nh\u1eadn di\u1ec7n khu\u00f4n m\u1eb7t v\u00e0 l\u1eadp ch\u1ec9 m\u1ee5c CLIP.<\/p>\n<\/div>\n<div style=\"margin-bottom: 20px;\">\n<p style=\"font-weight: bold; color: #1e3a8a; font-size: 16px; margin-bottom: 5px;\">4. \u1ee8ng d\u1ee5ng \u0111i\u1ec7n tho\u1ea1i c\u00f3 t\u1ef1 \u0111\u1ed9ng backup \u1ea3nh khi ch\u1ea1y ng\u1ea7m tr\u00ean iOS kh\u00f4ng?<\/p>\n<p style=\"text-align: justify; font-size: 15px; margin-top: 0;\">C\u00f3. Tuy nhi\u00ean h\u1ec7 \u0111i\u1ec1u h\u00e0nh iOS c\u00f3 c\u01a1 ch\u1ebf qu\u1ea3n l\u00fd pin nghi\u00eam ng\u1eb7t v\u1edbi c\u00e1c ti\u1ebfn tr\u00ecnh n\u1ec1n. \u0110\u1ec3 \u0111\u1ed3ng b\u1ed9 li\u00ean t\u1ee5c, b\u1ea1n c\u1ea7n c\u1ea5p quy\u1ec1n <em>Background App Refresh<\/em> v\u00e0 th\u1ec9nh tho\u1ea3ng m\u1edf app \u0111\u1ec3 k\u00edch ho\u1ea1t ti\u1ebfn tr\u00ecnh sao l\u01b0u c\u00e1c video c\u00f3 dung l\u01b0\u1ee3ng l\u1edbn.<\/p>\n<\/div>\n<div style=\"margin-bottom: 20px;\">\n<p style=\"font-weight: bold; color: #1e3a8a; font-size: 16px; margin-bottom: 5px;\">5. S\u1ef1 c\u1ed1 th\u01b0\u1eddng g\u1eb7p nh\u1ea5t khi c\u00e0i \u0111\u1eb7t Immich l\u00e0 g\u00ec v\u00e0 c\u00e1ch s\u1eeda?<\/p>\n<p style=\"text-align: justify; font-size: 15px; margin-top: 0;\">L\u1ed7i ph\u1ed5 bi\u1ebfn nh\u1ea5t l\u00e0 sai quy\u1ec1n th\u01b0 m\u1ee5c l\u01b0u tr\u1eef (Permission Denied) khi\u1ebfn container kh\u00f4ng ghi \u0111\u01b0\u1ee3c file v\u00e0o <code>UPLOAD_LOCATION<\/code>. B\u1ea1n ch\u1ec9 c\u1ea7n th\u1ef1c hi\u1ec7n l\u1ec7nh <code>sudo chown -R 1000:1000 \/duong-dan-anh<\/code> \u0111\u1ec3 c\u1ea5p quy\u1ec1n ghi cho user ch\u1ea1y trong container.<\/p>\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: 15px;\">L\u1eddi K\u1ebft<\/h3>\n<p style=\"text-align: justify;\">Quy tr\u00ecnh <strong>c\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Immich tr\u00ean Ubuntu<\/strong> b\u1eb1ng Docker Compose mang l\u1ea1i cho b\u1ea1n to\u00e0n quy\u1ec1n ki\u1ec3m so\u00e1t kh\u00f4ng gian l\u01b0u tr\u1eef h\u00ecnh \u1ea3nh v\u00e0 video c\u00e1 nh\u00e2n v\u1edbi \u0111\u1ea7y \u0111\u1ee7 c\u00e1c t\u00ednh n\u0103ng hi\u1ec7n \u0111\u1ea1i nh\u01b0 nh\u1eadn di\u1ec7n khu\u00f4n m\u1eb7t v\u00e0 t\u00ecm ki\u1ebfm AI. N\u1ebfu b\u1ea1n c\u1ea7n m\u1ed9t n\u1ec1n t\u1ea3ng m\u00e1y ch\u1ee7 v\u1eadn h\u00e0nh 24\/7 \u1ed5n \u0111\u1ecbnh, t\u1ed1c \u0111\u1ed9 m\u1ea1ng cao v\u00e0 dung l\u01b0\u1ee3ng \u0111\u0129a NVMe Enterprise chu\u1ea9n x\u00e1c, h\u00e3y li\u00ean h\u1ec7 ngay v\u1edbi InterData \u0111\u1ec3 l\u1ef1a ch\u1ecdn gi\u1ea3i ph\u00e1p VPS ho\u1eb7c Cloud Server t\u1ed1i \u01b0u nh\u1ea5t cho h\u1ec7 th\u1ed1ng c\u1ee7a m\u00ecnh.<\/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>L\u01b0u \u00fd: H\u01b0\u1edbng d\u1eabn k\u1ef9 thu\u1eadt tr\u00ean \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng d\u1ef1a tr\u00ean t\u00e0i li\u1ec7u chu\u1ea9n c\u1ee7a Immich v\u00e0 th\u1eed nghi\u1ec7m th\u1ef1c t\u1ebf tr\u00ean h\u1ec7 \u0111i\u1ec1u h\u00e0nh Ubuntu Server. C\u1ea5u h\u00ecnh bi\u1ebfn m\u00f4i tr\u01b0\u1eddng v\u00e0 t\u00e0i nguy\u00ean m\u00e1y ch\u1ee7 c\u00f3 th\u1ec3 thay \u0111\u1ed5i t\u00f9y thu\u1ed9c v\u00e0o quy m\u00f4 d\u1eef li\u1ec7u media th\u1ef1c t\u1ebf c\u1ee7a b\u1ea1n.<\/em><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>C\u00e0i \u0111\u1eb7t v\u00e0 s\u1eed d\u1ee5ng Immich tr\u00ean Ubuntu l\u00e0 gi\u1ea3i ph\u00e1p t\u1ef1 host kho l\u01b0u tr\u1eef \u1ea3nh v\u00e0 video c\u00e1 nh\u00e2n hi\u1ec7u qu\u1ea3 nh\u1ea5t hi\u1ec7n nay \u0111\u1ec3 thay th\u1ebf Google Photos v\u00e0 iCloud m\u00e0 kh\u00f4ng t\u1ed1n ph\u00ed duy tr\u00ec h\u00e0ng th\u00e1ng. B\u00e0i vi\u1ebft n\u00e0y t\u1eeb InterData s\u1ebd h\u01b0\u1edbng d\u1eabn b\u1ea1n t\u1eebng b\u01b0\u1edbc thi\u1ebft l\u1eadp Immich<\/p>\n","protected":false},"author":2,"featured_media":43588,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[161],"tags":[],"class_list":["post-43537","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\/43537","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=43537"}],"version-history":[{"count":8,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43537\/revisions"}],"predecessor-version":[{"id":43592,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/posts\/43537\/revisions\/43592"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media\/43588"}],"wp:attachment":[{"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/media?parent=43537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/categories?post=43537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/interdata.vn\/blog\/wp-json\/wp\/v2\/tags?post=43537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}