1 2 3<!DOCTYPE html> 4<html> 5 <head> 6 7 8 9 10 11 12 13<meta charset="utf-8"> 14<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no" /> 15 16 17 18<meta property="og:title" content="Harbor &ndash; Harbor Installation and Configuration"> 19 20<meta property="og:type" content="documentation"> 21 22<meta property="og:url" content="https://goharbor.io/docs/2.15.0/install-config/"> 23<meta property="og:locale" content="en_US"> 24 25<meta property="og:site_name" content="Harbor"> 26 27 28<meta name="og:type" content="article"> 29<meta name="og:image" content="https://goharbor.io/img/logos/harbor-icon-color.png"> 30<meta name="og:image:alt" content="Harbor &ndash; Harbor Installation and Configuration project logo"> 31<meta name="og:image:type" content="image/png"> 32 33 34 35<meta name="twitter:card" content="summary"> 36<meta name="twitter:site" content="@project_harbor"> 37<meta name="twitter:creator" content="@project_harbor"> 38 39<link rel="canonical" href="https://goharbor.io/docs/2.15.0/install-config/"> 40<link rel="shortcut icon" href="/favicon.svg" type="image/svg"> 41<meta name="generator" content="Hugo 0.74.0" /> 42 43 <title> 44 45Harbor docs | Harbor Installation and Configuration 46 47 </title> 48 49<link rel="stylesheet" href="/css/style.b36c5e8ca891bb03c745ed6765eae37b4b0f2346d4a9984b346af1db1ad0c8e8.css" integrity="sha256-s2xejKiRuwPHRe1nZerje0sPI0bUqZhLNGrx2xrQyOg="> 50 51 52 53<link rel="shortcut icon" href="/favicon.png"> 54 55 56 57 58 59 60 61 62
62<script> 63 (function() { 64 const theme = localStorage.getItem('harbor-theme') || 65 (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); 66 document.documentElement.setAttribute('data-theme', theme); 67 })(); 68 </script>
68 69 70 71
71<script>
vendor: 351 bytes, lines 71-75
71(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 72 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 73 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 74 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 75 })(window,document,'script','dataLayer','
75GTM-TKWH5SPC
vendor: 3 bytes, line 75
75');
75</script>
75 76 77 </head> 78 <body class="is-page has-navbar-fixed-top">
vendor: 77 bytes, lines 78-80
78 79 80 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
80GTM-TKWH5SPC
vendor: 114 bytes, lines 80-83
80" 81 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 82 83
83<main class="is-main"> 84 85 86 87 88 89 90 91 92 93 94<nav class="navbar is-fixed-top" role="navigation" aria-label="main navigation" x-data="{ open: false }"> 95 <div class="container"> 96 <div class="navbar-brand"> 97 <a class="navbar-item" href="https://goharbor.io"> 98 <img src="/img/logos/harbor-horizontal-color.png" alt="Harbor logo"> 99 </a> 100 101 102 <div class="navbar-item is-hidden-desktop"> 103 <button class="search-trigger search-trigger--compact" 104 type="button" 105 x-data="{ mac: /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) }" 106 @click="$dispatch('open-search')" 107 aria-label="Search goharbor.io"> 108 <span class="icon is-small"> 109 <i class="fas fa-sm fa-search"></i> 110 </span> 111 </button> 112</div> 113 114 115 116 <div role="button" class="navbar-burger" data-target="navbar-menu" aria-label="menu" aria-expanded="false" @click="open = !open" :class="{ 'is-active': open }"> 117 <span aria-hidden="true"></span> 118 <span aria-hidden="true"></span> 119 <span aria-hidden="true"></span> 120 </div> 121 122 </div> 123 124 125 <div class="navbar-menu" id="navbar-menu" :class="{ 'is-active': open }"> 126 127 <div class="navbar-start"> 128 <div class="navbar-item"> 129 <div class="tags has-addons has-text-weight-bold"> 130 <span class="tag is-light"> 131 2.15.0 132 </span> 133 134 <span class="tag is-success"> 135 latest 136 </span> 137 138 </div> 139 </div> 140 </div> 141 142 143 144 <div class="navbar-end"> 145 <div class="navbar-item is-hidden-touch"> 146 <button class="search-trigger" 147 type="button" 148 x-data="{ mac: /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) }" 149 @click="$dispatch('open-search')" 150 aria-label="Search goharbor.io"> 151 <span class="icon is-small"> 152 <i class="fas fa-sm fa-search"></i> 153 </span> 154 <span class="search-trigger__label">Search</span> 155 <span class="search-trigger__hint" aria-hidden="true" 156 x-text="mac ? 'âK' : 'Ctrl K'"></span> 157 </button> 158</div> 159 160 161 162 163 164 165 <a class="navbar-item has-text-weight-bold" href="/" data-proofer-ignore> 166 Home 167 </a> 168 169 170 171 172 <a class="navbar-item has-text-weight-bold" href="/docs/latest/install-config" data-proofer-ignore> 173 Getting Started 174 </a> 175 176 177 178 179 <a class="navbar-item has-text-weight-bold" href="/community" data-proofer-ignore> 180 Community 181 </a> 182 183 184 185 186 <a class="navbar-item has-text-weight-bold" href="/blog" data-proofer-ignore> 187 Blog 188 </a> 189 190 191 <div class="navbar-item has-dropdown is-hoverable"> 192 <p class="navbar-link is-arrowless has-text-weight-bold"> 193 <span> 194 Docs 195 </span> 196 <span class="icon has-text-secondary"> 197 <i class="fas fa-caret-down"></i> 198 </span> 199 </p> 200 201 <div class="navbar-dropdown is-right"> 202 <div class="navbar-item"> 203 <div class="columns"> 204 <div class="column"> 205 <a class="has-text-black" href="/cli-docs" data-proofer-ignore> 206 <span> 207 Harbor CLI Docs 208 </span> 209 </a> 210 </div> 211 </div> 212 </div> 213 214 215 <div class="navbar-item"> 216 <div class="columns"> 217 <div class="column"> 218 <a class="has-text-black" href="/docs/2.15.0" data-proofer-ignore> 219 <span> 220 2.15.0 221 </span> 222 223 224 <span class="tag is-success"> 225 latest 226 </span> 227 228 </a> 229 </div> 230 </div> 231 </div> 232 233 234 <div class="navbar-item"> 235 <div class="columns"> 236 <div class="column"> 237 <a class="has-text-black" href="/docs/2.14.0" data-proofer-ignore>
238 <span> 239 2.14.0 240 </span> 241 242 243 </a> 244 </div> 245 </div> 246 </div> 247 248 249 <div class="navbar-item"> 250 <div class="columns"> 251 <div class="column"> 252 <a class="has-text-black" href="/docs/2.13.0" data-proofer-ignore> 253 <span> 254 2.13.0 255 </span> 256 257 258 </a> 259 </div> 260 </div> 261 </div> 262 263 264 <div class="navbar-item"> 265 <div class="columns"> 266 <div class="column"> 267 <a class="has-text-black" href="/docs/2.12.0" data-proofer-ignore> 268 <span> 269 2.12.0 270 </span> 271 272 273 </a> 274 </div> 275 </div> 276 </div> 277 278 279 <div class="navbar-item"> 280 <div class="columns"> 281 <div class="column"> 282 <a class="has-text-black" href="/docs/2.11.0" data-proofer-ignore> 283 <span> 284 2.11.0 285 </span> 286 287 288 </a> 289 </div> 290 </div> 291 </div> 292 293 294 <div class="navbar-item"> 295 <div class="columns"> 296 <div class="column"> 297 <a class="has-text-black" href="/docs/2.10.0" data-proofer-ignore> 298 <span> 299 2.10.0 300 </span> 301 302 303 </a> 304 </div> 305 </div> 306 </div> 307 308 309 <div class="navbar-item"> 310 <div class="columns"> 311 <div class="column"> 312 <a class="has-text-black" href="/docs/2.9.0" data-proofer-ignore> 313 <span> 314 2.9.0 315 </span> 316 317 318 </a> 319 </div> 320 </div> 321 </div> 322 323 324 <div class="navbar-item"> 325 <div class="columns"> 326 <div class="column"> 327 <a class="has-text-black" href="/docs/2.8.0" data-proofer-ignore> 328 <span> 329 2.8.0 330 </span> 331 332 333 </a> 334 </div> 335 </div> 336 </div> 337 338 339 <div class="navbar-item"> 340 <div class="columns"> 341 <div class="column"> 342 <a class="has-text-black" href="/docs/2.7.0" data-proofer-ignore> 343 <span> 344 2.7.0 345 </span> 346 347 348 </a> 349 </div> 350 </div> 351 </div> 352 353 354 <div class="navbar-item"> 355 <div class="columns"> 356 <div class="column"> 357 <a class="has-text-black" href="/docs/2.6.0" data-proofer-ignore> 358 <span> 359 2.6.0 360 </span> 361 362 363 </a> 364 </div> 365 </div> 366 </div> 367 368 369 <div class="navbar-item"> 370 <div class="columns"> 371 <div class="column"> 372 <a class="has-text-black" href="/docs/2.5.0" data-proofer-ignore> 373 <span> 374 2.5.0 375 </span> 376 377 378 </a> 379 </div> 380 </div> 381 </div> 382 383 384 <div class="navbar-item"> 385 <div class="columns"> 386 <div class="column"> 387 <a class="has-text-black" href="/docs/2.4.0" data-proofer-ignore>
388 <span> 389 2.4.0 390 </span> 391 392 393 </a> 394 </div> 395 </div> 396 </div> 397 398 399 <div class="navbar-item"> 400 <div class="columns"> 401 <div class="column"> 402 <a class="has-text-black" href="/docs/2.3.0" data-proofer-ignore> 403 <span> 404 2.3.0 405 </span> 406 407 408 </a> 409 </div> 410 </div> 411 </div> 412 413 414 <div class="navbar-item"> 415 <div class="columns"> 416 <div class="column"> 417 <a class="has-text-black" href="/docs/2.2.0" data-proofer-ignore> 418 <span> 419 2.2.0 420 </span> 421 422 423 </a> 424 </div> 425 </div> 426 </div> 427 428 429 <div class="navbar-item"> 430 <div class="columns"> 431 <div class="column"> 432 <a class="has-text-black" href="/docs/2.1.0" data-proofer-ignore> 433 <span> 434 2.1.0 435 </span> 436 437 438 </a> 439 </div> 440 </div> 441 </div> 442 443 444 <div class="navbar-item"> 445 <div class="columns"> 446 <div class="column"> 447 <a class="has-text-black" href="/docs/2.0.0" data-proofer-ignore> 448 <span> 449 2.0.0 450 </span> 451 452 453 </a> 454 </div> 455 </div> 456 </div> 457 458 459 <div class="navbar-item"> 460 <div class="columns"> 461 <div class="column"> 462 <a class="has-text-black" href="/docs/1.10" data-proofer-ignore> 463 <span> 464 1.10 465 </span> 466 467 468 </a> 469 </div> 470 </div> 471 </div> 472 473 </div> 474 </div> 475 476 477 478 479<div 480 class="navbar-item theme-toggle-wrapper" 481 x-data="{ 482 theme: 'light', 483 init() { 484 // Initialize theme from localStorage or system preference 485 const savedTheme = localStorage.getItem('harbor-theme'); 486 const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; 487 this.theme = savedTheme || (systemPrefersDark ? 'dark' : 'light'); 488 this.applyTheme(); 489 }, 490 applyTheme() { 491 document.documentElement.setAttribute('data-theme', this.theme); 492 localStorage.setItem('harbor-theme', this.theme); 493 }, 494 toggleTheme() { 495 this.theme = this.theme === 'light' ? 'dark' : 'light'; 496 this.applyTheme(); 497 } 498 }" 499> 500 <button 501 @click="toggleTheme()" 502 class="theme-toggle" 503 :aria-label="theme === 'light' ? 'Switch to dark mode' : 'Switch to light mode'" 504 :title="theme === 'light' ? 'Switch to dark mode' : 'Switch to light mode'" 505 type="button" 506 > 507 <span class="icon"> 508 <i :class="theme === 'light' ? 'fas fa-moon' : 'fas fa-sun'"></i> 509 </span> 510 </button> 511</div> 512 513 514 <div class="navbar-item"> 515 <div class="buttons"> 516 <a class="button is-small is-black is-outlined" target="_blank" href="https://github.com/goharbor/harbor" aria-label="GitHub"> 517 <span class="icon"> 518 <i class="fab fa-github"></i> 519 </span> 520 </a> 521 522 <a class="button is-small is-twitter-blue" target="_blank" href="https://twitter.com/project_harbor" aria-label="Twitter"> 523 <span class="icon"> 524 <i class="fab fa-twitter"></i> 525 </span> 526 </a> 527 528 <a class="button is-small is-slack-green" target="_blank" href="https://cloud-native.slack.com/messages/harbor" aria-label="Slack"> 529 <span class="icon"> 530 <i class="fab fa-slack"></i> 531 </span> 532 </a> 533</div> 534 535 </div> 536 </div> 537 538 </div> 539 540 </div> 541</nav> 542 543 <div class="search" 544 x-data="harborSearch" 545 @open-search.window="openModal()" 546 data-docs-version="2.15.0" 547 data-latest-version="2.15.0"> 548 549 <div class="search-backdrop" 550 x-show="open" 551 @click="closeModal()" 552 style="display: none;"></div> 553 554 555 <div class="search-modal" role="dialog" aria-modal="true" aria-label="Search goharbor.io" 556 x-ref="modal" 557 x-show="open" 558 @keydown.escape.window.prevent="open && closeModal()" 559 @keydown="trapFocus($event)" 560 style="display: none;"> 561 562 <div class="search-modal__header">
563 <span class="icon search-modal__icon"> 564 <i class="fas fa-search"></i> 565 </span> 566 567 <input class="search-modal__input" 568 type="text" 569 placeholder="Search Harbor docs and site..." 570 aria-label="Search query" 571 role="combobox" 572 aria-controls="search-results-list" 573 aria-autocomplete="list" 574 :aria-expanded="totalResults.length > 0" 575 :aria-activedescendant="activeDescendantId()" 576 x-ref="searchInput" 577 x-model="query" 578 @input.debounce.150ms="search()" 579 @keydown="handleKeydown($event)" 580 autocomplete="off"> 581 <button class="search-modal__close" @click="closeModal()" aria-label="Close search"> 582 <span class="icon"><i class="fas fa-times"></i></span> 583 </button> 584 </div> 585 586 587 <div class="search-filters" x-show="hasFilters()"> 588 <button class="search-filters__pill" 589 :class="{ 'search-filters__pill--active': activeType === 'all' }" 590 :aria-pressed="activeType === 'all'" 591 @click="setType('all')">All</button> 592 593 594 <div class="search-pill" 595 :class="{ 'search-pill--active': activeType === 'Docs' }" 596 x-show="hasType('Docs')"> 597 <button class="search-pill__label" 598 :aria-pressed="activeType === 'Docs'" 599 @click="setType('Docs')">Docs</button> 600 <span class="search-pill__version"> 601 <select id="search-version" 602 aria-label="Harbor docs version to search" 603 x-ref="versionSelect" 604 @change="setVersion($event.target.value)"> 605 <template x-for="v in versions" :key="v"> 606 <option :value="v" x-text="v"></option> 607 </template> 608 </select> 609 </span> 610 </div> 611 612 613 <button class="search-filters__pill" 614 :class="{ 'search-filters__pill--active': activeType === 'Website' }" 615 :aria-pressed="activeType === 'Website'" 616 @click="setType('Website')" 617 x-show="websiteTypes().length">Website</button> 618 </div> 619 620 <div class="search-results" x-ref="resultsList"> 621 <div class="search-loading" x-show="loading" role="status" aria-live="polite"> 622 Searching… 623 </div> 624 625 626 <div id="search-results-list" role="listbox" aria-label="Search results"> 627 <template x-for="group in sectionOrder" :key="group"> 628 <div role="group" :aria-label="group"> 629 <div class="search-results__section" x-text="group" aria-hidden="true"></div> 630 <template x-for="result in groupedResults[group]" :key="result.url"> 631 <a class="search-result" 632 role="option" 633 :id="resultId(result)" 634 :aria-selected="isSelected(result)" 635 :class="{ 'search-result--active': isSelected(result) }" 636 :href="result.url" 637 @click="onResultClick($event)" 638 @mouseenter="selectedIndex = totalResults.indexOf(result)"> 639 <div class="search-result__title"> 640 <span x-text="result.meta?.title || 'Untitled'"></span> 641 642 <span class="tag is-light search-result__version" 643 x-show="versionOf(result)" 644 x-text="versionOf(result)"></span> 645 </div> 646 <div class="search-result__excerpt" x-html="result.excerpt"></div> 647 </a> 648 </template> 649 </div> 650 </template> 651 </div> 652 653 654 <div class="search-empty" x-show="searchError && !loading" role="alert"> 655 <p><strong>Search is unavailable right now.</strong></p> 656 <p>The search index could not be loaded.</p> 657 <p> 658 <button class="search-filters__pill" @click="retry()">Try again</button> 659 </p> 660 </div> 661 662 <div class="search-empty" 663 x-show="!searchError && query.length > 0 && totalResults.length === 0 && !loading"> 664 <p>No results for “<span x-text="query"></span>”</p> 665 666 <p x-show="version && activeType !== 'Website'"> 667 Docs results are limited to Harbor <span x-text="version"></span>. 668 Try another release from the <strong>Docs</strong> selector. 669 </p> 670 </div> 671 </div> 672 </div> 673</div> 674 675 676 677 678 679
680<script src="/js/search.min.dc594391107969d142d97211c036ce1ec40280e997d86174bf5f7411ca94468d.js" integrity="sha256-3FlDkRB5adFC2XIRwDbOHsQCgOmX2GF0v190EcqURo0="></script>
680 681 682 683 684 685 686 687 688 689<section class="hero is-small"> 690 <div class="hero-body"> 691 <div class="container"> 692 <br/> 693 <p class="title is-size-1 is-size-2-mobile has-text-weight-light"> 694 Harbor Installation and Configuration 695 </p> 696 697 698 </div> 699 </div> 700</section> 701 702 703 704 705<section class="section"> 706 <div class="container"> 707 <div class="columns is-variable is-8"> 708 <div class="column is-one-quarter"> 709 <aside class="docs-menu is-sticky is-scrollable"> 710 711 712 713 714 715<aside class="menu"> 716 <p class="menu-label"> 717 <a href="/docs/2.15.0"> 718 Harbor version 2.15.0 719 </a> 720 </p> 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 <p class="menu-label"> 791 <a class="has-text-weight-bold" href="/docs/2.15.0/install-config/"> 792 Harbor Installation and Configuration 793 </a> 794 </p> 795 796 797 <ul class="menu-list"> 798 799 800 801 802 803 <li> 804 <a href="/docs/2.15.0/install-config/demo-server/"> 805 Test Harbor with the Demo Server 806 </a> 807 </li> 808 809 810 811 <li> 812 <a href="/docs/2.15.0/install-config/harbor-compatibility-list/"> 813 Harbor Compatibility List 814 </a> 815 </li> 816 817 818 819 <li> 820 <a href="/docs/2.15.0/install-config/installation-prereqs/"> 821 Harbor Installation Prerequisites 822 </a> 823 </li> 824 825 826 827 <li> 828 <a href="/docs/2.15.0/install-config/download-installer/"> 829 Download the Harbor Installer 830 </a> 831 </li> 832 833 834 835 <li> 836 <a href="/docs/2.15.0/install-config/configure-https/"> 837 Configure HTTPS Access to Harbor 838 </a> 839 </li> 840 841 842 843 <li> 844 <a href="/docs/2.15.0/install-config/configure-internal-tls/"> 845 Configure Internal TLS communication between Harbor Component 846 </a> 847 </li> 848 849 850 851 <li> 852 <a href="/docs/2.15.0/install-config/configure-yml-file/"> 853 Configure the Harbor YML File 854 </a> 855 </li> 856 857 858 859 <li> 860 <a href="/docs/2.15.0/install-config/run-installer-script/"> 861 Run the Installer Script 862 </a> 863 </li> 864 865 866 867 <li> 868 <a href="/docs/2.15.0/install-config/harbor-ha-helm/"> 869 Deploying Harbor with High Availability via Helm 870 </a> 871 </li> 872 873 874 875 <li> 876 <a href="/docs/2.15.0/install-config/troubleshoot-installation/"> 877 Troubleshooting Harbor Installation 878 </a> 879 </li> 880 881 882 883 <li> 884 <a href="/docs/2.15.0/install-config/reconfigure-manage-lifecycle/"> 885 Reconfigure Harbor and Manage the Harbor Lifecycle 886 </a> 887 </li> 888 889 890 891 <li> 892 <a href="/docs/2.15.0/install-config/customize-token-service/"> 893 Customize the Harbor Token Service 894 </a> 895 </li> 896 897 898 899 <li> 900 <a href="/docs/2.15.0/install-config/configure-system-settings-cli/"> 901 Harbor Configuration 902 </a> 903 </li> 904 905 </ul> 906 907 908 909 910 911 912 <p class="menu-label"> 913 <a href="/docs/2.15.0/administration/"> 914 Harbor Administration 915 </a> 916 </p> 917 918 919 920 921 922 923 924 <p class="menu-label"> 925 <a href="/docs/2.15.0/working-with-projects/"> 926 Working with Projects 927 </a> 928 </p> 929 930 931 932 933 934 935 936 <p class="menu-label"> 937 <a href="/docs/2.15.0/build-customize-contribute/"> 938 Building, Customizing, and Contributing to Harbor 939 </a> 940 </p> 941 942 943 944 945 946 947 948 949 950 951 952 953 954</aside> 955 956 </aside> 957 </div> 958 959 <div class="column is-half"> 960 961 962 <meta data-pagefind-filter="scope[content]" content="2.15.0"> 963 <meta data-pagefind-filter="type[content]" content="Docs"> 964 <meta data-pagefind-meta="version[content]" content="2.15.0"> 965 966 <meta data-pagefind-meta="title[content]" content="Harbor Installation and Configuration"> 967 968 <div class="content is-constrained has-extra-bottom-padding is-medium" data-pagefind-body> 969 970 <p>This section describes how to perform a new installation of Harbor.</p> 971<p>If you are upgrading from a previous version of Harbor, you might need to update the configuration file and migrate your data to fit the database schema of the later version. For information about upgrading, see 972<a href="/docs/2.15.0/administration/upgrade/">Upgrading Harbor</a>.</p> 973<p>Before you install Harbor, you can test the latest version of Harbor on a demo environment maintained by the Harbor team. For information, see 974<a href="/docs/2.15.0/install-config/demo-server/">Test Harbor with the Demo Server</a>.</p> 975<p>Harbor supports integration with different 3rd-party replication adapters for replicating data, OIDC adapters for authN/authZ, and scanner adapters for vulnerability scanning of container images. For information about the supported adapters, see the
976<a href="/docs/2.15.0/install-config/harbor-compatibility-list/">Harbor Compatibility List</a>.</p> 977<h2 id="installation-process">Installation Process</h2> 978<p>The standard Harbor installation process involves the following stages:</p> 979<ol> 980<li>Make sure that your target host meets the 981<a href="/docs/2.15.0/install-config/installation-prereqs/">Harbor Installation Prerequisites</a>.</li> 982<li> 983<a href="/docs/2.15.0/install-config/download-installer/">Download the Harbor Installer</a></li> 984<li> 985<a href="/docs/2.15.0/install-config/configure-https/">Configure HTTPS Access to Harbor</a></li> 986<li> 987<a href="/docs/2.15.0/install-config/configure-yml-file/">Configure the Harbor YML File</a></li> 988<li> 989<a href="/docs/2.15.0/install-config/configure-internal-tls/">Configure Enabling Internal TLS</a></li> 990<li> 991<a href="/docs/2.15.0/install-config/run-installer-script/">Run the Installer Script</a></li> 992</ol> 993<p>If installation fails, see 994<a href="/docs/2.15.0/install-config/troubleshoot-installation/">Troubleshooting Harbor Installation</a>.</p> 995<h2 id="deploy-harbor-on-kubernetes">Deploy Harbor on Kubernetes</h2> 996<p>You can also use Helm to install Harbor on a Kubernetes cluster, to make Harbor highly available. For information about installing Harbor with Helm on a Kubernetes cluster, see 997<a href="/docs/2.15.0/install-config/harbor-ha-helm/">Deploying Harbor with High Availability via Helm</a>.</p> 998<h2 id="post-installation-configuration">Post-Installation Configuration</h2> 999<p>For information about how to manage your deployed Harbor instance, see 1000<a href="/docs/2.15.0/install-config/reconfigure-manage-lifecycle/">Reconfigure Harbor and Manage the Harbor Lifecycle</a>.</p> 1001<p>By default, Harbor uses its own private key and certificate to authenticate with Docker. For information about how to optionally customize your configuration to use your own key and certificate, see 1002<a href="/docs/2.15.0/install-config/customize-token-service/">Customize the Harbor Token Service</a>.</p> 1003<p>After installation, log into your Harbor via the web console to configure the instance under ‘configuration’. Harbor also provides a command line interface (CLI) that allows you to 1004<a href="/docs/2.15.0/install-config/configure-system-settings-cli/">Configure Harbor System Settings at the Command Line</a>.</p> 1005<h2 id="harbor-components">Harbor Components</h2> 1006<p>The table below lists the some of the key components that are deployed when you deploy Harbor.</p> 1007<table> 1008<thead> 1009<tr> 1010<th>Component</th> 1011<th>Version</th> 1012</tr> 1013</thead> 1014<tbody> 1015<tr> 1016<td>Postgresql</td> 1017<td>15.10</td> 1018</tr> 1019<tr> 1020<td>Redis</td> 1021<td>7.2.6</td> 1022</tr> 1023<tr> 1024<td>Beego</td> 1025<td>2.3.4</td> 1026</tr> 1027<tr> 1028<td>Distribution/Distribution</td> 1029<td>2.8.3</td> 1030</tr> 1031<tr> 1032<td>Helm</td> 1033<td>2.9.1</td> 1034</tr> 1035<tr> 1036<td>Swagger-ui</td> 1037<td>5.9.1</td> 1038</tr> 1039</tbody> 1040</table> 1041<ul> 1042<li>The postgresql and redis version might be updated in the minor patch.</li> 1043</ul> 1044 1045 1046 1047 1048 1049 1050 <div data-pagefind-ignore> 1051 1052 <hr class="thick" /> 1053 1054 1055 1056 1057 1058 <h2 id="pages"> 1059 Pages in this section 1060 </h2> 1061 1062 <ul> 1063 1064 <li> 1065 <a href="/docs/2.15.0/install-config/demo-server/"> 1066 Test Harbor with the Demo Server 1067 </a> 1068 </li> 1069 1070 <li> 1071 <a href="/docs/2.15.0/install-config/harbor-compatibility-list/"> 1072 Harbor Compatibility List 1073 </a> 1074 </li> 1075 1076 <li> 1077 <a href="/docs/2.15.0/install-config/installation-prereqs/"> 1078 Harbor Installation Prerequisites 1079 </a> 1080 </li> 1081 1082 <li> 1083 <a href="/docs/2.15.0/install-config/download-installer/"> 1084 Download the Harbor Installer 1085 </a> 1086 </li> 1087 1088 <li> 1089 <a href="/docs/2.15.0/install-config/configure-https/"> 1090 Configure HTTPS Access to Harbor 1091 </a> 1092 </li> 1093 1094 <li> 1095 <a href="/docs/2.15.0/install-config/configure-internal-tls/"> 1096 Configure Internal TLS communication between Harbor Component 1097 </a> 1098 </li> 1099 1100 <li> 1101 <a href="/docs/2.15.0/install-config/configure-yml-file/"> 1102 Configure the Harbor YML File 1103 </a> 1104 </li> 1105 1106 <li> 1107 <a href="/docs/2.15.0/install-config/run-installer-script/"> 1108 Run the Installer Script 1109 </a> 1110 </li> 1111 1112 <li>
1113 <a href="/docs/2.15.0/install-config/harbor-ha-helm/"> 1114 Deploying Harbor with High Availability via Helm 1115 </a> 1116 </li> 1117 1118 <li> 1119 <a href="/docs/2.15.0/install-config/troubleshoot-installation/"> 1120 Troubleshooting Harbor Installation 1121 </a> 1122 </li> 1123 1124 <li> 1125 <a href="/docs/2.15.0/install-config/reconfigure-manage-lifecycle/"> 1126 Reconfigure Harbor and Manage the Harbor Lifecycle 1127 </a> 1128 </li> 1129 1130 <li> 1131 <a href="/docs/2.15.0/install-config/customize-token-service/"> 1132 Customize the Harbor Token Service 1133 </a> 1134 </li> 1135 1136 <li> 1137 <a href="/docs/2.15.0/install-config/configure-system-settings-cli/"> 1138 Harbor Configuration 1139 </a> 1140 </li> 1141 1142 </ul> 1143 1144 </div> 1145 1146 </div> 1147 </div> 1148 1149 1150 1151 1152 1153 1154<div class="column is-one-quarter is-hidden-touch"> 1155 <div class="toc is-sticky"> 1156 1157 <p class="title is-size-4"> 1158 <span class="icon has-margin-right has-text-secondary"> 1159 <i class="fas fa-align-left"></i> 1160 </span> 1161 <span> 1162 On this page 1163 </span> 1164 </p> 1165 1166 <nav id="TableOfContents"> 1167 <ul> 1168 <li><a href="#installation-process">Installation Process</a></li> 1169 <li><a href="#deploy-harbor-on-kubernetes">Deploy Harbor on Kubernetes</a></li> 1170 <li><a href="#post-installation-configuration">Post-Installation Configuration</a></li> 1171 <li><a href="#harbor-components">Harbor Components</a></li> 1172 </ul> 1173</nav> 1174 1175 <br /><br /> 1176 1177 1178 <p class="title is-size-4"> 1179 <span class="icon has-margin-right has-text-grey-light"> 1180 <i class="fas fa-folder-plus"></i> 1181 </span> 1182 <span> 1183 Contributing 1184 </span> 1185 </p> 1186 1187 <div class="buttons are-small"> 1188 <a class="button is-black" href="https://github.com/goharbor/website/blob/release-2.15.0/docs/install-config/_index.md" target="_blank"> 1189 <span class="icon"> 1190 <i class="fab fa-github"></i> 1191 </span> 1192 <span> 1193 Page source 1194 </span> 1195 </a> 1196 1197 <a class="button is-black" href="https://github.com/goharbor/harbor/issues" target="_blank"> 1198 <span class="icon"> 1199 <i class="fab fa-github"></i> 1200 </span> 1201 <span> 1202 Create issue 1203 </span> 1204 </a> 1205 </div> 1206 </div> 1207</div> 1208 1209 </div> 1210 </div> 1211</section> 1212 1213 1214 </main> 1215 1216 1217 1218<footer class="footer"> 1219 <div class="container"> 1220 <div class="columns"> 1221 <div class="column"> 1222 <img class="is-footer-logo" src="/img/logos/harbor-horizontal-color.svg" alt="Harbor footer logo"> 1223 </div> 1224 1225 <div class="column"> 1226 <div> 1227 <a class="has-text-black is-small" target="_blank" href="https://github.com/goharbor/harbor"> 1228 <span class="icon"> 1229 <i class="fab fa-github"></i> 1230 </span> 1231 <span> 1232 GitHub 1233 </span> 1234 </a> 1235 </div> 1236 <div> 1237 <a class="has-text-black is-small" target="_blank" href="https://status.goharbor.io"> 1238 <span class="icon"> 1239 <i class="fa-solid fa-gauge"></i> 1240 </span> 1241 <span> 1242 Community Registry Status 1243 </span> 1244 </a> 1245 </div> 1246 <div> 1247 <a class="has-text-black is-small" target="_blank" href="https://github.com/cncf/artwork/tree/master/projects/harbor"> 1248 <span class="icon"> 1249 <i class="fa fa-palette"></i> 1250 </span> 1251 <span> 1252 Logos 1253 </span> 1254 </a> 1255 </div> 1256 </div> 1257 1258 1259 <div class="column"> 1260 <div> 1261 <a class="has-text-black is-small" target="_blank" href="https://cloud-native.slack.com/messages/harbor"> 1262 <span class="icon"> 1263 <i class="fab fa-slack"></i> 1264 </span> 1265 <span> 1266 Slack 1267 </span> 1268 </a> 1269 </div> 1270 <div> 1271 <a class="has-text-black is-small" target="_blank" 1272 href="https://twitter.com/project_harbor">
1273 <span class="icon"> 1274 <i class="fab fa-twitter"></i> 1275 </span> 1276 <span> 1277 Twitter 1278 </span> 1279 </a> 1280 </div> 1281 </div> 1282 </div> 1283 1284 <hr class="thick"/> 1285 1286 <div class="is-size-6 has-text-black has-text-weight-light"> 1287 <p> 1288 © Harbor Authors 2026 | Documentation Distributed under <a 1289 href="https://creativecommons.org/licenses/by/4.0/" target="_blank">CC-BY-4.0</a> 1290 </p> 1291 1292 <br/> 1293 1294 <p> 1295 Copyright Harbor a Series of LF Projects, LLC<br/> 1296 For website terms of use, trademark policy and other project policies please see <a href="https://lfprojects.org/policies/" target="_blank">https://lfprojects.org/policies/</a>. 1297 </p> 1298 </div> 1299 </div> 1300</footer> 1301 1302
1303<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js" defer></script>
1303 1304 1305
1306<script> 1307 const navbarHeight = document.getElementsByClassName('navbar')[0].offsetHeight; 1308 const extraPadding = 15; 1309 const navbarOffset = -1 * (navbarHeight + extraPadding); 1310 var shiftWindow = function() { scrollBy(0, navbarOffset) }; 1311 window.addEventListener("hashchange", shiftWindow); 1312 window.addEventListener("pageshow", shiftWindow); 1313 function load() { if (window.location.hash) shiftWindow(); } 1314 1315 console.log("OK"); 1316</script>
vendor: 1 bytes, line 1316
1316
1317<script src="/js/table-popout.js"></script>
1317 1318 1319
1320<script async id="netlify-rum-container" src="/.netlify/scripts/rum" data-netlify-rum-site-id="8b568501-2d2b-4760-9948-8f6bde03bfb0" data-netlify-deploy-branch="main" data-netlify-deploy-context="production" data-netlify-cwv-token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaXRlX2lkIjoiOGI1Njg1MDEtMmQyYi00NzYwLTk5NDgtOGY2YmRlMDNiZmIwIiwiYWNjb3VudF9pZCI6IjVlZjUyMmNlMDJjNzU5MDAzYmYwMTU3ZiIsImRlcGxveV9pZCI6IjZhYjBmYTY0OTc3Y2ZjMDAwODU1NWQ5ZCIsImlzc3VlciI6Im5mc2VydmVyIn0.xzEXBLNxQmlxlTKnxe0ENuiByT2ITxjgzUXs93SsFTc"></script>
1320 1321</body> 1322</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.