[{"data":1,"prerenderedAt":557},["ShallowReactive",2],{"wiki-nav":3,"wiki-sidebar":238,"wiki-en-\u002Fwiki\u002Freference\u002Fself-hosting":304,"wiki-surround-en-\u002Fwiki\u002Freference\u002Fself-hosting":554},[4],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Wiki","i-lucide-book","\u002Fwiki","wiki",[10,13,40,84,88,110,114,155,159,197,212,234],{"title":11,"path":7,"stem":12},"Wiki home","wiki\u002Findex",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":39},"About","i-lucide-info","\u002Fwiki\u002Fabout","wiki\u002Fabout",[19,23,27,31,35],{"title":20,"path":21,"stem":22},"Credits","\u002Fwiki\u002Fabout\u002Fcredits","wiki\u002Fabout\u002Fcredits",{"title":24,"path":25,"stem":26},"External connections","\u002Fwiki\u002Fabout\u002Fexternal-connections","wiki\u002Fabout\u002Fexternal-connections",{"title":28,"path":29,"stem":30},"Locale and translations","\u002Fwiki\u002Fabout\u002Flocale","wiki\u002Fabout\u002Flocale",{"title":32,"path":33,"stem":34},"Placeholders","\u002Fwiki\u002Fabout\u002Fplaceholders","wiki\u002Fabout\u002Fplaceholders",{"title":36,"path":37,"stem":38},"Why LuckPerms?","\u002Fwiki\u002Fabout\u002Fwhy-luckperms","wiki\u002Fabout\u002Fwhy-luckperms",false,{"title":41,"icon":42,"path":43,"stem":44,"children":45},"Commands","i-lucide-terminal","\u002Fwiki\u002Fcommands","wiki\u002Fcommands\u002Findex",[46,48,52,56,60,64,68,72,76,80],{"title":47,"path":43,"stem":44},"Command usage",{"title":49,"path":50,"stem":51},"General commands","\u002Fwiki\u002Fcommands\u002Fgeneral","wiki\u002Fcommands\u002Fgeneral",{"title":53,"path":54,"stem":55},"Group commands","\u002Fwiki\u002Fcommands\u002Fgroup","wiki\u002Fcommands\u002Fgroup",{"title":57,"path":58,"stem":59},"Log commands","\u002Fwiki\u002Fcommands\u002Flog","wiki\u002Fcommands\u002Flog",{"title":61,"path":62,"stem":63},"Meta commands","\u002Fwiki\u002Fcommands\u002Fmeta","wiki\u002Fcommands\u002Fmeta",{"title":65,"path":66,"stem":67},"Parent commands","\u002Fwiki\u002Fcommands\u002Fparent","wiki\u002Fcommands\u002Fparent",{"title":69,"path":70,"stem":71},"Permission commands","\u002Fwiki\u002Fcommands\u002Fpermission","wiki\u002Fcommands\u002Fpermission",{"title":73,"path":74,"stem":75},"Permissions reference","\u002Fwiki\u002Fcommands\u002Fpermissions","wiki\u002Fcommands\u002Fpermissions",{"title":77,"path":78,"stem":79},"Track commands","\u002Fwiki\u002Fcommands\u002Ftrack","wiki\u002Fcommands\u002Ftrack",{"title":81,"path":82,"stem":83},"User commands","\u002Fwiki\u002Fcommands\u002Fuser","wiki\u002Fcommands\u002Fuser",{"title":85,"path":86,"stem":87},"Configuration","\u002Fwiki\u002Fconfiguration","wiki\u002Fconfiguration",{"title":89,"icon":90,"path":91,"stem":92,"children":93,"page":39},"Developers","i-lucide-code","\u002Fwiki\u002Fdevelopers","wiki\u002Fdevelopers",[94,98,102,106],{"title":95,"path":96,"stem":97},"Developer API","\u002Fwiki\u002Fdevelopers\u002Fapi","wiki\u002Fdevelopers\u002Fapi",{"title":99,"path":100,"stem":101},"API usage","\u002Fwiki\u002Fdevelopers\u002Fapi-usage","wiki\u002Fdevelopers\u002Fapi-usage",{"title":103,"path":104,"stem":105},"Contributing","\u002Fwiki\u002Fdevelopers\u002Fcontributing","wiki\u002Fdevelopers\u002Fcontributing",{"title":107,"path":108,"stem":109},"Standalone app and REST API","\u002Fwiki\u002Fdevelopers\u002Fstandalone-rest","wiki\u002Fdevelopers\u002Fstandalone-rest",{"title":111,"path":112,"stem":113},"FAQ","\u002Fwiki\u002Ffaq","wiki\u002Ffaq",{"title":115,"icon":116,"path":117,"stem":118,"children":119,"page":39},"Features","i-lucide-sparkles","\u002Fwiki\u002Ffeatures","wiki\u002Ffeatures",[120,124,128,132,136,140,151],{"title":121,"path":122,"stem":123},"Context","\u002Fwiki\u002Ffeatures\u002Fcontext","wiki\u002Ffeatures\u002Fcontext",{"title":125,"path":126,"stem":127},"Default groups","\u002Fwiki\u002Ffeatures\u002Fdefault-groups","wiki\u002Ffeatures\u002Fdefault-groups",{"title":129,"path":130,"stem":131},"Prefixes, suffixes and meta","\u002Fwiki\u002Ffeatures\u002Fprefixes-suffixes-meta","wiki\u002Ffeatures\u002Fprefixes-suffixes-meta",{"title":133,"path":134,"stem":135},"Tracks","\u002Fwiki\u002Ffeatures\u002Ftracks","wiki\u002Ffeatures\u002Ftracks",{"title":137,"path":138,"stem":139},"Verbose","\u002Fwiki\u002Ffeatures\u002Fverbose","wiki\u002Ffeatures\u002Fverbose",{"title":141,"path":142,"stem":143,"children":144},"Web Editor","\u002Fwiki\u002Ffeatures\u002Fweb-editor","wiki\u002Ffeatures\u002Fweb-editor\u002Findex",[145,147],{"title":146,"path":142,"stem":143},"Web editor",{"title":148,"path":149,"stem":150},"Web editor technical details","\u002Fwiki\u002Ffeatures\u002Fweb-editor\u002Ftechnical","wiki\u002Ffeatures\u002Fweb-editor\u002Ftechnical",{"title":152,"path":153,"stem":154},"Weight","\u002Fwiki\u002Ffeatures\u002Fweight","wiki\u002Ffeatures\u002Fweight",{"title":156,"path":157,"stem":158},"Getting started","\u002Fwiki\u002Fgetting-started","wiki\u002Fgetting-started",{"title":160,"icon":161,"path":162,"stem":163,"children":164,"page":39},"Guides","i-lucide-map","\u002Fwiki\u002Fguides","wiki\u002Fguides",[165,169,173,177,181,185,189,193],{"title":166,"path":167,"stem":168},"Argument-based command permissions","\u002Fwiki\u002Fguides\u002Fargument-permissions","wiki\u002Fguides\u002Fargument-permissions",{"title":170,"path":171,"stem":172},"Bulk editing","\u002Fwiki\u002Fguides\u002Fbulk-editing","wiki\u002Fguides\u002Fbulk-editing",{"title":174,"path":175,"stem":176},"Extensions","\u002Fwiki\u002Fguides\u002Fextensions","wiki\u002Fguides\u002Fextensions",{"title":178,"path":179,"stem":180},"Migration","\u002Fwiki\u002Fguides\u002Fmigration","wiki\u002Fguides\u002Fmigration",{"title":182,"path":183,"stem":184},"Prefix and suffix stacking","\u002Fwiki\u002Fguides\u002Fprefix-stacking","wiki\u002Fguides\u002Fprefix-stacking",{"title":186,"path":187,"stem":188},"Storage system errors","\u002Fwiki\u002Fguides\u002Fstorage-errors","wiki\u002Fguides\u002Fstorage-errors",{"title":190,"path":191,"stem":192},"Switching storage types","\u002Fwiki\u002Fguides\u002Fswitching-storage","wiki\u002Fguides\u002Fswitching-storage",{"title":194,"path":195,"stem":196},"Syncing data between servers","\u002Fwiki\u002Fguides\u002Fsyncing","wiki\u002Fguides\u002Fsyncing",{"title":198,"icon":199,"path":200,"stem":201,"children":202},"Installation","i-lucide-download","\u002Fwiki\u002Finstall","wiki\u002Finstall\u002Findex",[203,204,208],{"title":198,"path":200,"stem":201},{"title":205,"path":206,"stem":207},"Hytale","\u002Fwiki\u002Finstall\u002Fhytale","wiki\u002Finstall\u002Fhytale",{"title":209,"path":210,"stem":211},"Network installation","\u002Fwiki\u002Finstall\u002Fnetwork","wiki\u002Finstall\u002Fnetwork",{"title":213,"icon":214,"path":215,"stem":216,"children":217,"page":39},"Reference","i-lucide-library","\u002Fwiki\u002Freference","wiki\u002Freference",[218,222,226,230],{"title":219,"path":220,"stem":221},"Migrating from GroupManager or PermissionsEx","\u002Fwiki\u002Freference\u002Fmigrating-gm-pex","wiki\u002Freference\u002Fmigrating-gm-pex",{"title":223,"path":224,"stem":225},"How permission calculation works","\u002Fwiki\u002Freference\u002Fpermission-calculation","wiki\u002Freference\u002Fpermission-calculation",{"title":227,"path":228,"stem":229},"Self-hosting the web interfaces","\u002Fwiki\u002Freference\u002Fself-hosting","wiki\u002Freference\u002Fself-hosting",{"title":231,"path":232,"stem":233},"Upgrading from v4 to v5","\u002Fwiki\u002Freference\u002Fupgrade-v4-v5","wiki\u002Freference\u002Fupgrade-v4-v5",{"title":235,"path":236,"stem":237},"Storage types","\u002Fwiki\u002Fstorage","wiki\u002Fstorage",[239],{"title":5,"icon":6,"path":7,"stem":8,"children":240},[241,242,249,261,262,268,269,281,282,292,297,303],{"title":11,"path":7,"stem":12},{"title":14,"icon":15,"path":16,"stem":17,"children":243,"page":39},[244,245,246,247,248],{"title":20,"path":21,"stem":22},{"title":24,"path":25,"stem":26},{"title":28,"path":29,"stem":30},{"title":32,"path":33,"stem":34},{"title":36,"path":37,"stem":38},{"title":41,"icon":42,"path":43,"stem":44,"children":250},[251,252,253,254,255,256,257,258,259,260],{"title":47,"path":43,"stem":44},{"title":49,"path":50,"stem":51},{"title":53,"path":54,"stem":55},{"title":57,"path":58,"stem":59},{"title":61,"path":62,"stem":63},{"title":65,"path":66,"stem":67},{"title":69,"path":70,"stem":71},{"title":73,"path":74,"stem":75},{"title":77,"path":78,"stem":79},{"title":81,"path":82,"stem":83},{"title":85,"path":86,"stem":87},{"title":89,"icon":90,"path":91,"stem":92,"children":263,"page":39},[264,265,266,267],{"title":95,"path":96,"stem":97},{"title":99,"path":100,"stem":101},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"icon":116,"path":117,"stem":118,"children":270,"page":39},[271,272,273,274,275,276,280],{"title":121,"path":122,"stem":123},{"title":125,"path":126,"stem":127},{"title":129,"path":130,"stem":131},{"title":133,"path":134,"stem":135},{"title":137,"path":138,"stem":139},{"title":141,"path":142,"stem":143,"children":277},[278,279],{"title":146,"path":142,"stem":143},{"title":148,"path":149,"stem":150},{"title":152,"path":153,"stem":154},{"title":156,"path":157,"stem":158},{"title":160,"icon":161,"path":162,"stem":163,"children":283,"page":39},[284,285,286,287,288,289,290,291],{"title":166,"path":167,"stem":168},{"title":170,"path":171,"stem":172},{"title":174,"path":175,"stem":176},{"title":178,"path":179,"stem":180},{"title":182,"path":183,"stem":184},{"title":186,"path":187,"stem":188},{"title":190,"path":191,"stem":192},{"title":194,"path":195,"stem":196},{"title":198,"icon":199,"path":200,"stem":201,"children":293},[294,295,296],{"title":198,"path":200,"stem":201},{"title":205,"path":206,"stem":207},{"title":209,"path":210,"stem":211},{"title":213,"icon":214,"path":215,"stem":216,"children":298,"page":39},[299,300,301,302],{"title":219,"path":220,"stem":221},{"title":223,"path":224,"stem":225},{"title":227,"path":228,"stem":229},{"title":231,"path":232,"stem":233},{"title":235,"path":236,"stem":237},{"id":305,"title":227,"body":306,"contributors":534,"description":547,"editUrl":548,"extension":549,"meta":550,"navigation":491,"path":228,"seo":551,"stem":229,"updatedAt":552,"__hash__":553},"wiki_en\u002Fwiki\u002Freference\u002Fself-hosting.md",{"type":307,"value":308,"toc":530},"minimark",[309,313,337,345,348,362,365,368,373,376,427,434,441,445,452,458,526],[310,311,312],"p",{},"LuckPerms has a number of online editors \u002F viewers built into the plugin. The interfaces have been designed such that individual users\u002Fservers do not need to host their own instances, and public versions everyone can use are deployed in the following locations:",[314,315,316,325,331],"ul",{},[317,318,319],"li",{},[320,321,322],"a",{"href":322,"rel":323},"https:\u002F\u002Fluckperms.net\u002Feditor\u002F",[324],"nofollow",[317,326,327],{},[320,328,329],{"href":329,"rel":330},"https:\u002F\u002Fluckperms.net\u002Fverbose\u002F",[324],[317,332,333],{},[320,334,335],{"href":335,"rel":336},"https:\u002F\u002Fluckperms.net\u002Ftreeview\u002F",[324],[310,338,339,340,344],{},"There is occasionally some interest in self-hosting. In general, ",[341,342,343],"strong",{},"we do not recommend doing this",", but since the code is open-source, suitably experienced admins are welcome to have a go. The following notes serve as a starting point.",[310,346,347],{},"You will also need to sort out:",[314,349,350,353,356,359],{},[317,351,352],{},"a Linux server for hosting",[317,354,355],{},"a domain",[317,357,358],{},"setting up DNS records",[317,360,361],{},"TLS certificates",[310,363,364],{},"etc. and all of the fun things that go along with the above, like: patching, maintenance, security.",[366,367],"hr",{},[369,370,372],"h2",{"id":371},"deploy-luckpermsweb-stack-on-a-server","Deploy LuckPermsWeb stack on a server",[310,374,375],{},"On a server:",[377,378,383],"pre",{"className":379,"code":380,"language":381,"meta":382,"style":382},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone git@github.com:LuckPerms\u002FLuckPermsWeb.git\ncd LuckPermsWeb\ndocker compose up -d\n","bash","",[384,385,386,402,412],"code",{"__ignoreMap":382},[387,388,391,395,399],"span",{"class":389,"line":390},"line",1,[387,392,394],{"class":393},"sBMFI","git",[387,396,398],{"class":397},"sfazB"," clone",[387,400,401],{"class":397}," git@github.com:LuckPerms\u002FLuckPermsWeb.git\n",[387,403,405,409],{"class":389,"line":404},2,[387,406,408],{"class":407},"s2Zo4","cd",[387,410,411],{"class":397}," LuckPermsWeb\n",[387,413,415,418,421,424],{"class":389,"line":414},3,[387,416,417],{"class":393},"docker",[387,419,420],{"class":397}," compose",[387,422,423],{"class":397}," up",[387,425,426],{"class":397}," -d\n",[310,428,429,430,433],{},"will expose the interface on port ",[384,431,432],{},"8080",".",[310,435,436,437,440],{},"At this point, you should be able to access the UI at ",[384,438,439],{},"http:\u002F\u002F\u003Cyour server ip>:8080\u002F"," - but this isn't very secure, so the next step is probably to put this app behind a reverse proxy (e.g. NGINX), then configure a domain + DNS, then TLS certificates. All of this is beyond the scope of this guide.",[369,442,444],{"id":443},"configuring-the-plugin-to-use-your-custom-stack","Configuring the plugin to use your custom stack",[310,446,447,448,451],{},"Assuming, for example, your stack is hosted and available at ",[384,449,450],{},"https:\u002F\u002Fluckperms.yourdomain.com\u002F",":",[310,453,454,455,433],{},"Add the following to the end of the LuckPerms ",[384,456,457],{},"config.yml",[377,459,463],{"className":460,"code":461,"language":462,"meta":382,"style":382},"language-yml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","bytebin-url: https:\u002F\u002Fluckperms.yourdomain.com\u002Fdata\u002F\nbytesocks-url: https:\u002F\u002Fluckperms.yourdomain.com\u002Fws\u002F\n\nweb-editor-url: https:\u002F\u002Fluckperms.yourdomain.com\u002Feditor\u002F\nverbose-viewer-url: https:\u002F\u002Fluckperms.yourdomain.com\u002Fverbose\u002F\ntree-viewer-url: https:\u002F\u002Fluckperms.yourdomain.com\u002Ftreeview\u002F\n","yml",[384,464,465,477,487,493,504,515],{"__ignoreMap":382},[387,466,467,471,474],{"class":389,"line":390},[387,468,470],{"class":469},"swJcz","bytebin-url",[387,472,451],{"class":473},"sMK4o",[387,475,476],{"class":397}," https:\u002F\u002Fluckperms.yourdomain.com\u002Fdata\u002F\n",[387,478,479,482,484],{"class":389,"line":404},[387,480,481],{"class":469},"bytesocks-url",[387,483,451],{"class":473},[387,485,486],{"class":397}," https:\u002F\u002Fluckperms.yourdomain.com\u002Fws\u002F\n",[387,488,489],{"class":389,"line":414},[387,490,492],{"emptyLinePlaceholder":491},true,"\n",[387,494,496,499,501],{"class":389,"line":495},4,[387,497,498],{"class":469},"web-editor-url",[387,500,451],{"class":473},[387,502,503],{"class":397}," https:\u002F\u002Fluckperms.yourdomain.com\u002Feditor\u002F\n",[387,505,507,510,512],{"class":389,"line":506},5,[387,508,509],{"class":469},"verbose-viewer-url",[387,511,451],{"class":473},[387,513,514],{"class":397}," https:\u002F\u002Fluckperms.yourdomain.com\u002Fverbose\u002F\n",[387,516,518,521,523],{"class":389,"line":517},6,[387,519,520],{"class":469},"tree-viewer-url",[387,522,451],{"class":473},[387,524,525],{"class":397}," https:\u002F\u002Fluckperms.yourdomain.com\u002Ftreeview\u002F\n",[527,528,529],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":382,"searchDepth":414,"depth":414,"links":531},[532,533],{"id":371,"depth":404,"text":372},{"id":443,"depth":404,"text":444},[535,539,543],{"name":536,"username":537,"avatar":538},"Luck","lucko","https:\u002F\u002Fgithub.com\u002Flucko.png?size=80",{"name":540,"username":541,"avatar":542},"Sam Goodger","Turbotailz","https:\u002F\u002Fgithub.com\u002FTurbotailz.png?size=80",{"name":544,"username":545,"avatar":546},"powercas_gamer","powercasgamer","https:\u002F\u002Fgithub.com\u002Fpowercasgamer.png?size=80","Host the LuckPerms web editor and viewers yourself.","https:\u002F\u002Fgithub.com\u002FTurbotailz\u002Fwiki\u002Fedit\u002Fv3-structure\u002Fen\u002Freference\u002Fself-hosting.md","md",{},{"title":227,"description":547},"2026-09-11T10:20:37+10:00","MXZqPsFnAS0e4Psvyai4etOYZDcxoSBPZ0PI9KOmFLA",[555,556],{"title":223,"path":224,"stem":225,"children":-1},{"title":231,"path":232,"stem":233,"children":-1},1792996657206]