PageSourceSearch

https://docs.pleroma.social/backend/installation/otp_en/

html pleroma.social collected 2026-10-01 08:34:03 UTC 79,983 bytes, 3,155 lines download raw bytes

1
2<!doctype html>
3<html lang="en" class="no-js">
4  <head>
5    
6      <meta charset="utf-8">
7      <meta name="viewport" content="width=device-width,initial-scale=1">
8      
9      
10      
11      
12        <link rel="prev" href="../openbsd_fi/">
13      
14      
15        <link rel="next" href="../release_to_docker_en/">
16      
17      
18      <link rel="icon" href="../../../images/pleroma_logo_vector_bg_32.png">
19      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.5">
20    
21    
22      
23        <title>Installing on Linux using OTP releases - Pleroma Documentation</title>
24      
25    
26    
27      <link rel="stylesheet" href="../../../assets/stylesheets/main.50c56a3b.min.css">
28      
29        
30        <link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css">
31      
32      
33
34
35    
36    
37      
38    
39    
40      
41    
42    
43      <link rel="stylesheet" href="../../../css/extra.css">
44    
45    
45<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
45
46    
47      
48
49    
50    
51    
52  </head>
53  
54  
55    
56    
57    
58    
59    
60    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="black" data-md-color-accent="orange">
61  
62    
63    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
64    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
65    <label class="md-overlay" for="__drawer"></label>
66    <div data-md-component="skip">
67      
68        
69        <a href="#installing-on-linux-using-otp-releases" class="md-skip">
70          Skip to content
71        </a>
72      
73    </div>
74    <div data-md-component="announce">
75      
76    </div>
77    
78    
79      
80
81  
82
83<header class="md-header md-header--shadow" data-md-component="header">
84  <nav class="md-header__inner md-grid" aria-label="Header">
85    <a href="../../.." title="Pleroma Documentation" class="md-header__button md-logo" aria-label="Pleroma Documentation" data-md-component="logo">
86      
87  <img src="../../../images/pleroma_logo_vector_nobg.svg" alt="logo">
88
89    </a>
90    <label class="md-header__button md-icon" for="__drawer">
91      
92      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
93    </label>
94    <div class="md-header__title" data-md-component="header-title">
95      <div class="md-header__ellipsis">
96        <div class="md-header__topic">
97          <span class="md-ellipsis">
98            Pleroma Documentation
99          </span>
100        </div>
101        <div class="md-header__topic" data-md-component="header-topic">
102          <span class="md-ellipsis">
103            
104              Installing on Linux using OTP releases
105            
106          </span>
107        </div>
108      </div>
109    </div>
110    
111      
112    
113    
114    
115    
116      <label class="md-header__button md-icon" for="__search">
117        
118        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
119      </label>
120      <div class="md-search" data-md-component="search" role="dialog">
121  <label class="md-search__overlay" for="__search"></label>
122  <div class="md-search__inner" role="search">
123    <form class="md-search__form" name="search">
124      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
125      <label class="md-search__icon md-icon" for="__search">
126        
127        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
128        
129        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
130      </label>
131      <nav class="md-search__options" aria-label="Search">
132        
133        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
134          
135          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
136        </button>
137      </nav>
138      
139    </form>
140    <div class="md-search__output">
141      <div class="md-search__scrollwrap" data-md-scrollfix>
142        <div class="md-search-result" data-md-component="search-result">
143          <div class="md-search-result__meta">
144            Initializing search
145          </div>
146          <ol class="md-search-result__list" role="presentation"></ol>
147        </div>
148      </div>
149    </div>
150  </div>
151</div>
152    
153    
154      <div class="md-header__source">
155        <!--
156  Copyright (c) 2016-2019 Martin Donath <[email protected]>
157
158  Permission is hereby granted, free of charge, to any person obtaining a copy
159  of this software and associated documentation files (the "Software"), to
160  deal in the Software without restriction, including without limitation the
161  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
162  sell copies of the Software, and to permit persons to whom the Software is
163  furnished to do so, subject to the following conditions:
164
165  The above copyright notice and this permission notice shall be included in
166  all copies or substantial portions of the Software.
167
168  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
169  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
170  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
171  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
172  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
173  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
174  IN THE SOFTWARE.
175-->
176
177
178
179<!--
180  Check whether the repository is hosted on one of the supported code hosting
181  platforms (GitHub, GitLab or Bitbucket) to show icon.
182-->
183
184
185  
186
187
188
189  
190  
191
192
193<!-- Repository containing source -->
194<a href="https://git.pleroma.social/pleroma/pleroma" title="source.link.title"
195    class="md-source" data-md-source="gitlab">
196  
197    <div class="md-source__icon">
198      <svg viewBox="0 0 24 24" width="24" height="24">
199        <use xlink:href="#__gitlab" width="24" height="24"></use>
200      </svg>
201    </div>
202  
203  <div class="md-source__repository">
204    pleroma/pleroma
205  </div>
206</a>
207      </div>
208    
209  </nav>
210  
211</header>
212    
213    <div class="md-container" data-md-component="container">
214      
215      
216        
217          
218        
219      
220      <main class="md-main" data-md-component="main">
221        <div class="md-main__inner md-grid">
222          
223            
224              
225              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
226                <div class="md-sidebar__scrollwrap">
227                  <div class="md-sidebar__inner">
228                    
229
230
231
232<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
233  <label class="md-nav__title" for="__drawer">
234    <a href="../../.." title="Pleroma Documentation" class="md-nav__button md-logo" aria-label="Pleroma Documentation" data-md-component="logo">
235      
236  <img src="../../../images/pleroma_logo_vector_nobg.svg" alt="logo">
237
238    </a>
239    Pleroma Documentation
240  </label>
241  
242    <div class="md-nav__source">
243      <!--
244  Copyright (c) 2016-2019 Martin Donath <[email protected]>
245
246  Permission is hereby granted, free of charge, to any person obtaining a copy
247  of this software and associated documentation files (the "Software"), to
248  deal in the Software without restriction, including without limitation the
249  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
250  sell copies of the Software, and to permit persons to whom the Software is
251  furnished to do so, subject to the following conditions:
252
253  The above copyright notice and this permission notice shall be included in
254  all copies or substantial portions of the Software.
255
256  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
257  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
258  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
259  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
260  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
261  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
262  IN THE SOFTWARE.
263-->
264
265
266
267<!--
268  Check whether the repository is hosted on one of the supported code hosting
269  platforms (GitHub, GitLab or Bitbucket) to show icon.
270-->
271
272
273  
274
275
276
277  
278  
279
280
281<!-- Repository containing source -->
282<a href="https://git.pleroma.social/pleroma/pleroma" title="source.link.title"
283    class="md-source" data-md-source="gitlab">
284  
285    <div class="md-source__icon">
286      <svg viewBox="0 0 24 24" width="24" height="24">
287        <use xlink:href="#__gitlab" width="24" height="24"></use>
288      </svg>
289    </div>
290  
291  <div class="md-source__repository">
292    pleroma/pleroma
293  </div>
294</a>
295    </div>
296  
297  <ul class="md-nav__list" data-md-scrollfix>
298    
299      
300      
301  
302  
303  
304  
305    <li class="md-nav__item">
306      <a href="../../.." class="md-nav__link">
307        
308  
309  <span class="md-ellipsis">
310    Home
311  </span>
312  
313
314      </a>
315    </li>
316  
317
318    
319      
320      
321  
322  
323    
324  
325  
326  
327    
328    
329    
330    
331    
332    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
333      
334        
335        
336        
337        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked>
338        
339          
340          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
341            
342  
343  <span class="md-ellipsis">
344    Backend
345  </span>
346  
347
348            <span class="md-nav__icon md-icon"></span>
349          </label>
350        
351        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true">
352          <label class="md-nav__title" for="__nav_2">
353            <span class="md-nav__icon md-icon"></span>
354            Backend
355          </label>
356          <ul class="md-nav__list" data-md-scrollfix>
357            
358              
359                
360  
361  
362  
363  
364    <li class="md-nav__item">
365      <a href="../../" class="md-nav__link">
366        
367  
368  <span class="md-ellipsis">
369    Introduction to Pleroma
370  </span>
371  
372
373      </a>
374    </li>
375  
376
377              
378            
379              
380                
381  
382  
383  
384  
385    <li class="md-nav__item">
386      <a href="../../clients/" class="md-nav__link">
387        
388  
389  <span class="md-ellipsis">
390    Pleroma Clients
391  </span>
392  
393
394      </a>
395    </li>
396  
397
398              
399            
400              
401                
402  
403  
404  
405  
406    
407    
408    
409    
410    
411    <li class="md-nav__item md-nav__item--nested">
412      
413        
414        
415        
416        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3" >
417        
418          
419          <label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex="0">
420            
421  
422  <span class="md-ellipsis">
423    Administration
424  </span>
425  
426
427            <span class="md-nav__icon md-icon"></span>
428          </label>
429        
430        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false">
431          <label class="md-nav__title" for="__nav_2_3">
432            <span class="md-nav__icon md-icon"></span>
433            Administration
434          </label>
435          <ul class="md-nav__list" data-md-scrollfix>
436            
437              
438                
439  
440  
441  
442  
443    <li class="md-nav__item">
444      <a href="../../administration/backup/" class="md-nav__link">
445        
446  
447  <span class="md-ellipsis">
448    Backup/Restore/Move/Remove your instance
449  </span>
450  
451
452      </a>
453    </li>
454  
455
456              
457            
458              
459                
460  
461  
462  
463  
464    <li class="md-nav__item">
465      <a href="../../administration/dashboards/" class="md-nav__link">
466        
467  
468  <span class="md-ellipsis">
469    Dashboards
470  </span>
471  
472
473      </a>
474    </li>
475  
476
477              
478            
479              
480                
481  
482  
483  
484  
485    <li class="md-nav__item">
486      <a href="../../administration/frontends-management/" class="md-nav__link">
487        
488  
489  <span class="md-ellipsis">
490    Managing installed frontends
491  </span>
492  
493
494      </a>
495    </li>
496  
497
498              
499            
500              
501                
502  
503  
504  
505  
506    <li class="md-nav__item">
507      <a href="../../administration/updating/" class="md-nav__link">
508        
509  
510  <span class="md-ellipsis">
511    Updating your instance
512  </span>
513  
514
515      </a>
516    </li>
517  
518
519              
520            
521              
522                
523  
524  
525  
526  
527    
528    
529    
530    
531    
532    <li class="md-nav__item md-nav__item--nested">
533      
534        
535        
536        
537        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_3_5" >
538        
539          
540          <label class="md-nav__link" for="__nav_2_3_5" id="__nav_2_3_5_label" tabindex="0">
541            
542  
543  <span class="md-ellipsis">
544    CLI tasks
545  </span>
546  
547
548            <span class="md-nav__icon md-icon"></span>
549          </label>
550        
551        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_3_5_label" aria-expanded="false">
552          <label class="md-nav__title" for="__nav_2_3_5">
553            <span class="md-nav__icon md-icon"></span>
554            CLI tasks
555          </label>
556          <ul class="md-nav__list" data-md-scrollfix>
557            
558              
559                
560  
561  
562  
563  
564    <li class="md-nav__item">
565      <a href="../../administration/CLI_tasks/config/" class="md-nav__link">
566        
567  
568  <span class="md-ellipsis">
569    Transferring the config to/from the database
570  </span>
571  
572
573      </a>
574    </li>
575  
576
577              
578            
579              
580                
581  
582  
583  
584  
585    <li class="md-nav__item">
586      <a href="../../administration/CLI_tasks/database/" class="md-nav__link">
587        
588  
589  <span class="md-ellipsis">
590    Database maintenance tasks
591  </span>
592  
593
594      </a>
595    </li>
596  
597
598              
599            
600              
601                
602  
603  
604  
605  
606    <li class="md-nav__item">
607      <a href="../../administration/CLI_tasks/digest/" class="md-nav__link">
608        
609  
610  <span class="md-ellipsis">
611    Managing digest emails
612  </span>
613  
614
615      </a>
616    </li>
617  
618
619              
620            
621              
622                
623  
624  
625  
626  
627    <li class="md-nav__item">
628      <a href="../../administration/CLI_tasks/email/" class="md-nav__link">
629        
630  
631  <span class="md-ellipsis">
632    EMail administration tasks
633  </span>
634  
635
636      </a>
637    </li>
638  
639
640              
641            
642              
643                
644  
645  
646  
647  
648    <li class="md-nav__item">
649      <a href="../../administration/CLI_tasks/emoji/" class="md-nav__link">
650        
651  
652  <span class="md-ellipsis">
653    Managing emoji packs
654  </span>
655  
656
657      </a>
658    </li>
659  
660
661              
662            
663              
664                
665  
666  
667  
668  
669    <li class="md-nav__item">
670      <a href="../../administration/CLI_tasks/frontend/" class="md-nav__link">
671        
672  
673  <span class="md-ellipsis">
674    Managing frontends
675  </span>
676  
677
678      </a>
679    </li>
680  
681
682              
683            
684              
685                
686  
687  
688  
689  
690    <li class="md-nav__item">
691      <a href="../../administration/CLI_tasks/instance/" class="md-nav__link">
692        
693  
694  <span class="md-ellipsis">
695    Managing instance configuration
696  </span>
697  
698
699      </a>
700    </li>
701  
702
703              
704            
705              
706                
707  
708  
709  
710  
711    <li class="md-nav__item">
712      <a href="../../administration/CLI_tasks/oauth_app/" class="md-nav__link">
713        
714  
715  <span class="md-ellipsis">
716    Creating trusted OAuth App
717  </span>
718  
719
720      </a>
721    </li>
722  
723
724              
725            
726              
727                
728  
729  
730  
731  
732    <li class="md-nav__item">
733      <a href="../../administration/CLI_tasks/relay/" class="md-nav__link">
734        
735  
736  <span class="md-ellipsis">
737    Managing relays
738  </span>
739  
740
741      </a>
742    </li>
743  
744
745              
746            
747              
748                
749  
750  
751  
752  
753    <li class="md-nav__item">
754      <a href="../../administration/CLI_tasks/robots_txt/" class="md-nav__link">
755        
756  
757  <span class="md-ellipsis">
758    Managing robots.txt
759  </span>
760  
761
762      </a>
763    </li>
764  
765
766              
767            
768              
769                
770  
771  
772  
773  
774    <li class="md-nav__item">
775      <a href="../../administration/CLI_tasks/uploads/" class="md-nav__link">
776        
777  
778  <span class="md-ellipsis">
779    Managing uploads
780  </span>
781  
782
783      </a>
784    </li>
785  
786
787              
788            
789              
790                
791  
792  
793  
794  
795    <li class="md-nav__item">
796      <a href="../../administration/CLI_tasks/user/" class="md-nav__link">
797        
798  
799  <span class="md-ellipsis">
800    Managing users
801  </span>
802  
803
804      </a>
805    </li>
806  
807
808              
809            
810          </ul>
811        </nav>
812      
813    </li>
814  
815
816              
817            
818          </ul>
819        </nav>
820      
821    </li>
822  
823
824              
825            
826              
827                
828  
829  
830  
831  
832    
833    
834    
835    
836    
837    <li class="md-nav__item md-nav__item--nested">
838      
839        
840        
841        
842        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_4" >
843        
844          
845          <label class="md-nav__link" for="__nav_2_4" id="__nav_2_4_label" tabindex="0">
846            
847  
848  <span class="md-ellipsis">
849    Configuration
850  </span>
851  
852
853            <span class="md-nav__icon md-icon"></span>
854          </label>
855        
856        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_4_label" aria-expanded="false">
857          <label class="md-nav__title" for="__nav_2_4">
858            <span class="md-nav__icon md-icon"></span>
859            Configuration
860          </label>
861          <ul class="md-nav__list" data-md-scrollfix>
862            
863              
864                
865  
866  
867  
868  
869    <li class="md-nav__item">
870      <a href="../../configuration/auth/" class="md-nav__link">
871        
872  
873  <span class="md-ellipsis">
874    Auth
875  </span>
876  
877
878      </a>
879    </li>
880  
881
882              
883            
884              
885                
886  
887  
888  
889  
890    <li class="md-nav__item">
891      <a href="../../configuration/cheatsheet/" class="md-nav__link">
892        
893  
894  <span class="md-ellipsis">
895    Configuration Cheat Sheet
896  </span>
897  
898
899      </a>
900    </li>
901  
902
903              
904            
905              
906                
907  
908  
909  
910  
911    <li class="md-nav__item">
912      <a href="../../configuration/custom_emoji/" class="md-nav__link">
913        
914  
915  <span class="md-ellipsis">
916    Custom Emoji
917  </span>
918  
919
920      </a>
921    </li>
922  
923
924              
925            
926              
927                
928  
929  
930  
931  
932    <li class="md-nav__item">
933      <a href="../../configuration/hardening/" class="md-nav__link">
934        
935  
936  <span class="md-ellipsis">
937    Hardening your instance
938  </span>
939  
940
941      </a>
942    </li>
943  
944
945              
946            
947              
948                
949  
950  
951  
952  
953    <li class="md-nav__item">
954      <a href="../../configuration/how_to_serve_another_domain_for_webfinger/" class="md-nav__link">
955        
956  
957  <span class="md-ellipsis">
958    How to use a different domain name for Pleroma and the users it serves
959  </span>
960  
961
962      </a>
963    </li>
964  
965
966              
967            
968              
969                
970  
971  
972  
973  
974    <li class="md-nav__item">
975      <a href="../../configuration/howto_database_config/" class="md-nav__link">
976        
977  
978  <span class="md-ellipsis">
979    How to activate Pleroma in-database configuration
980  </span>
981  
982
983      </a>
984    </li>
985  
986
987              
988            
989              
990                
991  
992  
993  
994  
995    <li class="md-nav__item">
996      <a href="../../configuration/howto_ejabberd/" class="md-nav__link">
997        
998  
999  <span class="md-ellipsis">
1000    Configuring Ejabberd (XMPP Server) to use Pleroma for authentication
1001  </span>
1002  
1003
1004      </a>
1005    </li>
1006  
1007
1008              
1009            
1010              
1011                
1012  
1013  
1014  
1015  
1016    <li class="md-nav__item">
1017      <a href="../../configuration/howto_mediaproxy/" class="md-nav__link">
1018        
1019  
1020  <span class="md-ellipsis">
1021    How to activate mediaproxy
1022  </span>
1023  
1024
1025      </a>
1026    </li>
1027  
1028
1029              
1030            
1031              
1032                
1033  
1034  
1035  
1036  
1037    <li class="md-nav__item">
1038      <a href="../../configuration/howto_mongooseim/" class="md-nav__link">
1039        
1040  
1041  <span class="md-ellipsis">
1042    Configuring MongooseIM (XMPP Server) to use Pleroma for authentication
1043  </span>
1044  
1045
1046      </a>
1047    </li>
1048  
1049
1050              
1051            
1052              
1053                
1054  
1055  
1056  
1057  
1058    <li class="md-nav__item">
1059      <a href="../../configuration/howto_proxy/" class="md-nav__link">
1060        
1061  
1062  <span class="md-ellipsis">
1063    How to configure upstream proxy for federation
1064  </span>
1065  
1066
1067      </a>
1068    </li>
1069  
1070
1071              
1072            
1073              
1074                
1075  
1076  
1077  
1078  
1079    <li class="md-nav__item">
1080      <a href="../../configuration/howto_search_cjk/" class="md-nav__link">
1081        
1082  
1083  <span class="md-ellipsis">
1084    How to enable text search for Chinese, Japanese and Korean
1085  </span>
1086  
1087
1088      </a>
1089    </li>
1090  
1091
1092              
1093            
1094              
1095                
1096  
1097  
1098  
1099  
1100    <li class="md-nav__item">
1101      <a href="../../configuration/howto_set_richmedia_cache_ttl_based_on_image/" class="md-nav__link">
1102        
1103  
1104  <span class="md-ellipsis">
1105    How to set rich media cache ttl based on image ttl
1106  </span>
1107  
1108
1109      </a>
1110    </li>
1111  
1112
1113              
1114            
1115              
1116                
1117  
1118  
1119  
1120  
1121    <li class="md-nav__item">
1122      <a href="../../configuration/howto_theming_your_instance/" class="md-nav__link">
1123        
1124  
1125  <span class="md-ellipsis">
1126    Theming your instance
1127  </span>
1128  
1129
1130      </a>
1131    </li>
1132  
1133
1134              
1135            
1136              
1137                
1138  
1139  
1140  
1141  
1142    <li class="md-nav__item">
1143      <a href="../../configuration/i2p/" class="md-nav__link">
1144        
1145  
1146  <span class="md-ellipsis">
1147    I2P Federation and Accessibility
1148  </span>
1149  
1150
1151      </a>
1152    </li>
1153  
1154
1155              
1156            
1157              
1158                
1159  
1160  
1161  
1162  
1163    <li class="md-nav__item">
1164      <a href="../../configuration/mrf/" class="md-nav__link">
1165        
1166  
1167  <span class="md-ellipsis">
1168    Message Rewrite Facility
1169  </span>
1170  
1171
1172      </a>
1173    </li>
1174  
1175
1176              
1177            
1178              
1179                
1180  
1181  
1182  
1183  
1184    <li class="md-nav__item">
1185      <a href="../../configuration/onion_federation/" class="md-nav__link">
1186        
1187  
1188  <span class="md-ellipsis">
1189    Easy Onion Federation (Tor)
1190  </span>
1191  
1192
1193      </a>
1194    </li>
1195  
1196
1197              
1198            
1199              
1200                
1201  
1202  
1203  
1204  
1205    <li class="md-nav__item">
1206      <a href="../../configuration/optimizing_beam/" class="md-nav__link">
1207        
1208  
1209  <span class="md-ellipsis">
1210    Optimizing the BEAM
1211  </span>
1212  
1213
1214      </a>
1215    </li>
1216  
1217
1218              
1219            
1220              
1221                
1222  
1223  
1224  
1225  
1226    <li class="md-nav__item">
1227      <a href="../../configuration/postgresql/" class="md-nav__link">
1228        
1229  
1230  <span class="md-ellipsis">
1231    Optimizing PostgreSQL performance
1232  </span>
1233  
1234
1235      </a>
1236    </li>
1237  
1238
1239              
1240            
1241              
1242                
1243  
1244  
1245  
1246  
1247    <li class="md-nav__item">
1248      <a href="../../configuration/search/" class="md-nav__link">
1249        
1250  
1251  <span class="md-ellipsis">
1252    Configuring search
1253  </span>
1254  
1255
1256      </a>
1257    </li>
1258  
1259
1260              
1261            
1262              
1263                
1264  
1265  
1266  
1267  
1268    <li class="md-nav__item">
1269      <a href="../../configuration/static_dir/" class="md-nav__link">
1270        
1271  
1272  <span class="md-ellipsis">
1273    Static Directory
1274  </span>
1275  
1276
1277      </a>
1278    </li>
1279  
1280
1281              
1282            
1283              
1284                
1285  
1286  
1287  
1288  
1289    <li class="md-nav__item">
1290      <a href="../../configuration/storing_remote_media/" class="md-nav__link">
1291        
1292  
1293  <span class="md-ellipsis">
1294    Storing Remote Media
1295  </span>
1296  
1297
1298      </a>
1299    </li>
1300  
1301
1302              
1303            
1304          </ul>
1305        </nav>
1306      
1307    </li>
1308  
1309
1310              
1311            
1312              
1313                
1314  
1315  
1316  
1317  
1318    
1319    
1320    
1321    
1322    
1323    <li class="md-nav__item md-nav__item--nested">
1324      
1325        
1326        
1327        
1328        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5" >
1329        
1330          
1331          <label class="md-nav__link" for="__nav_2_5" id="__nav_2_5_label" tabindex="0">
1332            
1333  
1334  <span class="md-ellipsis">
1335    Development
1336  </span>
1337  
1338
1339            <span class="md-nav__icon md-icon"></span>
1340          </label>
1341        
1342        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_5_label" aria-expanded="false">
1343          <label class="md-nav__title" for="__nav_2_5">
1344            <span class="md-nav__icon md-icon"></span>
1345            Development
1346          </label>
1347          <ul class="md-nav__list" data-md-scrollfix>
1348            
1349              
1350                
1351  
1352  
1353  
1354  
1355    <li class="md-nav__item">
1356      <a href="../../development/" class="md-nav__link">
1357        
1358  
1359  <span class="md-ellipsis">
1360    Index
1361  </span>
1362  
1363
1364      </a>
1365    </li>
1366  
1367
1368              
1369            
1370              
1371                
1372  
1373  
1374  
1375  
1376    <li class="md-nav__item">
1377      <a href="../../development/ap_extensions/" class="md-nav__link">
1378        
1379  
1380  <span class="md-ellipsis">
1381    AP Extensions
1382  </span>
1383  
1384
1385      </a>
1386    </li>
1387  
1388
1389              
1390            
1391              
1392                
1393  
1394  
1395  
1396  
1397    <li class="md-nav__item">
1398      <a href="../../development/authentication_authorization/" class="md-nav__link">
1399        
1400  
1401  <span class="md-ellipsis">
1402    Authentication &amp; Authorization
1403  </span>
1404  
1405
1406      </a>
1407    </li>
1408  
1409
1410              
1411            
1412              
1413                
1414  
1415  
1416  
1417  
1418    <li class="md-nav__item">
1419      <a href="../../development/mox_testing/" class="md-nav__link">
1420        
1421  
1422  <span class="md-ellipsis">
1423    Using Mox for Testing in Pleroma
1424  </span>
1425  
1426
1427      </a>
1428    </li>
1429  
1430
1431              
1432            
1433              
1434                
1435  
1436  
1437  
1438  
1439    <li class="md-nav__item">
1440      <a href="../../development/setting_up_a_gitlab_runner/" class="md-nav__link">
1441        
1442  
1443  <span class="md-ellipsis">
1444    Setting up a Gitlab-runner
1445  </span>
1446  
1447
1448      </a>
1449    </li>
1450  
1451
1452              
1453            
1454              
1455                
1456  
1457  
1458  
1459  
1460    <li class="md-nav__item">
1461      <a href="../../development/setting_up_pleroma_dev/" class="md-nav__link">
1462        
1463  
1464  <span class="md-ellipsis">
1465    Setting up a Pleroma development environment
1466  </span>
1467  
1468
1469      </a>
1470    </li>
1471  
1472
1473              
1474            
1475              
1476                
1477  
1478  
1479  
1480  
1481    
1482    
1483    
1484    
1485    
1486    <li class="md-nav__item md-nav__item--nested">
1487      
1488        
1489        
1490        
1491        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_5_7" >
1492        
1493          
1494          <label class="md-nav__link" for="__nav_2_5_7" id="__nav_2_5_7_label" tabindex="0">
1495            
1496  
1497  <span class="md-ellipsis">
1498    API
1499  </span>
1500  
1501
1502            <span class="md-nav__icon md-icon"></span>
1503          </label>
1504        
1505        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_5_7_label" aria-expanded="false">
1506          <label class="md-nav__title" for="__nav_2_5_7">
1507            <span class="md-nav__icon md-icon"></span>
1508            API
1509          </label>
1510          <ul class="md-nav__list" data-md-scrollfix>
1511            
1512              
1513                
1514  
1515  
1516  
1517  
1518    <li class="md-nav__item">
1519      <a href="../../development/API/admin_api/" class="md-nav__link">
1520        
1521  
1522  <span class="md-ellipsis">
1523    Admin API
1524  </span>
1525  
1526
1527      </a>
1528    </li>
1529  
1530
1531              
1532            
1533              
1534                
1535  
1536  
1537  
1538  
1539    <li class="md-nav__item">
1540      <a href="../../development/API/chats/" class="md-nav__link">
1541        
1542  
1543  <span class="md-ellipsis">
1544    Chats
1545  </span>
1546  
1547
1548      </a>
1549    </li>
1550  
1551
1552              
1553            
1554              
1555                
1556  
1557  
1558  
1559  
1560    <li class="md-nav__item">
1561      <a href="../../development/API/differences_in_mastoapi_responses/" class="md-nav__link">
1562        
1563  
1564  <span class="md-ellipsis">
1565    Differences in Mastodon API responses from vanilla Mastodon
1566  </span>
1567  
1568
1569      </a>
1570    </li>
1571  
1572
1573              
1574            
1575              
1576                
1577  
1578  
1579  
1580  
1581    <li class="md-nav__item">
1582      <a href="../../development/API/nodeinfo/" class="md-nav__link">
1583        
1584  
1585  <span class="md-ellipsis">
1586    Nodeinfo
1587  </span>
1588  
1589
1590      </a>
1591    </li>
1592  
1593
1594              
1595            
1596              
1597                
1598  
1599  
1600  
1601  
1602    <li class="md-nav__item">
1603      <a href="../../development/API/pleroma_api/" class="md-nav__link">
1604        
1605  
1606  <span class="md-ellipsis">
1607    Pleroma API
1608  </span>
1609  
1610
1611      </a>
1612    </li>
1613  
1614
1615              
1616            
1617              
1618                
1619  
1620  
1621  
1622  
1623    <li class="md-nav__item">
1624      <a href="../../development/API/prometheus/" class="md-nav__link">
1625        
1626  
1627  <span class="md-ellipsis">
1628    Prometheus / OpenTelemetry Metrics
1629  </span>
1630  
1631
1632      </a>
1633    </li>
1634  
1635
1636              
1637            
1638          </ul>
1639        </nav>
1640      
1641    </li>
1642  
1643
1644              
1645            
1646          </ul>
1647        </nav>
1648      
1649    </li>
1650  
1651
1652              
1653            
1654              
1655                
1656  
1657  
1658    
1659  
1660  
1661  
1662    
1663    
1664    
1665    
1666    
1667    <li class="md-nav__item md-nav__item--active md-nav__item--nested">
1668      
1669        
1670        
1671        
1672        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6" checked>
1673        
1674          
1675          <label class="md-nav__link" for="__nav_2_6" id="__nav_2_6_label" tabindex="0">
1676            
1677  
1678  <span class="md-ellipsis">
1679    Installation
1680  </span>
1681  
1682
1683            <span class="md-nav__icon md-icon"></span>
1684          </label>
1685        
1686        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_6_label" aria-expanded="true">
1687          <label class="md-nav__title" for="__nav_2_6">
1688            <span class="md-nav__icon md-icon"></span>
1689            Installation
1690          </label>
1691          <ul class="md-nav__list" data-md-scrollfix>
1692            
1693              
1694                
1695  
1696  
1697  
1698  
1699    <li class="md-nav__item">
1700      <a href="../alpine_linux_en/" class="md-nav__link">
1701        
1702  
1703  <span class="md-ellipsis">
1704    Installing on Alpine Linux
1705  </span>
1706  
1707
1708      </a>
1709    </li>
1710  
1711
1712              
1713            
1714              
1715                
1716  
1717  
1718  
1719  
1720    <li class="md-nav__item">
1721      <a href="../debian_based_en/" class="md-nav__link">
1722        
1723  
1724  <span class="md-ellipsis">
1725    Installing on Debian Based Distributions
1726  </span>
1727  
1728
1729      </a>
1730    </li>
1731  
1732
1733              
1734            
1735              
1736                
1737  
1738  
1739  
1740  
1741    <li class="md-nav__item">
1742      <a href="../debian_based_jp/" class="md-nav__link">
1743        
1744  
1745  <span class="md-ellipsis">
1746    Pleromaの入れ方
1747  </span>
1748  
1749
1750      </a>
1751    </li>
1752  
1753
1754              
1755            
1756              
1757                
1758  
1759  
1760  
1761  
1762    <li class="md-nav__item">
1763      <a href="../freebsd_en/" class="md-nav__link">
1764        
1765  
1766  <span class="md-ellipsis">
1767    Installing on FreeBSD
1768  </span>
1769  
1770
1771      </a>
1772    </li>
1773  
1774
1775              
1776            
1777              
1778                
1779  
1780  
1781  
1782  
1783    <li class="md-nav__item">
1784      <a href="../gentoo_en/" class="md-nav__link">
1785        
1786  
1787  <span class="md-ellipsis">
1788    Manual install on Gentoo GNU/Linux
1789  </span>
1790  
1791
1792      </a>
1793    </li>
1794  
1795
1796              
1797            
1798              
1799                
1800  
1801  
1802  
1803  
1804    <li class="md-nav__item">
1805      <a href="../gentoo_otp_en/" class="md-nav__link">
1806        
1807  
1808  <span class="md-ellipsis">
1809    Packaged install on Gentoo Linux
1810  </span>
1811  
1812
1813      </a>
1814    </li>
1815  
1816
1817              
1818            
1819              
1820                
1821  
1822  
1823  
1824  
1825    <li class="md-nav__item">
1826      <a href="../migrating_from_source_otp_en/" class="md-nav__link">
1827        
1828  
1829  <span class="md-ellipsis">
1830    Switching a from-source install to OTP releases
1831  </span>
1832  
1833
1834      </a>
1835    </li>
1836  
1837
1838              
1839            
1840              
1841                
1842  
1843  
1844  
1845  
1846    <li class="md-nav__item">
1847      <a href="../openbsd_en/" class="md-nav__link">
1848        
1849  
1850  <span class="md-ellipsis">
1851    Installing on OpenBSD
1852  </span>
1853  
1854
1855      </a>
1856    </li>
1857  
1858
1859              
1860            
1861              
1862                
1863  
1864  
1865  
1866  
1867    <li class="md-nav__item">
1868      <a href="../openbsd_fi/" class="md-nav__link">
1869        
1870  
1871  <span class="md-ellipsis">
1872    Pleroman asennus OpenBSD:llä
1873  </span>
1874  
1875
1876      </a>
1877    </li>
1878  
1879
1880              
1881            
1882              
1883                
1884  
1885  
1886    
1887  
1888  
1889  
1890    <li class="md-nav__item md-nav__item--active">
1891      
1892      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
1893      
1894      
1895        
1896      
1897      
1898        <label class="md-nav__link md-nav__link--active" for="__toc">
1899          
1900  
1901  <span class="md-ellipsis">
1902    Installing on Linux using OTP releases
1903  </span>
1904  
1905
1906          <span class="md-nav__icon md-icon"></span>
1907        </label>
1908      
1909      <a href="./" class="md-nav__link md-nav__link--active">
1910        
1911  
1912  <span class="md-ellipsis">
1913    Installing on Linux using OTP releases
1914  </span>
1915  
1916
1917      </a>
1918      
1919        
1920
1921<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1922  
1923  
1924  
1925    
1926  
1927  
1928    <label class="md-nav__title" for="__toc">
1929      <span class="md-nav__icon md-icon"></span>
1930      Table of contents
1931    </label>
1932    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1933      
1934        <li class="md-nav__item">
1935  <a href="#packaged-otp-installation-vs-manual-from-source-installations" class="md-nav__link">
1936    <span class="md-ellipsis">
1937      Packaged (OTP) installation vs Manual (from-source) installations
1938    </span>
1939  </a>
1940  
1941</li>
1942      
1943        <li class="md-nav__item">
1944  <a href="#pre-requisites" class="md-nav__link">
1945    <span class="md-ellipsis">
1946      Pre-requisites
1947    </span>
1948  </a>
1949  
1950    <nav class="md-nav" aria-label="Pre-requisites">
1951      <ul class="md-nav__list">
1952        
1953          <li class="md-nav__item">
1954  <a href="#detecting-flavour" class="md-nav__link">
1955    <span class="md-ellipsis">
1956      Detecting flavour
1957    </span>
1958  </a>
1959  
1960</li>
1961        
1962          <li class="md-nav__item">
1963  <a href="#installing-the-required-packages" class="md-nav__link">
1964    <span class="md-ellipsis">
1965      Installing the required packages
1966    </span>
1967  </a>
1968  
1969</li>
1970        
1971          <li class="md-nav__item">
1972  <a href="#installing-optional-packages" class="md-nav__link">
1973    <span class="md-ellipsis">
1974      Installing optional packages
1975    </span>
1976  </a>
1977  
1978</li>
1979        
1980      </ul>
1981    </nav>
1982  
1983</li>
1984      
1985        <li class="md-nav__item">
1986  <a href="#setup" class="md-nav__link">
1987    <span class="md-ellipsis">
1988      Setup
1989    </span>
1990  </a>
1991  
1992    <nav class="md-nav" aria-label="Setup">
1993      <ul class="md-nav__list">
1994        
1995          <li class="md-nav__item">
1996  <a href="#configuring-postgresql" class="md-nav__link">
1997    <span class="md-ellipsis">
1998      Configuring PostgreSQL
1999    </span>
2000  </a>
2001  
2002    <nav class="md-nav" aria-label="Configuring PostgreSQL">
2003      <ul class="md-nav__list">
2004        
2005          <li class="md-nav__item">
2006  <a href="#optional-installing-rum-indexes" class="md-nav__link">
2007    <span class="md-ellipsis">
2008      (Optional) Installing RUM indexes
2009    </span>
2010  </a>
2011  
2012</li>
2013        
2014          <li class="md-nav__item">
2015  <a href="#optional-performance-configuration" class="md-nav__link">
2016    <span class="md-ellipsis">
2017      (Optional) Performance configuration
2018    </span>
2019  </a>
2020  
2021</li>
2022        
2023      </ul>
2024    </nav>
2025  
2026</li>
2027        
2028          <li class="md-nav__item">
2029  <a href="#installing-pleroma" class="md-nav__link">
2030    <span class="md-ellipsis">
2031      Installing Pleroma
2032    </span>
2033  </a>
2034  
2035</li>
2036        
2037          <li class="md-nav__item">
2038  <a href="#setting-up-nginx-and-getting-lets-encrypt-ssl-certificaties" class="md-nav__link">
2039    <span class="md-ellipsis">
2040      Setting up nginx and getting Let's Encrypt SSL certificaties
2041    </span>
2042  </a>
2043  
2044    <nav class="md-nav" aria-label="Setting up nginx and getting Let's Encrypt SSL certificaties">
2045      <ul class="md-nav__list">
2046        
2047          <li class="md-nav__item">
2048  <a href="#get-a-lets-encrypt-certificate" class="md-nav__link">
2049    <span class="md-ellipsis">
2050      Get a Let's Encrypt certificate
2051    </span>
2052  </a>
2053  
2054</li>
2055        
2056          <li class="md-nav__item">
2057  <a href="#copy-pleroma-nginx-configuration-to-the-nginx-folder" class="md-nav__link">
2058    <span class="md-ellipsis">
2059      Copy Pleroma nginx configuration to the nginx folder
2060    </span>
2061  </a>
2062  
2063</li>
2064        
2065          <li class="md-nav__item">
2066  <a href="#edit-the-nginx-config" class="md-nav__link">
2067    <span class="md-ellipsis">
2068      Edit the nginx config
2069    </span>
2070  </a>
2071  
2072</li>
2073        
2074          <li class="md-nav__item">
2075  <a href="#strongly-recommended-serve-media-on-another-domain" class="md-nav__link">
2076    <span class="md-ellipsis">
2077      (Strongly recommended) serve media on another domain
2078    </span>
2079  </a>
2080  
2081</li>
2082        
2083          <li class="md-nav__item">
2084  <a href="#start-nginx" class="md-nav__link">
2085    <span class="md-ellipsis">
2086      Start nginx
2087    </span>
2088  </a>
2089  
2090</li>
2091        
2092      </ul>
2093    </nav>
2094  
2095</li>
2096        
2097          <li class="md-nav__item">
2098  <a href="#setting-up-a-system-service" class="md-nav__link">
2099    <span class="md-ellipsis">
2100      Setting up a system service
2101    </span>
2102  </a>
2103  
2104</li>
2105        
2106      </ul>
2107    </nav>
2108  
2109</li>
2110      
2111        <li class="md-nav__item">
2112  <a href="#post-installation" class="md-nav__link">
2113    <span class="md-ellipsis">
2114      Post installation
2115    </span>
2116  </a>
2117  
2118    <nav class="md-nav" aria-label="Post installation">
2119      <ul class="md-nav__list">
2120        
2121          <li class="md-nav__item">
2122  <a href="#setting-up-auto-renew-of-the-lets-encrypt-certificate" class="md-nav__link">
2123    <span class="md-ellipsis">
2124      Setting up auto-renew of the Let's Encrypt certificate
2125    </span>
2126  </a>
2127  
2128</li>
2129        
2130      </ul>
2131    </nav>
2132  
2133</li>
2134      
2135        <li class="md-nav__item">
2136  <a href="#create-your-first-user-and-set-as-admin" class="md-nav__link">
2137    <span class="md-ellipsis">
2138      Create your first user and set as admin
2139    </span>
2140  </a>
2141  
2142</li>
2143      
2144        <li class="md-nav__item">
2145  <a href="#further-reading" class="md-nav__link">
2146    <span class="md-ellipsis">
2147      Further reading
2148    </span>
2149  </a>
2150  
2151</li>
2152      
2153        <li class="md-nav__item">
2154  <a href="#questions" class="md-nav__link">
2155    <span class="md-ellipsis">
2156      Questions
2157    </span>
2158  </a>
2159  
2160</li>
2161      
2162    </ul>
2163  
2164</nav>
2165      
2166    </li>
2167  
2168
2169              
2170            
2171              
2172                
2173  
2174  
2175  
2176  
2177    <li class="md-nav__item">
2178      <a href="../release_to_docker_en/" class="md-nav__link">
2179        
2180  
2181  <span class="md-ellipsis">
2182    Running OTP releases via Docker (glibc shim)
2183  </span>
2184  
2185
2186      </a>
2187    </li>
2188  
2189
2190              
2191            
2192              
2193                
2194  
2195  
2196  
2197  
2198    <li class="md-nav__item">
2199      <a href="../yunohost_en/" class="md-nav__link">
2200        
2201  
2202  <span class="md-ellipsis">
2203    Installing on Yunohost
2204  </span>
2205  
2206
2207      </a>
2208    </li>
2209  
2210
2211              
2212            
2213              
2214                
2215  
2216  
2217  
2218  
2219    
2220    
2221    
2222    
2223    
2224    <li class="md-nav__item md-nav__item--nested">
2225      
2226        
2227        
2228        
2229        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_6_13" >
2230        
2231          
2232          <label class="md-nav__link" for="__nav_2_6_13" id="__nav_2_6_13_label" tabindex="0">
2233            
2234  
2235  <span class="md-ellipsis">
2236    Optional
2237  </span>
2238  
2239
2240            <span class="md-nav__icon md-icon"></span>
2241          </label>
2242        
2243        <nav class="md-nav" data-md-level="3" aria-labelledby="__nav_2_6_13_label" aria-expanded="false">
2244          <label class="md-nav__title" for="__nav_2_6_13">
2245            <span class="md-nav__icon md-icon"></span>
2246            Optional
2247          </label>
2248          <ul class="md-nav__list" data-md-scrollfix>
2249            
2250              
2251                
2252  
2253  
2254  
2255  
2256    <li class="md-nav__item">
2257      <a href="../optional/media_graphics_packages/" class="md-nav__link">
2258        
2259  
2260  <span class="md-ellipsis">
2261    Optional software packages needed for specific functionality
2262  </span>
2263  
2264
2265      </a>
2266    </li>
2267  
2268
2269              
2270            
2271          </ul>
2272        </nav>
2273      
2274    </li>
2275  
2276
2277              
2278            
2279          </ul>
2280        </nav>
2281      
2282    </li>
2283  
2284
2285              
2286            
2287          </ul>
2288        </nav>
2289      
2290    </li>
2291  
2292
2293    
2294      
2295      
2296  
2297  
2298  
2299  
2300    
2301    
2302    
2303    
2304    
2305    <li class="md-nav__item md-nav__item--nested">
2306      
2307        
2308        
2309        
2310        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
2311        
2312          
2313          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
2314            
2315  
2316  <span class="md-ellipsis">
2317    Frontend
2318  </span>
2319  
2320
2321            <span class="md-nav__icon md-icon"></span>
2322          </label>
2323        
2324        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
2325          <label class="md-nav__title" for="__nav_3">
2326            <span class="md-nav__icon md-icon"></span>
2327            Frontend
2328          </label>
2329          <ul class="md-nav__list" data-md-scrollfix>
2330            
2331              
2332                
2333  
2334  
2335  
2336  
2337    <li class="md-nav__item">
2338      <a href="../../../frontend/" class="md-nav__link">
2339        
2340  
2341  <span class="md-ellipsis">
2342    Introduction to Pleroma-FE
2343  </span>
2344  
2345
2346      </a>
2347    </li>
2348  
2349
2350              
2351            
2352              
2353                
2354  
2355  
2356  
2357  
2358    <li class="md-nav__item">
2359      <a href="../../../frontend/CONFIGURATION/" class="md-nav__link">
2360        
2361  
2362  <span class="md-ellipsis">
2363    Pleroma-FE configuration and customization for instance administrators
2364  </span>
2365  
2366
2367      </a>
2368    </li>
2369  
2370
2371              
2372            
2373              
2374                
2375  
2376  
2377  
2378  
2379    <li class="md-nav__item">
2380      <a href="../../../frontend/HACKING/" class="md-nav__link">
2381        
2382  
2383  <span class="md-ellipsis">
2384    Hacking, tweaking, contributing
2385  </span>
2386  
2387
2388      </a>
2389    </li>
2390  
2391
2392              
2393            
2394              
2395                
2396  
2397  
2398  
2399  
2400    
2401    
2402    
2403    
2404    
2405    <li class="md-nav__item md-nav__item--nested">
2406      
2407        
2408        
2409        
2410        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3_4" >
2411        
2412          
2413          <label class="md-nav__link" for="__nav_3_4" id="__nav_3_4_label" tabindex="0">
2414            
2415  
2416  <span class="md-ellipsis">
2417    User guide
2418  </span>
2419  
2420
2421            <span class="md-nav__icon md-icon"></span>
2422          </label>
2423        
2424        <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_3_4_label" aria-expanded="false">
2425          <label class="md-nav__title" for="__nav_3_4">
2426            <span class="md-nav__icon md-icon"></span>
2427            User guide
2428          </label>
2429          <ul class="md-nav__list" data-md-scrollfix>
2430            
2431              
2432                
2433  
2434  
2435  
2436  
2437    <li class="md-nav__item">
2438      <a href="../../../frontend/user_guide/" class="md-nav__link">
2439        
2440  
2441  <span class="md-ellipsis">
2442    General overview
2443  </span>
2444  
2445
2446      </a>
2447    </li>
2448  
2449
2450              
2451            
2452              
2453                
2454  
2455  
2456  
2457  
2458    <li class="md-nav__item">
2459      <a href="../../../frontend/user_guide/posting_reading_basic_functions/" class="md-nav__link">
2460        
2461  
2462  <span class="md-ellipsis">
2463    Posting, reading, basic functions.
2464  </span>
2465  
2466
2467      </a>
2468    </li>
2469  
2470
2471              
2472            
2473              
2474                
2475  
2476  
2477  
2478  
2479    <li class="md-nav__item">
2480      <a href="../../../frontend/user_guide/settings/" class="md-nav__link">
2481        
2482  
2483  <span class="md-ellipsis">
2484    Settings
2485  </span>
2486  
2487
2488      </a>
2489    </li>
2490  
2491
2492              
2493            
2494              
2495                
2496  
2497  
2498  
2499  
2500    <li class="md-nav__item">
2501      <a href="../../../frontend/user_guide/timelines/" class="md-nav__link">
2502        
2503  
2504  <span class="md-ellipsis">
2505    Timelines
2506  </span>
2507  
2508
2509      </a>
2510    </li>
2511  
2512
2513              
2514            
2515              
2516                
2517  
2518  
2519  
2520  
2521    <li class="md-nav__item">
2522      <a href="../../../frontend/user_guide/users_follow_mute_block/" class="md-nav__link">
2523        
2524  
2525  <span class="md-ellipsis">
2526    Users: follow, mute, block
2527  </span>
2528  
2529
2530      </a>
2531    </li>
2532  
2533
2534              
2535            
2536          </ul>
2537        </nav>
2538      
2539    </li>
2540  
2541
2542              
2543            
2544          </ul>
2545        </nav>
2546      
2547    </li>
2548  
2549
2550    
2551  </ul>
2552</nav>
2553                  </div>
2554                </div>
2555              </div>
2556            
2557            
2558              
2559              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2560                <div class="md-sidebar__scrollwrap">
2561                  <div class="md-sidebar__inner">
2562                    
2563
2564<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2565  
2566  
2567  
2568    
2569  
2570  
2571    <label class="md-nav__title" for="__toc">
2572      <span class="md-nav__icon md-icon"></span>
2573      Table of contents
2574    </label>
2575    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2576      
2577        <li class="md-nav__item">
2578  <a href="#packaged-otp-installation-vs-manual-from-source-installations" class="md-nav__link">
2579    <span class="md-ellipsis">
2580      Packaged (OTP) installation vs Manual (from-source) installations
2581    </span>
2582  </a>
2583  
2584</li>
2585      
2586        <li class="md-nav__item">
2587  <a href="#pre-requisites" class="md-nav__link">
2588    <span class="md-ellipsis">
2589      Pre-requisites
2590    </span>
2591  </a>
2592  
2593    <nav class="md-nav" aria-label="Pre-requisites">
2594      <ul class="md-nav__list">
2595        
2596          <li class="md-nav__item">
2597  <a href="#detecting-flavour" class="md-nav__link">
2598    <span class="md-ellipsis">
2599      Detecting flavour
2600    </span>
2601  </a>
2602  
2603</li>
2604        
2605          <li class="md-nav__item">
2606  <a href="#installing-the-required-packages" class="md-nav__link">
2607    <span class="md-ellipsis">
2608      Installing the required packages
2609    </span>
2610  </a>
2611  
2612</li>
2613        
2614          <li class="md-nav__item">
2615  <a href="#installing-optional-packages" class="md-nav__link">
2616    <span class="md-ellipsis">
2617      Installing optional packages
2618    </span>
2619  </a>
2620  
2621</li>
2622        
2623      </ul>
2624    </nav>
2625  
2626</li>
2627      
2628        <li class="md-nav__item">
2629  <a href="#setup" class="md-nav__link">
2630    <span class="md-ellipsis">
2631      Setup
2632    </span>
2633  </a>
2634  
2635    <nav class="md-nav" aria-label="Setup">
2636      <ul class="md-nav__list">
2637        
2638          <li class="md-nav__item">
2639  <a href="#configuring-postgresql" class="md-nav__link">
2640    <span class="md-ellipsis">
2641      Configuring PostgreSQL
2642    </span>
2643  </a>
2644  
2645    <nav class="md-nav" aria-label="Configuring PostgreSQL">
2646      <ul class="md-nav__list">
2647        
2648          <li class="md-nav__item">
2649  <a href="#optional-installing-rum-indexes" class="md-nav__link">
2650    <span class="md-ellipsis">
2651      (Optional) Installing RUM indexes
2652    </span>
2653  </a>
2654  
2655</li>
2656        
2657          <li class="md-nav__item">
2658  <a href="#optional-performance-configuration" class="md-nav__link">
2659    <span class="md-ellipsis">
2660      (Optional) Performance configuration
2661    </span>
2662  </a>
2663  
2664</li>
2665        
2666      </ul>
2667    </nav>
2668  
2669</li>
2670        
2671          <li class="md-nav__item">
2672  <a href="#installing-pleroma" class="md-nav__link">
2673    <span class="md-ellipsis">
2674      Installing Pleroma
2675    </span>
2676  </a>
2677  
2678</li>
2679        
2680          <li class="md-nav__item">
2681  <a href="#setting-up-nginx-and-getting-lets-encrypt-ssl-certificaties" class="md-nav__link">
2682    <span class="md-ellipsis">
2683      Setting up nginx and getting Let's Encrypt SSL certificaties
2684    </span>
2685  </a>
2686  
2687    <nav class="md-nav" aria-label="Setting up nginx and getting Let's Encrypt SSL certificaties">
2688      <ul class="md-nav__list">
2689        
2690          <li class="md-nav__item">
2691  <a href="#get-a-lets-encrypt-certificate" class="md-nav__link">
2692    <span class="md-ellipsis">
2693      Get a Let's Encrypt certificate
2694    </span>
2695  </a>
2696  
2697</li>
2698        
2699          <li class="md-nav__item">
2700  <a href="#copy-pleroma-nginx-configuration-to-the-nginx-folder" class="md-nav__link">
2701    <span class="md-ellipsis">
2702      Copy Pleroma nginx configuration to the nginx folder
2703    </span>
2704  </a>
2705  
2706</li>
2707        
2708          <li class="md-nav__item">
2709  <a href="#edit-the-nginx-config" class="md-nav__link">
2710    <span class="md-ellipsis">
2711      Edit the nginx config
2712    </span>
2713  </a>
2714  
2715</li>
2716        
2717          <li class="md-nav__item">
2718  <a href="#strongly-recommended-serve-media-on-another-domain" class="md-nav__link">
2719    <span class="md-ellipsis">
2720      (Strongly recommended) serve media on another domain
2721    </span>
2722  </a>
2723  
2724</li>
2725        
2726          <li class="md-nav__item">
2727  <a href="#start-nginx" class="md-nav__link">
2728    <span class="md-ellipsis">
2729      Start nginx
2730    </span>
2731  </a>
2732  
2733</li>
2734        
2735      </ul>
2736    </nav>
2737  
2738</li>
2739        
2740          <li class="md-nav__item">
2741  <a href="#setting-up-a-system-service" class="md-nav__link">
2742    <span class="md-ellipsis">
2743      Setting up a system service
2744    </span>
2745  </a>
2746  
2747</li>
2748        
2749      </ul>
2750    </nav>
2751  
2752</li>
2753      
2754        <li class="md-nav__item">
2755  <a href="#post-installation" class="md-nav__link">
2756    <span class="md-ellipsis">
2757      Post installation
2758    </span>
2759  </a>
2760  
2761    <nav class="md-nav" aria-label="Post installation">
2762      <ul class="md-nav__list">
2763        
2764          <li class="md-nav__item">
2765  <a href="#setting-up-auto-renew-of-the-lets-encrypt-certificate" class="md-nav__link">
2766    <span class="md-ellipsis">
2767      Setting up auto-renew of the Let's Encrypt certificate
2768    </span>
2769  </a>
2770  
2771</li>
2772        
2773      </ul>
2774    </nav>
2775  
2776</li>
2777      
2778        <li class="md-nav__item">
2779  <a href="#create-your-first-user-and-set-as-admin" class="md-nav__link">
2780    <span class="md-ellipsis">
2781      Create your first user and set as admin
2782    </span>
2783  </a>
2784  
2785</li>
2786      
2787        <li class="md-nav__item">
2788  <a href="#further-reading" class="md-nav__link">
2789    <span class="md-ellipsis">
2790      Further reading
2791    </span>
2792  </a>
2793  
2794</li>
2795      
2796        <li class="md-nav__item">
2797  <a href="#questions" class="md-nav__link">
2798    <span class="md-ellipsis">
2799      Questions
2800    </span>
2801  </a>
2802  
2803</li>
2804      
2805    </ul>
2806  
2807</nav>
2808                  </div>
2809                </div>
2810              </div>
2811            
2812          
2813          
2814            <div class="md-content" data-md-component="content">
2815              <article class="md-content__inner md-typeset">
2816                
2817                  
2818
2819
2820<h1 id="installing-on-linux-using-otp-releases">Installing on Linux using OTP releases<a class="headerlink" href="#installing-on-linux-using-otp-releases" title="Permanent link">&para;</a></h1>
2821<h2 id="packaged-otp-installation-vs-manual-from-source-installations">Packaged (OTP) installation vs Manual (from-source) installations<a class="headerlink" href="#packaged-otp-installation-vs-manual-from-source-installations" title="Permanent link">&para;</a></h2>
2822<p>There is multiple ways to install Pleroma.</p>
2823<dl>
2824<dt>Distro-provided packages</dt><dd>This is the recommended method, where you can get the strongest compatibility guarantees and the best dependency-management</dd>
2825<dt>Pleroma-provided OTP binaries</dt><dd>Intended as fallback for Alpine/Debian-compatible systems lacking a proper Pleroma package, they are heavier than proper distro packages as they also contain Erlang/Elixir and can break after system updates</dd>
2826<dt>Manual from-source installation</dt><dd>Needs build-dependencies to be installed and manual updates+rebuilds. Allows for easier source-customisations.</dd>
2827</dl>
2828
2829<p>This guide covers a installation using OTP releases as built by the Pleroma project, it is meant as a fallback to distribution packages/recipes which are the preferred installation method.<br />
2830To install Pleroma from source, please check out the corresponding guide for your distro.</p>
2831<h2 id="pre-requisites">Pre-requisites<a class="headerlink" href="#pre-requisites" title="Permanent link">&para;</a></h2>
2832<ul>
2833<li>A machine you have root access to running Debian GNU/Linux or compatible (eg. Ubuntu), or Alpine on <code>x86_64</code>, <code>aarch64</code> or <code>armv7l</code> CPU. If you are not sure what you are running see <a href="#detecting-flavour">Detecting flavour section</a> below</li>
2834<li>A (sub)domain pointed to the machine</li>
2835</ul>
2836<p>You will be running commands as root. If you aren't root already, please elevate your privileges by executing <code>sudo -i</code>/<code>su</code>.</p>
2837<p>Similarly to other binaries, OTP releases tend to be only compatible with the distro they are built on, as such this guide focuses only on Debian/Ubuntu and Alpine.</p>
2838<div class="admonition note">
2839<p class="admonition-title">Note</p>
2840<p>If you get <code>GLIBC_... not found</code> errors on Debian/Ubuntu, you can run the OTP release from <code>/opt/pleroma</code> inside a newer distro container without upgrading the host. See <a href="../release_to_docker_en/"><code>release_to_docker_en.md</code></a>.</p>
2841</div>
2842<h3 id="detecting-flavour">Detecting flavour<a class="headerlink" href="#detecting-flavour" title="Permanent link">&para;</a></h3>
2843<p>Paste the following into the shell:
2844<div class="highlight"><pre><span></span><code><span class="nv">arch</span><span class="o">=</span><span class="s2">&quot;</span><span class="k">$(</span>uname<span class="w"> </span>-m<span class="k">)</span><span class="s2">&quot;</span><span class="p">;</span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$arch</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;x86_64&quot;</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="k">
2844then</span><span class="w"> </span><span class="nv">arch</span><span class="o">=</span><span class="s2">&quot;amd64&quot;</span><span class="p">;</span><span class="k">elif</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$arch</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;armv7l&quot;</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="k">then</span><span class="w"> </span><span class="nv">arch</span><span class="o">=</span><span class="s2">&quot;arm&quot;</span><span class="p">;</span><span class="k">elif</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$arch</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;aarch64&quot;</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="k">then</span><span class="w"> </span><span class="nv">arch</span><span class="o">=</span><span class="s2">&quot;arm64&quot;</span><span class="p">;</span><span class="k">else</span><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;Unsupported arch: </span><span class="nv">$arch</span><span class="s2">&quot;</span>&gt;<span class="p">&amp;</span><span class="m">2</span><span class="p">;</span><span class="k">fi</span><span class="p">;</span><span class="k">if</span><span class="w"> </span>getconf<span class="w"> </span>GNU_LIBC_VERSION&gt;/dev/null<span class="p">;</span><span class="k">then</span><span class="w"> </span><span class="nv">libc_postfix</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">;</span><span class="k">elif</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="s2">&quot;</span><span class="k">$(</span>ldd<span class="w"> </span><span class="m">2</span>&gt;<span class="p">&amp;</span><span class="m">1</span><span class="p">|</span>head<span class="w"> </span>-c<span class="w"> </span><span class="m">9</span><span class="k">)</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;musl libc&quot;</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="k">then</span><span class="w"> </span><span class="nv">libc_postfix</span><span class="o">=</span><span class="s2">&quot;-musl&quot;</span><span class="p">;</span><span class="k">elif</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="s2">&quot;</span><span class="k">$(</span>find<span class="w"> </span>/lib/libc.musl*<span class="p">|</span>wc<span class="w"> </span>-l<span class="k">)</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="k">then</span><span class="w"> </span><span class="nv">libc_postfix</span><span class="o">=</span><span class="s2">&quot;-musl&quot;</span><span class="p">;</span><span class="k">else</span><span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;Unsupported libc&quot;</span>&gt;<span class="p">&amp;</span><span class="m">2</span><span class="p">;</span><span class="k">fi</span><span class="p">;</span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$arch$libc_postfix</span><span class="s2">&quot;</span>
2845</code></pre></div></p>
2846<p>This should give your flavour string. If not this just means that we don't build releases for your platform, you can still try installing from source.</p>
2847<h3 id="installing-the-required-packages">Installing the required packages<a class="headerlink" href="#installing-the-required-packages" title="Permanent link">&para;</a></h3>
2848<p>Other than things bundled in the OTP release Pleroma depends on:</p>
2849<ul>
2850<li>curl (to download the release build)</li>
2851<li>unzip (needed to unpack release builds)</li>
2852<li>ncurses (ERTS won't run without it)</li>
2853<li>PostgreSQL (also utilizes extensions in postgresql-contrib)</li>
2854<li>nginx (could be swapped with another reverse proxy but this guide covers only it)</li>
2855<li>certbot (for Let's Encrypt certificates, could be swapped with another ACME client, but this guide covers only it)</li>
2856<li>libmagic/file</li>
2857</ul>
2858<div class="tabbed-set" data-tabs="1:2"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><label for="__tabbed_1_1">Alpine</label><div class="tabbed-content">
2859<div class="highlight"><pre><span></span><code>awk &#39;NR==2&#39; /etc/apk/repositories | sed &#39;s/main/community/&#39; | tee -a /etc/apk/repositories
2860apk update
2861apk add curl unzip ncurses postgresql postgresql-contrib nginx certbot file-dev
2862</code></pre></div>
2863</div>
2864<input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><label for="__tabbed_1_2">Debian/Ubuntu</label><div class="tabbed-content">
2865<div class="highlight"><pre><span></span><code>apt install curl unzip libncurses5 postgresql postgresql-contrib nginx certbot libmagic-dev
2866</code></pre></div>
2867</div>
2868</div>
2869<h3 id="installing-optional-packages">Installing optional packages<a class="headerlink" href="#installing-optional-packages" title="Permanent link">&para;</a></h3>
2870<p>Per <a href="../optional/media_graphics_packages/"><code>docs/installation/optional/media_graphics_packages.md</code></a>:
2871  * ImageMagick
2872  * ffmpeg
2873  * exiftool</p>
2874<div class="tabbed-set" data-tabs="2:2"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><label for="__tabbed_2_1">Alpine</label><div class="tabbed-content">
2875<div class="highlight"><pre><span></span><code>apk update
2876apk add imagemagick ffmpeg exiftool
2877</code></pre></div>
2878</div>
2879<input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><label for="__tabbed_2_2">Debian/Ubuntu</label><div class="tabbed-content">
2880<div class="highlight"><pre><span></span><code>apt install imagemagick ffmpeg libimage-exiftool-perl
2881</code></pre></div>
2882</div>
2883</div>
2884<h2 id="setup">Setup<a class="headerlink" href="#setup" title="Permanent link">&para;</a></h2>
2885<h3 id="configuring-postgresql">Configuring PostgreSQL<a class="headerlink" href="#configuring-postgresql" title="Permanent link">&para;</a></h3>
2886<h4 id="optional-installing-rum-indexes">(Optional) Installing RUM indexes<a class="headerlink" href="#optional-installing-rum-indexes" title="Permanent link">&para;</a></h4>
2887<div class="admonition warning">
2888<p class="admonition-title">Warning</p>
2889<p>It is recommended to use PostgreSQL v11 or newer. We have seen some minor issues with lower PostgreSQL versions.</p>
2890</div>
2891<p>RUM indexes are an alternative indexing scheme that is not included in PostgreSQL by default. You can read more about them on the <a href="../../configuration/cheatsheet/#rum-indexing-for-full-text-search">Configuration page</a>. They are completely optional and most of the time are not worth it, especially if you are running a single user instance (unless you absolutely need ordered search results).</p>
2892<div class="tabbed-set" data-tabs="3:2"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><label for="__tabbed_3_1">Alpine</label><div class="tabbed-content">
2893<div class="highlight"><pre><span></span><code>apk add git build-base postgresql-dev
2894git clone https://github.com/postgrespro/rum /tmp/rum
2895cd /tmp/rum
2896make USE_PGXS=1
2897make USE_PGXS=1 install
2898cd
2899rm -r /tmp/rum
2900</code></pre></div>
2901</div>
2902<input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><label for="__tabbed_3_2">Debian/Ubuntu</label><div class="tabbed-content">
2903<div class="highlight"><pre><span></span><code># Available only on Buster/19.04
2904apt install postgresql-11-rum
2905</code></pre></div>
2906</div>
2907</div>
2908<h4 id="optional-performance-configuration">(Optional) Performance configuration<a class="headerlink" href="#optional-performance-configuration" title="Permanent link">&para;</a></h4>
2909<p>It is encouraged to check <a href="../../configuration/postgresql/">Optimizing your PostgreSQL performance</a> document, for tips on PostgreSQL tuning.</p>
2910<p>Restart PostgreSQL to apply configuration changes:</p>
2911<div class="tabbed-set" data-tabs="4:2"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><label for="__tabbed_4_1">Alpine</label><div class="tabbed-content">
2912<div class="highlight"><pre><span></span><code>rc-service postgresql restart
2913</code></pre></div>
2914</div>
2915<input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><label for="__tabbed_4_2">Debian/Ubuntu</label><div class="tabbed-content">
2916<div class="highlight"><pre><span></span><code>systemctl restart postgresql
2917</code></pre></div>
2918</div>
2919</div>
2920<h3 id="installing-pleroma">Installing Pleroma<a class="headerlink" href="#installing-pleroma" title="Permanent link">&para;</a></h3>
2921<div class="highlight"><pre><span></span><code><span class="c1"># Create a Pleroma user</span>
2922adduser<span class="w"> </span>--system<span class="w"> </span>--shell<span class="w">  </span>/bin/false<span class="w"> </span>--home<span class="w"> </span>/opt/pleroma<span class="w"> </span>pleroma
2923
2924<span class="c1"># Set the flavour environment variable to the string you got in Detecting flavour section.</span>
2925<span class="c1"># For example if the flavour is `amd64-musl` the command will be</span>
2926<span class="nb">export</span><span class="w"> </span><span class="nv">FLAVOUR</span><span class="o">=</span><span class="s2">&quot;amd64-musl&quot;</span>
2927
2928<span class="c1"># Clone the release build into a temporary directory and unpack it<
2928/span>
2929sudo<span class="w"> </span>-Hu<span class="w"> </span>pleroma<span class="w"> </span><span class="s2">&quot;</span>
2930<span class="s2">curl &#39;https://git.pleroma.social/api/v4/projects/2/jobs/artifacts/stable/download?job=</span><span class="nv">$FLAVOUR</span><span class="s2">&#39; -o /tmp/pleroma.zip</span>
2931<span class="s2">unzip /tmp/pleroma.zip -d /tmp/</span>
2932<span class="s2">&quot;</span>
2933
2934<span class="c1"># Move the release to the home directory and delete temporary files</span>
2935sudo<span class="w"> </span>-Hu<span class="w"> </span>pleroma<span class="w"> </span><span class="s2">&quot;</span>
2936<span class="s2">mv /tmp/release/* /opt/pleroma</span>
2937<span class="s2">rmdir /tmp/release</span>
2938<span class="s2">rm /tmp/pleroma.zip</span>
2939<span class="s2">&quot;</span>
2940<span class="c1"># Create uploads directory and set proper permissions (skip if planning to use a remote uploader)</span>
2941<span class="c1"># Note: It does not have to be `/var/lib/pleroma/uploads`, the config generator will ask about the upload directory later</span>
2942
2943mkdir<span class="w"> </span>-p<span class="w"> </span>/var/lib/pleroma/uploads
2944chown<span class="w"> </span>-R<span class="w"> </span>pleroma<span class="w"> </span>/var/lib/pleroma
2945
2946<span class="c1"># Create custom public files directory (custom emojis, frontend bundle overrides, robots.txt, etc.)</span>
2947<span class="c1"># Note: It does not have to be `/var/lib/pleroma/static`, the config generator will ask about the custom public files directory later</span>
2948mkdir<span class="w"> </span>-p<span class="w"> </span>/var/lib/pleroma/static
2949chown<span class="w"> </span>-R<span class="w"> </span>pleroma<span class="w"> </span>/var/lib/pleroma
2950
2951<span class="c1"># Create a config directory</span>
2952mkdir<span class="w"> </span>-p<span class="w"> </span>/etc/pleroma
2953chown<span class="w"> </span>-R<span class="w"> </span>pleroma<span class="w"> </span>/etc/pleroma
2954
2955<span class="c1"># Run the config generator</span>
2956sudo<span class="w"> </span>-Hu<span class="w"> </span>pleroma<span class="w"> </span><span class="s2">&quot;./bin/pleroma_ctl instance gen --output /etc/pleroma/config.exs --output-psql /tmp/setup_db.psql&quot;</span>
2957
2958<span class="c1"># Create the postgres database</span>
2959sudo<span class="w"> </span>-u<span class="w"> </span>postgres<span class="w"> </span>-s<span class="w"> </span><span class="nv">$SHELL</span><span class="w"> </span>-lc<span class="w"> </span><span class="s2">&quot;psql -f /tmp/setup_db.psql&quot;</span>
2960
2961<span class="c1"># Create the database schema</span>
2962sudo<span class="w"> </span>-Hu<span class="w"> </span>pleroma<span class="w"> </span><span class="s2">&quot;./bin/pleroma_ctl migrate&quot;</span>
2963
2964<span class="c1"># If you have installed RUM indexes uncommend and run</span>
2965<span class="c1"># sudo -Hu pleroma &quot;./bin/pleroma_ctl migrate --migrations-path priv/repo/optional_migrations/rum_indexing/&quot;</span>
2966
2967<span class="c1"># Start the instance to verify that everything is working as expected</span>
2968sudo<span class="w"> </span>-Hu<span class="w"> </span>pleroma<span class="w"> </span><span class="s2">&quot;./bin/pleroma daemon&quot;</span>
2969
2970<span class="c1"># Wait for about 20 seconds and query the instance endpoint, if it shows your uri, name and email correctly, you are configured correctly</span>
2971sleep<span class="w"> </span><span class="m">20</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>curl<span class="w"> </span>http://localhost:4000/api/v1/instance
2972
2973<span class="c1"># Stop the instance</span>
2974sudo<span class="w"> </span>-Hu<span class="w"> </span>pleroma<span class="w"> </span><span class="s2">&quot;./bin/pleroma stop&quot;</span>
2975</code></pre></div>
2976<h3 id="setting-up-nginx-and-getting-lets-encrypt-ssl-certificaties">Setting up nginx and getting Let's Encrypt SSL certificaties<a class="headerlink" href="#setting-up-nginx-and-getting-lets-encrypt-ssl-certificaties" title="Permanent link">&para;</a></h3>
2977<h4 id="get-a-lets-encrypt-certificate">Get a Let's Encrypt certificate<a class="headerlink" href="#get-a-lets-encrypt-certificate" title="Permanent link">&para;</a></h4>
2978<div class="highlight"><pre><span></span><code>certbot<span class="w"> </span>certonly<span class="w"> </span>--standalone<span class="w"> </span>--preferred-challenges<span class="w"> </span>http<span class="w"> </span>-d<span class="w"> </span>yourinstance.tld
2979</code></pre></div>
2980<h4 id="copy-pleroma-nginx-configuration-to-the-nginx-folder">
2980Copy Pleroma nginx configuration to the nginx folder<a class="headerlink" href="#copy-pleroma-nginx-configuration-to-the-nginx-folder" title="Permanent link">&para;</a></h4>
2981<p>The location of nginx configs is dependent on the distro</p>
2982<div class="tabbed-set" data-tabs="5:2"><input checked="checked" id="__tabbed_5_1" name="__tabbed_5" type="radio" /><label for="__tabbed_5_1">Alpine</label><div class="tabbed-content">
2983<div class="highlight"><pre><span></span><code>cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/conf.d/pleroma.conf
2984</code></pre></div>
2985</div>
2986<input id="__tabbed_5_2" name="__tabbed_5" type="radio" /><label for="__tabbed_5_2">Debian/Ubuntu</label><div class="tabbed-content">
2987<div class="highlight"><pre><span></span><code>cp /opt/pleroma/installation/pleroma.nginx /etc/nginx/sites-available/pleroma.conf
2988ln -s /etc/nginx/sites-available/pleroma.conf /etc/nginx/sites-enabled/pleroma.conf
2989</code></pre></div>
2990</div>
2991</div>
2992<p>If your distro does not have either of those you can append <code>include /etc/nginx/pleroma.conf</code> to the end of the http section in /etc/nginx/nginx.conf and
2993<div class="highlight"><pre><span></span><code>cp<span class="w"> </span>/opt/pleroma/installation/pleroma.nginx<span class="w"> </span>/etc/nginx/pleroma.conf
2994</code></pre></div></p>
2995<h4 id="edit-the-nginx-config">Edit the nginx config<a class="headerlink" href="#edit-the-nginx-config" title="Permanent link">&para;</a></h4>
2996<div class="highlight"><pre><span></span><code><span class="c1"># Replace example.tld with your (sub)domain</span>
2997<span class="nv">$EDITOR</span><span class="w"> </span>path-to-nginx-config
2998
2999<span class="c1"># Verify that the config is valid</span>
3000nginx<span class="w"> </span>-t
3001</code></pre></div>
3002<h4 id="strongly-recommended-serve-media-on-another-domain">(Strongly recommended) serve media on another domain<a class="headerlink" href="#strongly-recommended-serve-media-on-another-domain" title="Permanent link">&para;</a></h4>
3003<p>Refer to the <a href="../../configuration/hardening/">Hardening your instance</a> document on how to serve media on another domain. We STRONGLY RECOMMEND you to do this to minimize attack vectors.</p>
3004<h4 id="start-nginx">Start nginx<a class="headerlink" href="#start-nginx" title="Permanent link">&para;</a></h4>
3005<div class="tabbed-set" data-tabs="6:2"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><label for="__tabbed_6_1">Alpine</label><div class="tabbed-content">
3006<div class="highlight"><pre><span></span><code>rc-service nginx start
3007</code></pre></div>
3008</div>
3009<input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><label for="__tabbed_6_2">Debian/Ubuntu</label><div class="tabbed-content">
3010<div class="highlight"><pre><span></span><code>systemctl start nginx
3011</code></pre></div>
3012</div>
3013</div>
3014<p>At this point if you open your (sub)domain in a browser you should see a 502 error, that's because Pleroma is not started yet.</p>
3015<h3 id="setting-up-a-system-service">Setting up a system service<a class="headerlink" href="#setting-up-a-system-service" title="Permanent link">&para;</a></h3>
3016<div class="tabbed-set" data-tabs="7:2"><input checked="checked" id="__tabbed_7_1" name="__tabbed_7" type="radio" /><label for="__tabbed_7_1">Alpine</label><div class="tabbed-content">
3017<div class="highlight"><pre><span></span><code># Copy the service into a proper directory
3018cp /opt/pleroma/installation/init.d/pleroma /etc/init.d/pleroma
3019
3020# Start pleroma and enable it on boot
3021rc-service pleroma start
3022rc-update add pleroma
3023</code></pre></div>
3024</div>
3025<input id="__tabbed_7_2" name="__tabbed_7" type="radio" /><label for="__tabbed_7_2">Debian/Ubuntu</label><div class="tabbed-content">
3026<div class="highlight"><pre><span></span><code># Copy the service into a proper directory
3027cp /opt/pleroma/installation/pleroma.service /etc/systemd/system/pleroma.service
3028
3029# Start pleroma and enable it on boot
3030systemctl start pleroma
3031systemctl enable pleroma
3032</code></pre></div>
3033</div>
3034</div>
3035<p>If everything worked, you should see Pleroma-FE when visiting your domain. If that didn't happen, try reviewing the installation steps, starting Pleroma in the foreground and seeing if there are any errors.</p>
3036<p>Questions about the installation or didn’t it work as it should be, ask in <a href="https://matrix.to/#/#pleroma:libera.chat">#pleroma:libera.chat</a> via Matrix or <strong>#pleroma</strong> on <strong>libera.chat</strong> via IRC, you can also <a href="https://git.pleroma.social/pleroma/pleroma-support/issues/new">file an issue on our Gitlab</a>.</p>
3037<h2 id="post-installation">Post installation<a class="headerlink" href="#post-installation" title="Permanent link">&para;</a></h2>
3038<h3 id="setting-up-auto-renew-of-the-lets-encrypt-certificate">Setting up auto-renew of the Let's Encrypt certificate<a class="headerlink" href="#setting-up-auto-renew-of-the-lets-encrypt-certificate" title="Permanent link">&para;</a></h3>
3039<div class="highlight"><pre><span></span><code><span class="c1"># Create the directory for webroot challenges</span>
3040mkdir<span class="w"> </span>-p<span class="w"> </span>/var/lib/letsencrypt
3041
3042<span class="c1"># Uncomment the webroot method</span>
3043<span class="nv">$EDITOR</span><span class="w"> </span>path-to-nginx-config
3044
3045<span class="c1"># Verify that the config is valid</span>
3046nginx<span class="w"> </span>-t
3047</code></pre></div>
3048<div class="tabbed-set" data-tabs="8:2"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><label for="__tabbed_8_1">Alpine</label><div class="tabbed-content">
3049<div class="highlight"><pre><span></span><code># Restart nginx
3050rc-service nginx restart
3051
3052# Start the cron daemon and make it start on boot
3053rc-service crond start
3054rc-update add crond
3055
3056# Ensure the webroot menthod and post hook is working
3057certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --dry-run --post-hook &#39;rc-service nginx reload&#39;
3058
3059# Add it to the daily cron
3060echo &#39;#!/bin/sh
3061certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --post-hook &quot;rc-service nginx reload&quot;
3062&#39; &gt; /etc/periodic/daily/renew-pleroma-cert
3063chmod +x /etc/periodic/daily/renew-pleroma-cert
3064
3065# If everything worked the output should contain /etc/cron.daily/renew-pleroma-cert
3066run-parts --test /etc/periodic/daily
3067</code></pre></div>
3068</div>
3069<input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><label for="__tabbed_8_2">Debian/Ubuntu</label><div class="tabbed-content">
3070<div class="highlight"><pre><span></span><code># Restart nginx
3071systemctl restart nginx
3072
3073# Ensure the webroot menthod and post hook is working
3074certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --dry-run --post-hook &#39;systemctl reload nginx&#39;
3075
3076# Add it to the daily cron
3077echo &#39;#!/bin/sh
3078certbot renew --cert-name yourinstance.tld --webroot -w /var/lib/letsencrypt/ --post-hook &quot;systemctl reload nginx&quot;
3079&#39; &gt; /etc/cron.daily/renew-pleroma-cert
3080chmod +x /etc/cron.daily/renew-pleroma-cert
3081
3082# If everything worked the output should contain /etc/cron.daily/renew-pleroma-cert
3083run-parts --test /etc/cron.daily
3084</code></pre></div>
3085</div>
3086</div>
3087<h2 id="create-your-first-user-and-set-as-admin">Create your first user and set as admin<a class="headerlink" href="#create-your-first-user-and-set-as-admin" title="Permanent link">&para;</a></h2>
3088<p><div class="highlight"><pre><span></span><code><span class="nb">cd</span><span class="w"> </span>/opt/pleroma
3089su<span class="w"> </span>pleroma<span class="w"> </span>-s<span class="w"> </span><span class="nv">$SHELL</span><span class="w"> </span>-lc<span class="w"> </span><span class="s2">&quot;./bin/pleroma_ctl user new joeuser [email protected] --admin&quot;</span>
3090</code></pre></div>
3091This will create an account withe the username of 'joeuser' with the email address of [email protected], and set that user's account as an admin. This will result in a link that you can paste into the browser, which logs you in and enables you to set the password.</p>
3092<h2 id="further-reading">Further reading<a class="headerlink" href="#further-reading" title="Permanent link">&para;</a></h2>
3093<ul>
3094<li><a href="https://blog.soykaf.com/post/how-federation-works/">How Federation Works/Why is my Federated Timeline empty?</a></li>
3095<li><a href="../../administration/backup/">Backup your instance</a></li>
3096<li><a href="../../administration/updating/">Updating your instance</a></li>
3097<li><a href="../../configuration/hardening/">Hardening your instance</a></li>
3098<li><a href="../../configuration/howto_mediaproxy/">How to activate mediaproxy</a></li>
3099</ul>
3100<h2 id="questions">Questions<a class="headerlink" href="#questions" title="Permanent link">&para;</a></h2>
3101<p>Questions about the installation or didn’t it work as it should be, ask in <a href="https://matrix.to/#/#pleroma:libera.chat">#pleroma:libera.chat</a> via Matrix or <strong>#pleroma</strong> on <strong>libera.chat</strong> via IRC, you can also <a href="https://git.pleroma.social/pleroma/pleroma-support/issues/new">file an issue on our Gitlab</a>.</p>
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114                
3115              </article>
3116            </div>
3117          
3118          
3119<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
3119
3120        </div>
3121        
3122      </main>
3123      
3124        <footer class="md-footer">
3125  
3126  <div class="md-footer-meta md-typeset">
3127    <div class="md-footer-meta__inner md-grid">
3128      <div class="md-copyright">
3129  
3130  
3131    Made with
3132    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
3133      Material for MkDocs
3134    </a>
3135  
3136</div>
3137      
3138    </div>
3139  </div>
3140</footer>
3141      
3142    </div>
3143    <div class="md-dialog" data-md-component="dialog">
3144      <div class="md-dialog__inner md-typeset"></div>
3145    </div>
3146    
3147    
3148    
3148<script id="__config" type="application/json">{"base": "../../..", "features": ["tabs"], "search": "../../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
3148
3149    
3150    
3151      
3151<script src="../../../assets/javascripts/bundle.c18c5fb9.min.js"></script>
3151
3152      
3153    
3154  </body>
3155</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.