PageSourceSearch

https://goharbor.io/community/

html goharbor.io collected 2026-09-24 08:40:59 UTC 42,838 bytes, 1,182 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; Community">
19
20<meta property="og:url" content="https://goharbor.io/community/">
21<meta property="og:locale" content="en_US">
22
23<meta property="og:site_name" content="Harbor">
24
25
26<meta name="og:type" content="article">
27<meta name="og:image" content="https://goharbor.io/img/logos/harbor-icon-color.png">
28<meta name="og:image:alt" content="Harbor &amp;ndash; Community project logo">
29<meta name="og:image:type" content="image/png">
30
31
32
33<meta name="twitter:card" content="summary">
34<meta name="twitter:site" content="@project_harbor">
35<meta name="twitter:creator" content="@project_harbor">
36
37<link rel="canonical" href="https://goharbor.io/community/">
38<link rel="shortcut icon" href="/favicon.svg" type="image/svg">
39<meta name="generator" content="Hugo 0.74.0" />
40
41    <title>
42      
43Harbor | Community
44
45    </title>
46    
47<link rel="stylesheet" href="/css/style.b36c5e8ca891bb03c745ed6765eae37b4b0f2346d4a9984b346af1db1ad0c8e8.css" integrity="sha256-s2xejKiRuwPHRe1nZerje0sPI0bUqZhLNGrx2xrQyOg=">
48    
49
50
51<link rel="shortcut icon" href="/favicon.png">
52
53
54
55    
56    
57     
58    
59    
60    
60<script>
61      (function() {
62        const theme = localStorage.getItem('harbor-theme') || 
63                     (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light');
64        document.documentElement.setAttribute('data-theme', theme);
65      })();
66    </script>
66
67    
68    
69    
69<script>
vendor: 351 bytes, lines 69-73
69(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
70        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
71      j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
72      'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
73    })(window,document,'script','dataLayer','
73GTM-TKWH5SPC
vendor: 3 bytes, line 73
73');
73</script>
73
74    
75  </head>
76  <body class="is-page has-navbar-fixed-top">
vendor: 77 bytes, lines 76-78
76
77    
78    <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
78GTM-TKWH5SPC
vendor: 114 bytes, lines 78-81
78"
79                      height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
80    
81    
81<main class="is-main">
82      
83
84
85
86
87
88
89
90
91
92<nav class="navbar is-fixed-top" role="navigation" aria-label="main navigation" x-data="{ open: false }">
93  <div class="container">
94    <div class="navbar-brand">
95      <a class="navbar-item" href="https://goharbor.io">
96        <img src="/img/logos/harbor-horizontal-color.png" alt="Harbor logo">
97      </a>
98
99      
100      <div class="navbar-item is-hidden-desktop">
101  <button class="search-trigger search-trigger--compact"
102          type="button"
103          x-data="{ mac: /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) }"
104          @click="$dispatch('open-search')"
105          aria-label="Search goharbor.io">
106    <span class="icon is-small">
107      <i class="fas fa-sm fa-search"></i>
108    </span>
109  </button>
110</div>
111
112
113      
114      <div role="button" class="navbar-burger" data-target="navbar-menu" aria-label="menu" aria-expanded="false" @click="open = !open" :class="{ 'is-active': open }">
115        <span aria-hidden="true"></span>
116        <span aria-hidden="true"></span>
117        <span aria-hidden="true"></span>
118      </div>
119      
120    </div>
121
122    
123    <div class="navbar-menu" id="navbar-menu" :class="{ 'is-active': open }">
124      
125
126      
127      <div class="navbar-end">
128        <div class="navbar-item is-hidden-touch">
129  <button class="search-trigger"
130          type="button"
131          x-data="{ mac: /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) }"
132          @click="$dispatch('open-search')"
133          aria-label="Search goharbor.io">
134    <span class="icon is-small">
135      <i class="fas fa-sm fa-search"></i>
136    </span>
137    <span class="search-trigger__label">Search</span>
138    <span class="search-trigger__hint" aria-hidden="true"
139          x-text="mac ? '⌘K' : 'Ctrl K'"></span>
140  </button>
141</div>
142
143
144        
145        
146        
147        
148        <a class="navbar-item has-text-weight-bold" href="/" data-proofer-ignore>
149          Home
150        </a>
151        
152        
153        
154        
155        <a class="navbar-item has-text-weight-bold" href="/docs/latest/install-config" data-proofer-ignore>
156          Getting Started
157        </a>
158        
159        
160        
161        
162        <a class="navbar-item has-text-weight-bold" href="/community" data-proofer-ignore>
163          Community
164        </a>
165        
166        
167        
168        
169        <a class="navbar-item has-text-weight-bold" href="/blog" data-proofer-ignore>
170          Blog
171        </a>
172        
173
174        <div class="navbar-item has-dropdown is-hoverable">
175          <p class="navbar-link is-arrowless has-text-weight-bold">
176            <span>
177              Docs
178            </span>
179            <span class="icon has-text-secondary">
180              <i class="fas fa-caret-down"></i>
181            </span>
182          </p>
183
184          <div class="navbar-dropdown is-right">
185            <div class="navbar-item">
186              <div class="columns">
187                <div class="column">
188                  <a class="has-text-black" href="/cli-docs" data-proofer-ignore>
189                    <span>
190                      Harbor CLI Docs
191                    </span>
192                  </a>
193                </div>
194              </div>
195            </div>
196            
197            
198            <div class="navbar-item">
199              <div class="columns">
200                <div class="column">
201                  <a class="has-text-black" href="/docs/2.15.0" data-proofer-ignore>
202                    <span>
203                      2.15.0
204                    </span>
205                    &nbsp;&nbsp;
206                    
207                    <span class="tag is-success">
208                      latest
209                    </span>
210                    
211                  </a>
212                </div>
213              </div>
214            </div>
215            
216            
217            <div class="navbar-item">
218              <div class="columns">
219                <div class="column">
220                  <a class="has-text-black" href="/docs/2.14.0" data-proofer-ignore>
221                    <span>
222                      2.14.0
223                    </span>
224                    &nbsp;&nbsp;
225                    
226                  </a>
227                </div>
228              </div>
229            </div>
230            
231            
232            <div class="navbar-item">
233              <div class="columns">
234                <div class="column">
235                  <a class="has-text-black" href="/docs/2.13.0" data-proofer-ignore>
236                    <span>
237                      2.13.0
238                    </span>
239                    &nbsp;&nbsp;
240                    
241                  </a>
242                </div>
243              </div>
244            </div>
245            
246            
247            <div class="navbar-item">
248              <div class="columns">
249                <div class="column">
250                  <a class="has-text-black" href="/docs/2.12.0" data-proofer-ignore>
251                    <span>
252                      2.12.0
253                    </span>
254                    &nbsp;&nbsp;
255                    
256                  </a>
257                </div>
258              </div>
259            </div>
260            
261            
262            <div class="navbar-item">
263              <div class="columns">
264                <div class="column">
265                  <a class="has-text-black" href="/docs/2.11.0" data-proofer-ignore>
266                    <span>
267                      2.11.0
268                    </span>
269                    &nbsp;&nbsp;
270                    
271                  </a>
272                </div>
273              </div>
274            </div>
275            
276            
277            <div class="navbar-item">
278              <div class="columns">
279                <div class="column">
280                  <a class="has-text-black" href="/docs/2.10.0" data-proofer-ignore>
281                    <span>
282                      2.10.0
283                    </span>
284                    &nbsp;&nbsp;
285                    
286                  </a>
287                </div>
288              </div>
289            </div>
290            
291            
292            <div class="navbar-item">
293              <div class="columns">
294                <div class="column">
295                  <a class="has-text-black" href="/docs/2.9.0" data-proofer-ignore>
296                    <span>
297                      2.9.0
298                    </span>
299                    &nbsp;&nbsp;
300                    
301                  </a>
302                </div>
303              </div>
304            </div>
305            
306            
307            <div class="navbar-item">
308              <div class="columns">
309                <div class="column">
310                  <a class="has-text-black" href="/docs/2.8.0" data-proofer-ignore>
311                    <span>
312                      2.8.0
313                    </span>
314                    &nbsp;&nbsp;
315                    
316                  </a>
317                </div>
318              </div>
319            </div>
320            
321            
322            <div class="navbar-item">
323              <div class="columns">
324                <div class="column">
325                  <a class="has-text-black" href="/docs/2.7.0" data-proofer-ignore>
326                    <span>
327                      2.7.0
328                    </span>
329                    &nbsp;&nbsp;
330                    
331                  </a>
332                </div>
333              </div>
334            </div>
335            
336            
337            <div class="navbar-item">
338              <div class="columns">
339                <div class="column">
340                  <a class="has-text-black" href="/docs/2.6.0" data-proofer-ignore>
341                    <span>
342                      2.6.0
343                    </span>
344                    &nbsp;&nbsp;
345                    
346                  </a>
347                </div>
348              </div>
349            </div>
350            
351            
352            <div class="navbar-item">
353              <div class="columns">
354                <div class="column">
355                  <a class="has-text-black" href="/docs/2.5.0" data-proofer-ignore>
356                    <span>
357                      2.5.0
358                    </span>
359                    &nbsp;&nbsp;
360                    
361                  </a>
362                </div>
363              </div>
364            </div>
365            
366            
367            <div class="navbar-item">
368              <div class="columns">
369                <div class="column">
370                  <a class="has-text-black" href="/docs/2.4.0" data-proofer-ignore>
371                    <span>
372                      2.4.0
373                    </span>
374                    &nbsp;&nbsp;
375                    
376                  </a>
377                </div>
378              </div>
379            </div>
380            
381            
382            <div class="navbar-item">
383              <div class="columns">
384                <div class="column">
385                  <a class="has-text-black" href="/docs/2.3.0" data-proofer-ignore>
386                    <span>
387                      2.3.0
388                    </span>
389                    &nbsp;&nbsp;
390                    
391                  </a>
392                </div>
393              </div>
394            </div>
395            
396            
397            <div class="navbar-item">
398              <div class="columns">
399                <div class="column">
400                  <a class="has-text-black" href="/docs/2.2.0" data-proofer-ignore>
401                    <span>
402                      2.2.0
403                    </span>
404                    &nbsp;&nbsp;
405                    
406                  </a>
407                </div>
408              </div>
409            </div>
410            
411            
412            <div class="navbar-item">
413              <div class="columns">
414                <div class="column">
415                  <a class="has-text-black" href="/docs/2.1.0" data-proofer-ignore>
416                    <span>
417                      2.1.0
418                    </span>
419                    &nbsp;&nbsp;
420                    
421                  </a>
422                </div>
423              </div>
424            </div>
425            
426            
427            <div class="navbar-item">
428              <div class="columns">
429                <div class="column">
430                  <a class="has-text-black" href="/docs/2.0.0" data-proofer-ignore>
431                    <span>
432                      2.0.0
433                    </span>
434                    &nbsp;&nbsp;
435                    
436                  </a>
437                </div>
438              </div>
439            </div>
440            
441            
442            <div class="navbar-item">
443              <div class="columns">
444                <div class="column">
445                  <a class="has-text-black" href="/docs/1.10" data-proofer-ignore>
446                    <span>
447                      1.10
448                    </span>
449                    &nbsp;&nbsp;
450                    
451                  </a>
452                </div>
453              </div>
454            </div>
455            
456          </div>
457        </div>
458
459        
460
461
462<div 
463  class="navbar-item theme-toggle-wrapper"
464  x-data="{ 
465    theme: 'light',
466    init() {
467      // Initialize theme from localStorage or system preference
468      const savedTheme = localStorage.getItem('harbor-theme');
469      const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
470      this.theme = savedTheme || (systemPrefersDark ? 'dark' : 'light');
471      this.applyTheme();
472    },
473    applyTheme() {
474      document.documentElement.setAttribute('data-theme', this.theme);
475      localStorage.setItem('harbor-theme', this.theme);
476    },
477    toggleTheme() {
478      this.theme = this.theme === 'light' ? 'dark' : 'light';
479      this.applyTheme();
480    }
481  }"
482>
483  <button 
484    @click="toggleTheme()"
485    class="theme-toggle"
486    :aria-label="theme === 'light' ? 'Switch to dark mode' : 'Switch to light mode'"
487    :title="theme === 'light' ? 'Switch to dark mode' : 'Switch to light mode'"
488    type="button"
489  >
490    <span class="icon">
491      <i :class="theme === 'light' ? 'fas fa-moon' : 'fas fa-sun'"></i>
492    </span>
493  </button>
494</div>
495
496
497        <div class="navbar-item">
498          <div class="buttons">
499  <a class="button is-small is-black is-outlined" target="_blank" href="https://github.com/goharbor/harbor" aria-label="GitHub">
500    <span class="icon">
501      <i class="fab fa-github"></i>
502    </span>
503  </a>
504
505  <a class="button is-small is-twitter-blue" target="_blank" href="https://twitter.com/project_harbor" aria-label="Twitter">
506    <span class="icon">
507      <i class="fab fa-twitter"></i>
508    </span>
509  </a>
510
511  <a class="button is-small is-slack-green" target="_blank" href="https://cloud-native.slack.com/messages/harbor" aria-label="Slack">
512    <span class="icon">
513      <i class="fab fa-slack"></i>
514    </span>
515  </a>
516</div>
517
518        </div>
519      </div>
520      
521    </div>
522    
523  </div>
524</nav>
525
526      <div class="search"
527     x-data="harborSearch"
528     @open-search.window="openModal()"
529     data-docs-version=""
530     data-latest-version="2.15.0">
531
532  <div class="search-backdrop"
533       x-show="open"
534       @click="closeModal()"
535       style="display: none;"></div>
536
537  
538  <div class="search-modal" role="dialog" aria-modal="true" aria-label="Search goharbor.io"
539       x-ref="modal"
540       x-show="open"
541       @keydown.escape.window.prevent="open && closeModal()"
542       @keydown="trapFocus($event)"
543       style="display: none;">
544
545    <div class="search-modal__header">
546      <span class="icon search-modal__icon">
547        <i class="fas fa-search"></i>
548      </span>
549      
550      <input class="search-modal__input"
551             type="text"
552             placeholder="Search Harbor docs and site..."
553             aria-label="Search query"
554             role="combobox"
555             aria-controls="search-results-list"
556             aria-autocomplete="list"
557             :aria-expanded="totalResults.length > 0"
558             :aria-activedescendant="activeDescendantId()"
559             x-ref="searchInput"
560             x-model="query"
561             @input.debounce.150ms="search()"
562             @keydown="handleKeydown($event)"
563             autocomplete="off">
564      <button class="search-modal__close" @click="closeModal()" aria-label="Close search">
565        <span class="icon"><i class="fas fa-times"></i></span>
566      </button>
567    </div>
568
569    
570    <div class="search-filters" x-show="hasFilters()">
571      <button class="search-filters__pill"
572              :class="{ 'search-filters__pill--active': activeType === 'all' }"
573              :aria-pressed="activeType === 'all'"
574              @click="setType('all')">All</button>
575
576      
577      <div class="search-pill"
578           :class="{ 'search-pill--active': activeType === 'Docs' }"
579           x-show="hasType('Docs')">
580        <button class="search-pill__label"
581                :aria-pressed="activeType === 'Docs'"
582                @click="setType('Docs')">Docs</button>
583        <span class="search-pill__version">
584          <select id="search-version"
585                  aria-label="Harbor docs version to search"
586                  x-ref="versionSelect"
587                  @change="setVersion($event.target.value)">
588            <template x-for="v in versions" :key="v">
589              <option :value="v" x-text="v"></option>
590            </template>
591          </select>
592        </span>
593      </div>
594
595      
596      <button class="search-filters__pill"
597              :class="{ 'search-filters__pill--active': activeType === 'Website' }"
598              :aria-pressed="activeType === 'Website'"
599              @click="setType('Website')"
600              x-show="websiteTypes().length">Website</button>
601    </div>
602
603    <div class="search-results" x-ref="resultsList">
604      <div class="search-loading" x-show="loading" role="status" aria-live="polite">
605        Searching&hellip;
606      </div>
607
608      
609      <div id="search-results-list" role="listbox" aria-label="Search results">
610        <template x-for="group in sectionOrder" :key="group">
611          <div role="group" :aria-label="group">
612            <div class="search-results__section" x-text="group" aria-hidden="true"></div>
613            <template x-for="result in groupedResults[group]" :key="result.url">
614              <a class="search-result"
615                 role="option"
616                 :id="resultId(result)"
617                 :aria-selected="isSelected(result)"
618                 :class="{ 'search-result--active': isSelected(result) }"
619                 :href="result.url"
620                 @click="onResultClick($event)"
621                 @mouseenter="selectedIndex = totalResults.indexOf(result)">
622                <div class="search-result__title">
623                  <span x-text="result.meta?.title || 'Untitled'"></span>
624                  
625                  <span class="tag is-light search-result__version"
626                        x-show="versionOf(result)"
627                        x-text="versionOf(result)"></span>
628                </div>
629                <div class="search-result__excerpt" x-html="result.excerpt"></div>
630              </a>
631            </template>
632          </div>
633        </template>
634      </div>
635
636      
637      <div class="search-empty" x-show="searchError && !loading" role="alert">
638        <p><strong>Search is unavailable right now.</strong></p>
639        <p>The search index could not be loaded.</p>
640        <p>
641          <button class="search-filters__pill" @click="retry()">Try again</button>
642        </p>
643      </div>
644
645      <div class="search-empty"
646           x-show="!searchError && query.length > 0 && totalResults.length === 0 && !loading">
647        <p>No results for &ldquo;<span x-text="query"></span>&rdquo;</p>
648        
649        <p x-show="version && activeType !== 'Website'">
650          Docs results are limited to Harbor <span x-text="version"></span>.
651          Try another release from the <strong>Docs</strong> selector.
652        </p>
653      </div>
654    </div>
655  </div>
656</div>
657
658
659
660  
661  
662    
663<script src="/js/search.min.dc594391107969d142d97211c036ce1ec40280e997d86174bf5f7411ca94468d.js" integrity="sha256-3FlDkRB5adFC2XIRwDbOHsQCgOmX2GF0v190EcqURo0="></script>
663
664  
665
666
667
668      
669
670
671<section class="hero is-small">
672  <div class="hero-body">
673    <div class="container">
674      <br/>
675      <p class="title is-size-1 is-size-2-mobile has-text-weight-light">
676        Community
677      </p>
678
679      
680    </div>
681  </div>
682</section>
683
684
685
686<section class="section">
687  <div class="container">
688    <meta data-pagefind-filter="scope[content]" content="site">
689    <meta data-pagefind-filter="type[content]" content="Community">
690    <meta data-pagefind-meta="title[content]" content="Community">
691    <div class="content is-medium" data-pagefind-body>
692      <div class="columns">
693
694  <div class="column">
695    <h2>
696      Join the Harbor community!
697    </h2>
698
699    <p class="is-size-5">
700      Harbor is developed in the open, and is constantly being improved by our <b>users, contributors, and maintainers</b>.
701      It is because of you that we can bring great software to the community.
702      <br/>
703      <br/>
704      <b>Come join us!</b>
705      <br/>      <br/>
706    </p>
707    <a href="https://twitter.com/project_harbor">
708      <div class="button is-twitter-blue">
709        <span class="icon">
710          <i class="fab fa-twitter"></i>
711        </span>
712        <span class="has-text-white has-text-weight-bold" >
713          Follow us on Twitter @project_harbor
714        </span>
715      </div>
716    </a>
717  </div>
718
719  <div class="column">
720    <h2>
721      Community Meetings
722    </h2>
723
724    <p class="is-size-5">
725      We have a recurring bi-weekly Harbor community meeting at <code>9PM UTC+8 time zone</code>. We will use this meeting to communicate updates to the project, listen to feedback from the Harbor community, and also collect requirements/use cases for new features.
726    </p>
727
728    <div class="container">
729      <div class="columns is-variable is-6">
730        <div class="column">
731          <h3>
732            <span class="icon has-text-secondary has-margin-right">
733              <i class="fas fa-phone"></i>
734            </span>
735            <span>
736              Bi-weekly public community meetings
737            </span>
738          </h3>
739
740          <p>
741            Read, comment, or add agenda items on the <a href="https://hackmd.io/@harbor/r14BkYaOa" target="_blank">meeting notes</a> and add our calendar and subscribe at <a href="https://lists.cncf.io/g/harbor-users" target="_blank">our mailing list</a> to get the latest Harbor news, what we're working on, and provide suggestions and feedback.
742          </p>
743        </div>
744
745        <div class="column">
746          <h3>
747            <span class="icon has-text-secondary has-margin-right">
748              <i class="fab fa-youtube"></i>
749            </span>
750            <span>
751              Catch up with past meetings on YouTube
752            </span>
753          </h3>
754
755          <p>
756            All Harbor community meetings are recorded and added to our <a href="https://www.youtube.com/playlist?list=PLgInP-D86bCwTC0DYAa1pgupsQIAWPomv" target="_blank">YouTube playlist</a>.
757          </p>
758        </div>
759      </div>
760    </div>
761  </div>
762  <div class="column">
763
764    <div class="container">
765      <div class="columns is-variable is-6">
766        <div class="column">
767          <h3>
768            <span class="icon has-text-secondary has-margin-right">
769              <i class="fas fa-phone"></i>
770            </span>
771            <span>
772              Meeting information
773            </span>
774          </h3>
775
776          <p>
777            See all the meeting information and add our planned calendar over at <a href="https://github.com/goharbor/community/wiki/Harbor-Community-Meetings" target="_blank">our meeting notes and agenda</a>. All meetings will be recorded and upload to <a href="https://www.youtube.com/playlist?list=PLgInP-D86bCxeNorqeaVlJMv_4x95Le7x" target="_blank">YouTube</a>.
778          </p>
779        </div>
780
781      </div>
782    </div>
783  </div>
784</div>
785
786<hr>
787<div class="columns">
788  <div class="column">
789    <h2>
790      Chat with us on the CNCF Slack
791    </h2>
792    
793    <div class="buttons">
794      <a href="https://cloud-native.slack.com/messages/harbor">
795        <div class="button is-slack-green">
796          <span class="icon">
797            <i class="fab fa-slack"></i>
798          </span>
799          <span class="has-text-white has-text-weight-bold" >
800            Slack: #harbor for end-user discussions
801          </span>
802        </div>
803      </a>
804      
805      &nbsp;
806      
807      <a href="https://cloud-native.slack.com/messages/harbor">
808        <div class="button is-slack-green">
809          <span class="icon">
810            <i class="fab fa-slack"></i>
811          </span>
812          <span class="has-text-white has-text-weight-bold" >
813            Slack: #harbor-dev for development of Harbor
814          </span>
815        </div>
816      </a>
817      
818      <p class="is-size-5">
819        Note: To access the CNCF slack, you need an invitation
820        which can be obtained at
821        <a href="https://slack.cncf.io/">https://slack.cncf.io</a>.
822      </p>
823    </div>
824  </div>
825
826  <div class="column">
827    <h2>
828      Distribution lists
829    </h2>
830
831    <p class="is-size-5">
832      There are two distribution lists for Harbor, one for users and one for developers:
833    </p>
834
835    <div class="container">
836      <div class="columns is-variable is-6">
837        <div class="column">
838          <h3>
839            <span class="icon has-text-secondary has-margin-right">
840              <i class="fas fa-users"></i>
841            </span>
842            <span>
843              User group
844            </span>
845          </h3>
846
847          <p>
848            Join Harbor's user email group at <a href="https://lists.cncf.io/g/harbor-users" target="_blank">https://lists.cncf.io/g/harbor-users</a> to get Harbor's news, features, and releases, or to provide suggestions and feedback.
849          </p>
850        </div>
851
852        <div class="column">
853          <h3>
854            <span class="icon has-text-secondary has-margin-right">
855              <i class="fas fa-laptop"></i>
856            </span>
857            <span>
858              Developer group
859            </span>
860          </h3>
861
862          <p>
863            Join Harbor's developer group at <a href="https://lists.cncf.io/g/harbor-dev" target="_blank">https://lists.cncf.io/g/harbor-dev</a> for updates related to development and contribution.
864          </p>
865        </div>
866      </div>
867    </div>
868  </div>
869</div>
870
871<h2 id="want-to-contribute-to-the-codebase-or-documentation">Want to contribute to the codebase or documentation?</h2>
872<p>If you’re a newcomer, check out the “
873<a href="https://github.com/goharbor/harbor/issues?q=is%3Aopen&#43;is%3Aissue&#43;label%3Acommunity%2Fgood-first-issue" target="_blank">Good first issue</a>” and “
874<a href="https://github.com/goharbor/harbor/issues?q=is%3Aopen&#43;is%3Aissue&#43;label%3A%22help&#43;wanted%22" target="_blank">Help wanted</a>” labels in the Harbor repository.</p>
875<p>If you are ready to jump in and test, add code, or help with documentation, follow the instructions on our 
876<a href="https://github.com/goharbor/harbor/blob/main/CONTRIBUTING.md" target="_blank">contributing</a> documentation for guidance on how to setup Harbor for development.</p>
877<p>You can follow the work we plan to do using the 
878<a href="https://github.com/goharbor/harbor/blob/main/ROADMAP.md" target="_blank">Harbor Roadmap</a> and see our milestones on our 
879<a href="https://github.com/orgs/goharbor/projects/1" target="_blank">project board</a>. You can also follow the state of all issues and our backlog on the 
880<a href="https://app.zenhub.com/workspaces/cncf-5b84fc036092773c0b854fe6/board?repos=50613991" target="_blank">ZenHub</a> board.</p>
881<hr>
882<h2 id="users-of-harbor">Users of Harbor</h2>
883
884<div class="container">
885  <div class="columns is-multiline is-variable is-8">
886    
887    
888    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
889      <a href="https://www.360totalsecurity.com/en/"><img src="/img/logos/users-partners/360-total-security-logo.png" alt="360-total-security user logo" style="max-height: 128px;margin: 20px;"></a>
890    </div>
891    
892    
893    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
894      <a href="https://www.axatp.com/"><img src="/img/logos/users-partners/axa-logo.png" alt="axatp user logo" style="max-height: 128px;margin: 20px;"></a>
895    </div>
896    
897    
898    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
899      <a href="http://www.beyondsoft.com/"><img src="/img/logos/users-partners/beyond-logo.png" alt="beyondsoft user logo" style="max-height: 128px;margin: 20px;"></a>
900    </div>
901    
902    
903    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
904      <a href='http://www.boericasa.com/'><img src="/img/logos/users-partners/boer-logo.png" alt="boer user logo" style="max-height: 128px;margin: 20px;"></a>
905    </div>
906    
907    
908    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
909      <a href="https://www.home.cern/"><img src="/img/logos/users-partners/cern-logo.png" alt="CERN user logo" style="max-height: 128px;margin: 20px;"></a>
910    </div>
911    
912    
913    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
914      <a href="http://www.chinamobileltd.com/"><img src="/img/logos/users-partners/china-mobile-logo.png" alt="china-mobile user logo" style="max-height: 128px;margin: 20px;"></a>
915    </div>
916    
917    
918    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
919      <a href="http://www.cloud-star.com.cn/"><img src="/img/logos/users-partners/cloud-logo.png" alt="cloudstar user logo" style="max-height: 128px;margin: 20px;"></a>
920    </div>
921    
922    
923    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
924      <a href="https://www.datayes.com/en/?lang=en-US"><img src="/img/logos/users-partners/datayes-logo.png" alt="datayes user logo" style="max-height: 128px;margin: 20px;"></a>
925    </div>
926    
927    
928    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
929      <a href="https://www.de-cix.net"><img src="/img/logos/users-partners/de-cix.png" alt="de-cix user logo" style="max-height: 128px;margin: 20px;"></a>
930    </div>
931    
932    
933    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
934      <a href="https://docnetwork.org/"><img src="/img/logos/users-partners/docnetwork.png" alt="DocNetwork user logo" style="max-height: 128px;margin: 20px;"></a>
935    </div>
936    
937    
938    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
939      <a href="https://www.dynatrace.com/"><img src="/img/logos/users-partners/dynatrace-logo.png" alt="dynatrace user logo" style="max-height: 128px;margin: 20px;"></a>
940    </div>
941    
942    
943    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
944      <a href="http://www.hydsoft.com/en/"><img src="/img/logos/users-partners/hydsoft-logo.png" alt="hydsoft user logo" style="max-height: 128px;margin: 20px;"></a>
945    </div>
946    
947    
948    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
949      <a href="https://www.jd.com/"><img src="/img/logos/users-partners/jd.com-logo.png" alt="JD user logo" style="max-height: 128px;margin: 20px;"></a>
950    </div>
951    
952    
953    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
954      <a href="https://www.ns.nl/"><img src="/img/logos/users-partners/nederlandse-spoorwegen-logo.png" alt="Nederlandse Spoorwegen user logo" style="max-height: 128px;margin: 20px;"></a>
955    </div>
956    
957    
958    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
959      <a href="https://www.163yun.com/"><img src="/img/logos/users-partners/netease-logo.png" alt="netease user logo" style="max-height: 128px;margin: 20px;"></a>
960    </div>
961    
962    
963    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
964      <a href="https://open.com.cn/"><img src="/img/logos/users-partners/open-logo.png" alt="openedutainment user logo" style="max-height: 128px;margin: 20px;"></a>
965    </div>
966    
967    
968    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
969      <a href="https://www.ovhcloud.com/en-ie/"><img src="/img/logos/users-partners/OVHcloud-logo.png" alt="OVHcloud user logo" style="max-height: 128px;margin: 20px;"></a>
970    </div>
971    
972    
973    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
974      <a href="https://www.pitsdatenrettung.de/"><img src="/img/logos/users-partners/pits-globale-datenrettungsdienste.png" alt="PITS Globale Datenrettungsdienste user logo" style="max-height: 128px;margin: 20px;"></a>
975    </div>
976    
977    
978    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
979      <a href="https://www.talkingdata.com/"><img src="/img/logos/users-partners/talkingdata-logo.png" alt="talkingdata user logo" style="max-height: 128px;margin: 20px;"></a>
980    </div>
981    
982    
983    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
984      <a href="https://www.trendmicro.com"><img src="/img/logos/users-partners/trend-micro-logo.png" alt="trendmicro user logo" style="max-height: 128px;margin: 20px;"></a>
985    </div>
986    
987    
988    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
989      <a href="http://www.wise2c.com/"><img src="/img/logos/users-partners/wise-logo.png" alt="wise2c user logo" style="max-height: 128px;margin: 20px;"></a>
990    </div>
991    
992    
993    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
994      <a href="https://www.yanrongyun.com/"><img src="/img/logos/users-partners/yanrong-logo.png" alt="yanrongyun user logo" style="max-height: 128px;margin: 20px;"></a>
995    </div>
996    
997  </div>
998</div>
999
1000<hr>
1001<h2 id="partners-of-harbor">Partners of Harbor</h2>
1002
1003<div class="container">
1004  <div class="columns is-multiline is-variable is-8">
1005    
1006    
1007    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1008      <a href="https://container-registry.com/"><img src="/img/logos/users-partners/8gears-container-registry.png" alt="8gears Container Registry partner logo" style="max-height: 128px"></a>
1009    </div>
1010    
1011    
1012    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1013      <a href="https://www.alauda.io/"><img src="/img/logos/users-partners/alauda-logo.png" alt="alauda partner logo" style="max-height: 128px"></a>
1014    </div>
1015    
1016    
1017    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1018      <a href="https://anchore.com/"><img src="/img/logos/users-partners/anchore-logo.png" alt="anchore partner logo" style="max-height: 128px"></a>
1019    </div>
1020    
1021    
1022    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1023      <a href="https://www.aquasec.com"><img src="/img/logos/users-partners/aquasec-logo.png" alt="aquasecurity partner logo" style="max-height: 128px"></a>
1024    </div>
1025    
1026    
1027    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1028      <a href="https://www.dosec.cn/"><img src="/img/logos/users-partners/dosec-logo.png" alt="dosec partner logo" style="max-height: 128px"></a>
1029    </div>
1030    
1031    
1032    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1033      <a href="http://www.cloudchef.io/"><img src="/img/logos/users-partners/cloudchef-logo.png" alt="cloudchef partner logo" style="max-height: 128px"></a>
1034    </div>
1035    
1036    
1037    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1038      <a href="https://rancher.com/"><img src="/img/logos/users-partners/rancher-logo.png" alt="rancher partner logo" style="max-height: 128px"></a>
1039    </div>
1040    
1041    
1042    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1043      <a href="http://www.slamtec.com/en/"><img src="/img/logos/users-partners/slamtec-logo.png" alt="slamtec partner logo" style="max-height: 128px"></a>
1044    </div>
1045    
1046    
1047    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1048      <a href="https://sysdig.com"><img src="/img/logos/users-partners/sysdig-logo.png" alt="sysdig partner logo" style="max-height: 128px"></a>
1049    </div>
1050    
1051    
1052    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1053      <a href="https://tensorsecurity.cn"><img src="/img/logos/users-partners/tensorsecurity.png" alt="tensorsecurity partner logo" style="max-height: 128px"></a>
1054    </div>
1055    
1056    
1057    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1058      <a href="https://www.tenxcloud.com/"><img src="/img/logos/users-partners/tenxcloud-logo.png" alt="tenxcloud partner logo" style="max-height: 128px"></a>
1059    </div>
1060    
1061    
1062    <div class="column is-one-quarter has-text-centered" style="display: flex;justify-content: center;flex-wrap: nowrap;align-items: center;">
1063      <a href="https://vmware.com/"><img src="/img/logos/users-partners/vmware-logo.png" alt="vmware partner logo" style="max-height: 128px"></a>
1064    </div>
1065    
1066  </div>
1067</div>
1068
1069
1070    </div>
1071  </div>
1072</section>
1073
1074    </main>
1075
1076    
1077
1078<footer class="footer">
1079  <div class="container">
1080    <div class="columns">
1081      <div class="column">
1082        <img class="is-footer-logo" src="/img/logos/harbor-horizontal-color.svg" alt="Harbor footer logo">
1083      </div>
1084
1085      <div class="column">
1086        <div>
1087          <a class="has-text-black is-small" target="_blank" href="https://github.com/goharbor/harbor">
1088          <span class="icon">
1089            <i class="fab fa-github"></i>
1090          </span>
1091            <span>
1092            GitHub
1093          </span>
1094          </a>
1095        </div>
1096        <div>
1097          <a class="has-text-black is-small" target="_blank" href="https://status.goharbor.io">
1098            <span class="icon">
1099              <i class="fa-solid fa-gauge"></i>
1100            </span>
1101            <span>
1102              Community Registry Status
1103            </span>
1104          </a>
1105        </div>
1106        <div>
1107          <a class="has-text-black is-small" target="_blank" href="https://github.com/cncf/artwork/tree/master/projects/harbor">
1108          <span class="icon">
1109            <i class="fa fa-palette"></i>
1110          </span>
1111            <span>
1112            Logos
1113          </span>
1114          </a>
1115        </div>
1116      </div>
1117
1118
1119      <div class="column">
1120        <div>
1121          <a class="has-text-black is-small" target="_blank" href="https://cloud-native.slack.com/messages/harbor">
1122          <span class="icon">
1123            <i class="fab fa-slack"></i>
1124          </span>
1125            <span>
1126            Slack
1127          </span>
1128          </a>
1129        </div>
1130        <div>
1131          <a class="has-text-black is-small" target="_blank"
1132             href="https://twitter.com/project_harbor">
1133          <span class="icon">
1134            <i class="fab fa-twitter"></i>
1135          </span>
1136            <span>
1137            Twitter
1138          </span>
1139          </a>
1140        </div>
1141      </div>
1142    </div>
1143
1144    <hr class="thick"/>
1145
1146    <div class="is-size-6 has-text-black has-text-weight-light">
1147      <p>
1148        &copy; Harbor Authors 2026 | Documentation Distributed under <a
1149        href="https://creativecommons.org/licenses/by/4.0/" target="_blank">CC-BY-4.0</a>
1150      </p>
1151
1152      <br/>
1153
1154      <p>
1155        Copyright Harbor a Series of LF Projects, LLC<br/>
1156        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>.
1157      </p>
1158    </div>
1159  </div>
1160</footer>
1161
1162    
1163<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js" defer></script>
1163
1164
1165
1166<script>
1167  const navbarHeight = document.getElementsByClassName('navbar')[0].offsetHeight;
1168  const extraPadding = 15;
1169  const navbarOffset = -1 * (navbarHeight + extraPadding);
1170  var shiftWindow = function() { scrollBy(0, navbarOffset) };
1171  window.addEventListener("hashchange", shiftWindow);
1172  window.addEventListener("pageshow", shiftWindow);
1173  function load() { if (window.location.hash) shiftWindow(); }
1174
1175  console.log("OK");
1176</script>
vendor: 1 bytes, line 1176
1176
1177<script src="/js/table-popout.js"></script>
1177
1178
1179  
1180<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>
1180
1181</body>
1182</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.