PageSourceSearch

https://goharbor.io/docs/2.15.0/install-config/

html goharbor.io collected 2026-09-24 08:40:58 UTC 36,561 bytes, 1,322 lines download raw bytes

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 &amp;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 &amp;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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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                    &nbsp;&nbsp;
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&hellip;
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 &ldquo;<span x-text="query"></span>&rdquo;</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 &lsquo;configuration&rsquo;.  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        &copy; 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.