Page Not Found
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
From 0797824ea84759cbc8f3b2d37187d946d7cf05ad Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 1 Nov 2023 18:04:56 +0000 Subject: [PATCH] deploy: e631b2ab95c702991603dc99c1cd1b17c9b6c1bc --- 404.html | 19 +- assets/css/styles.307b5285.css | 3 - assets/css/styles.f7c26db7.css | 3 + ...09d1b.9a24e38b.js => 00309d1b.9df700f1.js} | 2 +- assets/js/01a85c17.7d963c01.js | 1 - assets/js/01a85c17.d4221160.js | 1 + ...9c679.33816ca2.js => 0359c679.3ca6e3fb.js} | 2 +- ...20919.ff3964a2.js => 07f20919.72a0ea98.js} | 2 +- ...d5264.a583e0ee.js => 08dd5264.7ebeebf6.js} | 2 +- ...ed6db.249775d4.js => 08ded6db.a1e0dc68.js} | 2 +- ...c38f0.e1a56ba9.js => 09ac38f0.0e47b6a8.js} | 2 +- assets/js/0dffb83e.6c9e5ec7.js | 1 - assets/js/0dffb83e.98f34a7e.js | 1 + ...1f268.80347ba6.js => 0ea1f268.b27098e9.js} | 2 +- ...dd4ac.fde097b1.js => 0fbdd4ac.514e2af7.js} | 2 +- assets/js/130.2448291a.js | 1 + assets/js/1366d7ae.4fb5075d.js | 1 + assets/js/1366d7ae.fe7fc0fe.js | 1 - ...86d62.279d55ed.js => 13986d62.c1425471.js} | 2 +- .../js/{1426.39540556.js => 1426.8a7f4119.js} | 2 +- ...de299.c3fedd0b.js => 143de299.d3a097ff.js} | 2 +- ...c226b.d148cb4c.js => 153c226b.722fc636.js} | 2 +- ...c1e74.42f49a8c.js => 155c1e74.c60231fe.js} | 2 +- ...b5465.2fd54cee.js => 166b5465.f98909ca.js} | 2 +- assets/js/1772.9796a666.js | 1 + assets/js/17896441.1c8df702.js | 1 - assets/js/17896441.dbf77ff9.js | 1 + ...183ba.be6e6772.js => 179183ba.6a924c3e.js} | 2 +- ...ee354.4835f795.js => 180ee354.b69fc369.js} | 2 +- ...c6361.b8c530ea.js => 187c6361.df90bd39.js} | 2 +- assets/js/19f79f7b.1ade0ebc.js | 1 + assets/js/19f79f7b.3e9395c7.js | 1 - assets/js/1a4e3797.3c1887b3.js.LICENSE.txt | 1 - ...e3797.3c1887b3.js => 1a4e3797.769d8c18.js} | 4 +- assets/js/1a4e3797.769d8c18.js.LICENSE.txt | 1 + assets/js/1be78505.60b95ee7.js | 1 - assets/js/1c14429f.2c119681.js | 1 + assets/js/1c14429f.6809339c.js | 1 - assets/js/1d8a5d15.2b13cbd9.js | 1 - assets/js/1d8a5d15.d895b1ed.js | 1 + ...2cabf.6cb7a47f.js => 21f2cabf.c9ad8d38.js} | 2 +- assets/js/26b85cb6.98313bc5.js | 1 + assets/js/26b85cb6.b913bd37.js | 1 - assets/js/2730e145.3bb3b825.js | 1 + assets/js/2730e145.70545291.js | 1 - ...28755.a604f963.js => 27528755.432f62b4.js} | 2 +- assets/js/29b62a39.6607397c.js | 1 + assets/js/29b62a39.d491548c.js | 1 - assets/js/29b83576.1c09dc14.js | 1 - assets/js/29b83576.d78afd48.js | 1 + ...b0b88.dfc48d4a.js => 2a6b0b88.01c63236.js} | 2 +- ...fdcac.a382b418.js => 2adfdcac.3c37a29a.js} | 2 +- ...a5a9a.4b0721ba.js => 2baa5a9a.f25a88f1.js} | 2 +- ...c9f52.80c52109.js => 2ddc9f52.1d8c6c02.js} | 2 +- ...a4d25.00fdda3c.js => 2e0a4d25.b54bdd52.js} | 2 +- assets/js/3290fbc2.83ee952a.js | 1 - assets/js/3290fbc2.dd92ec9c.js | 1 + assets/js/35230925.29f648b5.js | 1 - assets/js/35230925.dcdddd7b.js | 1 + ...7e2bf.e661e27e.js => 35a7e2bf.71209370.js} | 2 +- assets/js/3720c009.30b055b5.js | 1 + assets/js/3720c009.a4574b8c.js | 1 - ...74d2e.a089ce5c.js => 39574d2e.d1d6cecf.js} | 2 +- ...f21a8.90418f6a.js => 399f21a8.420d866d.js} | 2 +- ...94577.fb5615ec.js => 39e94577.85f019bf.js} | 2 +- ...297ac.b4ac4739.js => 3a6297ac.348b248b.js} | 2 +- ...68dbd.cd5b76ca.js => 3b168dbd.d8580674.js} | 2 +- ...cec70.f407843f.js => 3f0cec70.f7c10106.js} | 2 +- assets/js/3f90f51b.2d2941a9.js | 1 - assets/js/3f90f51b.c63e3c64.js | 1 + ...5650f.c73efbe4.js => 4035650f.9316e754.js} | 2 +- assets/js/40aeb86f.376587f0.js | 1 - assets/js/40aeb86f.bd8448f6.js | 1 + ...7aede.b2010ed6.js => 4247aede.df1864bc.js} | 2 +- ...ff3d6.d3c847c3.js => 433ff3d6.093c7d9e.js} | 2 +- ...e1886.331e3119.js => 43ee1886.d81e37f7.js} | 2 +- assets/js/445e9e2a.9a475749.js | 1 + assets/js/445e9e2a.e889d98e.js | 1 - assets/js/44969bae.7e6abc6e.js | 1 - assets/js/44969bae.ff574e4c.js | 1 + ...c3af8.59f3bef9.js => 45ac3af8.cf7a9fd9.js} | 2 +- ...86e35.7db05553.js => 45c86e35.17e3d245.js} | 2 +- ...1a117.149c1b9d.js => 45e1a117.340acc3e.js} | 2 +- ...c924f.1b5727ea.js => 469c924f.9a76c610.js} | 2 +- ...57ff6.d7494b7e.js => 48857ff6.ba1d9243.js} | 2 +- ...81e49.381d2121.js => 48e81e49.5ac56e34.js} | 2 +- assets/js/4972.0a28dda3.js | 1 - ...5e83d.31ceddd4.js => 49b5e83d.bb00ad8f.js} | 2 +- ...21728.447bd46f.js => 4a821728.3a30c2cd.js} | 2 +- ...aa780.28992a2f.js => 4beaa780.9c9386ab.js} | 2 +- ...27320.0ae961df.js => 4c027320.9f0993f7.js} | 2 +- assets/js/4c9535f7.6cbde464.js | 1 + assets/js/4c9535f7.9ccfa098.js | 1 - assets/js/4d7007b2.4b984760.js | 1 + assets/js/4d7007b2.73a373f9.js | 1 - ...02954.171a32d5.js => 50f02954.c6206aff.js} | 2 +- assets/js/514cab6e.8af2ed2b.js | 1 + assets/js/514cab6e.e8c2eaad.js | 1 - assets/js/51d5b592.a4e0e2e7.js | 1 - assets/js/51d5b592.eb15ccfd.js | 1 + ...2bfad.77ca8786.js => 51f2bfad.03938b9f.js} | 2 +- ...a291c.82f62613.js => 53ca291c.7e6b99d7.js} | 2 +- assets/js/5437f376.a307a139.js | 1 + assets/js/5437f376.dd2a93da.js | 1 - ...36d06.aef64e50.js => 54436d06.4d56aa06.js} | 2 +- ...9e604.2c5aa46d.js => 5559e604.11d96201.js} | 2 +- ...044f9.91e85ef3.js => 564044f9.b5bab01d.js} | 2 +- assets/js/581d5240.4f96a3e4.js | 1 + assets/js/581d5240.87a21bde.js | 1 - ...491fe.195d2f1b.js => 5a9491fe.79d386e5.js} | 2 +- assets/js/5b6134d1.4caed6d0.js | 1 + assets/js/5b6134d1.a464da92.js | 1 - assets/js/5bc389a1.9f343a0c.js | 1 - assets/js/5bc389a1.a5e2deb7.js | 1 + ...8f08d.ecec00ba.js => 5d08f08d.5c7abe18.js} | 2 +- ...8c936.8764d96d.js => 5d38c936.01ab4afd.js} | 2 +- assets/js/5e95c892.3e88c822.js | 1 + ...90731.f6a49b70.js => 5ec90731.4eab081d.js} | 2 +- ...0bdde.fbb18141.js => 5ef0bdde.da8175a7.js} | 2 +- assets/js/6048.a0d2f860.js | 1 - ...ee580.e30472b0.js => 616ee580.6ddee81a.js} | 2 +- ...037e5.85b42d25.js => 631037e5.adb20c2c.js} | 2 +- ...03520.0c257146.js => 64d03520.6f24231a.js} | 2 +- assets/js/665f164c.493e219b.js | 1 + assets/js/665f164c.eb74b7a6.js | 1 - assets/js/6875c492.463ee9a3.js | 1 + assets/js/6875c492.bfbc1fdc.js | 1 - ...99ecd.3b517092.js => 68b99ecd.9b719a2d.js} | 2 +- assets/js/6be32138.8a943ec7.js | 1 + assets/js/6be32138.e604e6f4.js | 1 - ...b158e.71a0d814.js => 6ccb158e.5162cfe7.js} | 2 +- ...65365.0fc782cb.js => 6e965365.33a8784c.js} | 2 +- ...964f3.0f47a8ee.js => 6f8964f3.a1c6e6fd.js} | 2 +- ...c0fd7.9b552829.js => 719c0fd7.6c3d8003.js} | 2 +- ...619b5.778e9505.js => 749619b5.eabd0923.js} | 2 +- ...c46b4.45c490ed.js => 74ec46b4.5a8f5ef0.js} | 2 +- ...8af72.de071f8d.js => 75d8af72.0db0b71a.js} | 2 +- ...344b9.ca82c87e.js => 763344b9.3fc871db.js} | 2 +- ...cc1e8.bbdd63a1.js => 779cc1e8.b5e33d5d.js} | 2 +- assets/js/7874.f6f729a5.js | 1 + ...55aff.6c794010.js => 79055aff.33b2b3c8.js} | 2 +- ...a1839.091e2e6b.js => 7aba1839.8f38c854.js} | 2 +- assets/js/7aefc753.cdd60b24.js | 1 + assets/js/7aefc753.f5cd3448.js | 1 - ...67a7f.ae55a2ab.js => 7b667a7f.8a480976.js} | 2 +- ...88087.328863f6.js => 7b788087.8948d3eb.js} | 2 +- ...de75f.0ebd6f32.js => 7b9de75f.61af48f1.js} | 2 +- assets/js/7ceaa645.42ff94cb.js | 1 + assets/js/7ceaa645.ac1d6308.js | 1 - assets/js/8105.7cae6d1f.js | 1 - ...f3328.d24f5f57.js => 814f3328.01f98a18.js} | 2 +- ...93666.f3b79821.js => 82893666.1b7a455f.js} | 2 +- assets/js/8428fe34.0509f320.js | 1 - assets/js/8428fe34.9593ce54.js | 1 + ...08f43.e19511bc.js => 84e08f43.fd8204f1.js} | 2 +- assets/js/866d553a.15ab360d.js | 1 + assets/js/866d553a.cbd99266.js | 1 - ...3bd1d.e7c31aca.js => 86c3bd1d.9115d118.js} | 2 +- assets/js/8a92e787.4f946d9f.js | 1 + assets/js/8a92e787.a068730e.js | 1 - ...21e85.eb0c3500.js => 8cf21e85.f316391c.js} | 2 +- assets/js/8def2dd5.46757c8d.js | 1 - assets/js/8def2dd5.8faef833.js | 1 + ...ecb6d.9b736857.js => 90decb6d.17716680.js} | 2 +- ...a69d3.580d79a0.js => 933a69d3.ba52a263.js} | 2 +- assets/js/935f2afb.3edf634b.js | 1 + assets/js/935f2afb.73c88fc7.js | 1 - assets/js/93df2695.12f4ff8d.js | 1 - assets/js/93df2695.300a96e1.js | 1 + assets/js/95f4d37c.0a40e7b8.js | 1 + assets/js/95f4d37c.7715ba3a.js | 1 - ...d240c.50abd3fb.js => 965d240c.50a7d323.js} | 2 +- assets/js/9722e053.24ccaeca.js | 1 - assets/js/9722e053.7ad17092.js | 1 + assets/js/98f9308d.a01bf3c4.js | 1 + assets/js/98f9308d.be94bcbf.js | 1 - ...a08cf.cbc2db42.js => 9bca08cf.cd5bdade.js} | 2 +- ...69ffc.df99b872.js => 9bd69ffc.96d0dc87.js} | 2 +- ...140f3.46c0f2b1.js => 9cc140f3.d46c2c0c.js} | 2 +- assets/js/9e4087bc.7fa7842e.js | 1 + assets/js/9e4087bc.a9c67174.js | 1 - assets/js/9f1c3232.1cf2e42e.js | 1 - assets/js/9f1c3232.754ab62e.js | 1 + assets/js/9f7d0305.7388f64a.js | 1 - assets/js/9f7d0305.ff0deaac.js | 1 + ...e0645.b94fc59c.js => a13e0645.94a2c40f.js} | 2 +- ...e2e4f.1318cb1d.js => a50e2e4f.08511bd9.js} | 2 +- ...6c4f3.9fea3752.js => a626c4f3.dee5a042.js} | 2 +- assets/js/a6aa9e1f.28469447.js | 1 - assets/js/a6aa9e1f.e40508bd.js | 1 + ...1de40.71ea664a.js => a771de40.cd72cf12.js} | 2 +- assets/js/a7bd4aaa.928fb9e5.js | 1 + assets/js/a94703ab.1851859d.js | 1 + ...76bf7.5c10b5a8.js => a9a76bf7.6ebee837.js} | 2 +- ...1941d.9d9f9412.js => aa81941d.a884d55b.js} | 2 +- ...4e600.4cda4442.js => ad04e600.80dbb210.js} | 2 +- ...13ba6.4cc80cf7.js => ae013ba6.851e7143.js} | 2 +- ...0e824.246e99e9.js => ae70e824.0e6f6d61.js} | 2 +- ...a11bf.4290cebc.js => af6a11bf.050de1e1.js} | 2 +- ...525a9.456b9285.js => b02525a9.4e924af7.js} | 2 +- ...a0ac1.7c16d2b5.js => b03a0ac1.5e843cb3.js} | 2 +- assets/js/b249ed45.77028740.js | 1 - assets/js/b249ed45.790c0dff.js | 1 + assets/js/b2f554cd.1ddf11f7.js | 1 + assets/js/b2f554cd.295697e8.js | 1 - assets/js/b35f1b7f.e3527fb9.js | 1 + assets/js/b35f1b7f.eab94299.js | 1 - assets/js/b40daf0f.2f5ab135.js | 1 + assets/js/b40daf0f.f8f42c37.js | 1 - assets/js/b5954e33.0de601d3.js | 1 - assets/js/b5954e33.3422a378.js | 1 + ...6d13b.1c632dae.js => b696d13b.67d6433c.js} | 2 +- ...66c91.eed55eb6.js => b8466c91.bdc01329.js} | 2 +- ...37621.03680a1b.js => b8c37621.3fb7580a.js} | 2 +- ...7817e.d1ea4071.js => b9b7817e.8ebc058f.js} | 2 +- ...9af11.470c9730.js => bd59af11.82aec483.js} | 2 +- ...6e15b.5e98adf3.js => bea6e15b.422e763d.js} | 2 +- assets/js/c222de09.301bcc1f.js | 1 + assets/js/c222de09.ec3d20c2.js | 1 - assets/js/c377a04b.a63d0c15.js | 1 - assets/js/c377a04b.b8a439ee.js | 1 + ...5dd14.c34d5bde.js => c3f5dd14.74ce3614.js} | 2 +- ...edc90.7e4aa2bd.js => caaedc90.0c254351.js} | 2 +- ...e0b88.61c83c7a.js => cc8e0b88.32340495.js} | 2 +- assets/js/ccc49370.084c8d77.js | 1 - assets/js/ccc49370.152e84b2.js | 1 + ...21ae3.bd881c9e.js => ce321ae3.8a69b8f3.js} | 2 +- ...635d7.d356d916.js => ce4635d7.2f6e9cd8.js} | 2 +- ...bd901.affbfa3f.js => ceabd901.23077e58.js} | 2 +- ...f6fc6.a492f280.js => d16f6fc6.dcce69ae.js} | 2 +- assets/js/d1b78a4d.8e6e2837.js | 1 - assets/js/d1b78a4d.c349bda3.js | 1 + ...29319.ebda8846.js => d1d29319.bcaebf14.js} | 2 +- assets/js/d23df0ea.1d84ae69.js | 1 + assets/js/d23df0ea.892d5604.js | 1 - ...4210a.31238def.js => d464210a.3e507ebe.js} | 2 +- assets/js/d7d81bf6.be572449.js | 1 - assets/js/d7d81bf6.dfef0ceb.js | 1 + assets/js/d8be0e5a.ea934156.js | 1 + assets/js/d8be0e5a.f9e6cd73.js | 1 - ...02ab0.79cb2336.js => da002ab0.4e4f882b.js} | 2 +- assets/js/dc2776f2.224fc2b8.js | 1 - assets/js/dc2776f2.a0c19ad7.js | 1 + assets/js/dd97a9bc.316666d0.js | 1 - assets/js/dd97a9bc.8892f4a2.js | 1 + ...25737.ae0ddde1.js => de225737.a2e520ac.js} | 2 +- assets/js/df203c0f.7f1db2f5.js | 1 + assets/js/df203c0f.8ad14275.js | 1 - ...1fbd7.8617ba2c.js => e331fbd7.29ba16bf.js} | 2 +- ...08407.1751bc14.js => e6a08407.9629e8eb.js} | 2 +- ...f52c1.e63d5f81.js => e91f52c1.d3ff2d82.js} | 2 +- ...8ad91.08a89d13.js => ec98ad91.f6dcd324.js} | 2 +- assets/js/ecfddbd4.21bb1ad5.js | 1 + assets/js/ecfddbd4.f15998ec.js | 1 - ...c0d6e.a8b752d8.js => f02c0d6e.a68a515b.js} | 2 +- assets/js/f3d7f34e.36b0c123.js | 1 + assets/js/f3d7f34e.da24e3c4.js | 1 - assets/js/f3f8ecb0.4317feec.js | 1 + assets/js/f3f8ecb0.c4976496.js | 1 - ...bce02.82543bf2.js => f41bce02.7f0e4028.js} | 2 +- ...d4511.1869451f.js => f4fd4511.35512f65.js} | 2 +- assets/js/f50a4147.0bd0271c.js | 1 + assets/js/f50a4147.103a0c55.js | 1 - ...07fb4.5389a650.js => f6807fb4.4f260ebf.js} | 2 +- ...3ec16.dafed2ec.js => f893ec16.d295f0cb.js} | 2 +- assets/js/fa69a7f4.48858406.js | 1 + assets/js/fa69a7f4.90bbc604.js | 1 - ...546af.b7f84265.js => fa7546af.7af1c866.js} | 2 +- ...63351.75cdda8a.js => fcc63351.947aff8c.js} | 2 +- assets/js/fd2b74dc.6aac091f.js | 1 - assets/js/fd2b74dc.7c595cf3.js | 1 + ...337e7.dce1780a.js => ffc337e7.5f4be381.js} | 2 +- assets/js/ffcb1b32.d590406b.js | 1 + assets/js/ffcb1b32.d819dc1a.js | 1 - assets/js/main.63e95a14.js | 2 + ...CENSE.txt => main.63e95a14.js.LICENSE.txt} | 47 +-- assets/js/main.f9c5ede1.js | 2 - assets/js/runtime~main.3cbddc6e.js | 1 + assets/js/runtime~main.85c93256.js | 1 - blog/archive/index.html | 19 +- blog/atom.xml | 134 +++++++-- .../index.html | 147 +++++++-- blog/feed.json | 4 +- blog/index.html | 19 +- blog/rss.xml | 134 +++++++-- blog/tags/blog/index.html | 19 +- blog/tags/content-routing/index.html | 19 +- blog/tags/engineering/index.html | 19 +- blog/tags/fleek-network/index.html | 19 +- blog/tags/index.html | 19 +- docs/Open-source/code-of-conduct/index.html | 74 +++-- docs/Open-source/contributing/index.html | 100 ++++++- docs/Open-source/index.html | 26 +- docs/Open-source/repositories/index.html | 22 +- docs/develop/client/index.html | 19 +- docs/develop/json-rpc/index.html | 19 +- docs/develop/overview/index.html | 19 +- docs/develop/service-development/index.html | 19 +- docs/index.html | 30 +- .../delivery-acknowledgements/index.html | 48 ++- docs/learn/developers/index.html | 30 +- docs/learn/introduction/index.html | 36 ++- docs/learn/services/index.html | 76 ++++- docs/learn/the-network/index.html | 281 +++++++++++++++++- docs/learn/token-and-economics/index.html | 101 ++++++- docs/node/analyzing-logs/index.html | 35 ++- docs/node/configuration/index.html | 19 +- docs/node/diagnostics/index.html | 19 +- docs/node/health-check/index.html | 38 ++- docs/node/install/index.html | 253 +++++++++++++++- docs/node/lightning-cli/index.html | 27 +- docs/node/overview/index.html | 39 ++- docs/node/requirements/index.html | 83 +++++- docs/node/systemd-service/index.html | 51 +++- docs/node/testnet-onboarding/index.html | 91 +++++- docs/roadmap/index.html | 67 ++++- docs/tags/about/index.html | 19 +- docs/tags/algorithms/index.html | 19 +- docs/tags/architecture/index.html | 19 +- docs/tags/awards/index.html | 19 +- docs/tags/build/index.html | 19 +- docs/tags/cdn/index.html | 19 +- docs/tags/cli/index.html | 19 +- docs/tags/client/index.html | 19 +- docs/tags/code-of-conduct/index.html | 19 +- docs/tags/codebase/index.html | 19 +- docs/tags/command-line-interface/index.html | 19 +- docs/tags/compile/index.html | 19 +- docs/tags/configuration/index.html | 19 +- docs/tags/consensus/index.html | 19 +- docs/tags/contribute/index.html | 19 +- docs/tags/control/index.html | 19 +- docs/tags/decentralization/index.html | 19 +- docs/tags/develop/index.html | 19 +- docs/tags/diagnostic/index.html | 19 +- docs/tags/diagnostics/index.html | 19 +- docs/tags/economics/index.html | 19 +- docs/tags/edge-network/index.html | 19 +- docs/tags/edge-platform/index.html | 19 +- docs/tags/fleek-network/index.html | 19 +- docs/tags/getting-started/index.html | 19 +- docs/tags/git/index.html | 19 +- docs/tags/guide/index.html | 19 +- docs/tags/healthcheck/index.html | 19 +- docs/tags/incentives/index.html | 19 +- docs/tags/index.html | 19 +- docs/tags/learn/index.html | 19 +- docs/tags/lgtn/index.html | 19 +- docs/tags/lightning/index.html | 19 +- docs/tags/logs/index.html | 19 +- docs/tags/manage/index.html | 19 +- docs/tags/manual/index.html | 19 +- docs/tags/node-status/index.html | 19 +- docs/tags/onboarding/index.html | 19 +- docs/tags/open-source/index.html | 19 +- docs/tags/permissionless/index.html | 19 +- docs/tags/phases/index.html | 19 +- docs/tags/pledge/index.html | 19 +- docs/tags/ports/index.html | 19 +- docs/tags/protocol/index.html | 19 +- docs/tags/repository/index.html | 19 +- docs/tags/reputation/index.html | 19 +- docs/tags/requirements/index.html | 19 +- docs/tags/rewards/index.html | 19 +- docs/tags/roadmap/index.html | 19 +- docs/tags/rpc/index.html | 19 +- docs/tags/rust-dependencies/index.html | 19 +- docs/tags/sdk/index.html | 19 +- docs/tags/server/index.html | 19 +- docs/tags/services/index.html | 19 +- docs/tags/snarks/index.html | 19 +- docs/tags/standards/index.html | 19 +- docs/tags/systemctl/index.html | 19 +- docs/tags/systemd/index.html | 19 +- docs/tags/testnet/index.html | 19 +- docs/tags/token/index.html | 19 +- docs/tags/tokenomics/index.html | 19 +- docs/tags/toolkit/index.html | 19 +- docs/tags/verification/index.html | 19 +- docs/tags/whitepaper/index.html | 19 +- docs/tags/wizard/index.html | 19 +- docs/whitepaper/index.html | 25 +- .../Node Operators/getting-started/index.html | 113 ++++++- .../how-to-manage-log-files/index.html | 126 +++++++- .../managing-the-keystore/index.html | 178 ++++++++++- .../running-a-node-in-docker/index.html | 160 +++++++++- .../transfering-setup-ownership/index.html | 149 +++++++++- .../updating-lightning/index.html | 124 +++++++- guides/index.html | 22 +- guides/tags/configuration/index.html | 19 +- guides/tags/container/index.html | 19 +- guides/tags/docker/index.html | 19 +- guides/tags/edge-computing/index.html | 19 +- guides/tags/fleek-network/index.html | 19 +- guides/tags/getting-started/index.html | 19 +- guides/tags/guide/index.html | 19 +- guides/tags/guides/index.html | 19 +- guides/tags/help/index.html | 19 +- guides/tags/index.html | 19 +- guides/tags/keys/index.html | 19 +- guides/tags/keystore/index.html | 19 +- guides/tags/logs/index.html | 19 +- guides/tags/ownership/index.html | 19 +- guides/tags/private-keys/index.html | 19 +- guides/tags/public-keys/index.html | 19 +- guides/tags/rebuild/index.html | 19 +- guides/tags/setup/index.html | 19 +- guides/tags/transfer/index.html | 19 +- guides/tags/update/index.html | 19 +- index.html | 19 +- .../Docker/build-and-run-in-docker/index.html | 67 ++++- .../index.html | 70 ++++- .../Docker/uninstall-docker-setup/index.html | 65 +++- .../backing-up-the-keystore/index.html | 56 +++- .../error-building-on-arm64/index.html | 36 ++- .../index.html | 34 ++- .../file-permissions-and-ownership/index.html | 86 +++++- .../index.html | 53 +++- .../Lightning CLI/keys-not-found/index.html | 24 +- .../node-secret-key-does-not-exist/index.html | 25 +- .../permission-denied-os-error-13/index.html | 40 ++- .../restore-the-keystore/index.html | 71 ++++- .../uninstall-lightning-node/index.html | 50 +++- .../update-cli-from-source-code/index.html | 107 ++++++- .../index.html | 30 +- .../shutting-down-persistance/index.html | 40 ++- references/Systemd/user-service/index.html | 63 +++- references/index.html | 22 +- references/tags/backup/index.html | 19 +- references/tags/build/index.html | 19 +- references/tags/clean/index.html | 19 +- references/tags/clear/index.html | 19 +- references/tags/cli/index.html | 19 +- references/tags/commands/index.html | 19 +- references/tags/container/index.html | 19 +- references/tags/delete/index.html | 19 +- references/tags/docker/index.html | 19 +- references/tags/file-permissions/index.html | 19 +- references/tags/fix/index.html | 19 +- references/tags/frozen/index.html | 19 +- references/tags/help/index.html | 19 +- references/tags/idle/index.html | 19 +- references/tags/image/index.html | 19 +- references/tags/index.html | 19 +- references/tags/keystore/index.html | 19 +- references/tags/lightning/index.html | 19 +- references/tags/lost-keys/index.html | 19 +- references/tags/ownership/index.html | 19 +- references/tags/permissions/index.html | 19 +- references/tags/pkill/index.html | 19 +- references/tags/process/index.html | 19 +- references/tags/reference/index.html | 19 +- references/tags/references/index.html | 19 +- references/tags/remove/index.html | 19 +- references/tags/restore/index.html | 19 +- references/tags/root/index.html | 19 +- references/tags/service-error/index.html | 19 +- references/tags/shutdown/index.html | 19 +- references/tags/sudoer/index.html | 19 +- references/tags/systemctl/index.html | 19 +- references/tags/systemd/index.html | 19 +- references/tags/uninstall/index.html | 19 +- references/tags/unit/index.html | 19 +- references/tags/update/index.html | 19 +- references/tags/upgrade/index.html | 19 +- references/tags/user-service/index.html | 19 +- search/index.html | 19 +- sitemap.xml | 2 +- 468 files changed, 4497 insertions(+), 2368 deletions(-) delete mode 100644 assets/css/styles.307b5285.css create mode 100644 assets/css/styles.f7c26db7.css rename assets/js/{00309d1b.9a24e38b.js => 00309d1b.9df700f1.js} (97%) delete mode 100644 assets/js/01a85c17.7d963c01.js create mode 100644 assets/js/01a85c17.d4221160.js rename assets/js/{0359c679.33816ca2.js => 0359c679.3ca6e3fb.js} (88%) rename assets/js/{07f20919.ff3964a2.js => 07f20919.72a0ea98.js} (89%) rename assets/js/{08dd5264.a583e0ee.js => 08dd5264.7ebeebf6.js} (95%) rename assets/js/{08ded6db.249775d4.js => 08ded6db.a1e0dc68.js} (94%) rename assets/js/{09ac38f0.e1a56ba9.js => 09ac38f0.0e47b6a8.js} (90%) delete mode 100644 assets/js/0dffb83e.6c9e5ec7.js create mode 100644 assets/js/0dffb83e.98f34a7e.js rename assets/js/{0ea1f268.80347ba6.js => 0ea1f268.b27098e9.js} (96%) rename assets/js/{0fbdd4ac.fde097b1.js => 0fbdd4ac.514e2af7.js} (87%) create mode 100644 assets/js/130.2448291a.js create mode 100644 assets/js/1366d7ae.4fb5075d.js delete mode 100644 assets/js/1366d7ae.fe7fc0fe.js rename assets/js/{13986d62.279d55ed.js => 13986d62.c1425471.js} (96%) rename assets/js/{1426.39540556.js => 1426.8a7f4119.js} (99%) rename assets/js/{143de299.c3fedd0b.js => 143de299.d3a097ff.js} (82%) rename assets/js/{153c226b.d148cb4c.js => 153c226b.722fc636.js} (84%) rename assets/js/{155c1e74.42f49a8c.js => 155c1e74.c60231fe.js} (89%) rename assets/js/{166b5465.2fd54cee.js => 166b5465.f98909ca.js} (86%) create mode 100644 assets/js/1772.9796a666.js delete mode 100644 assets/js/17896441.1c8df702.js create mode 100644 assets/js/17896441.dbf77ff9.js rename assets/js/{179183ba.be6e6772.js => 179183ba.6a924c3e.js} (83%) rename assets/js/{180ee354.4835f795.js => 180ee354.b69fc369.js} (88%) rename assets/js/{187c6361.b8c530ea.js => 187c6361.df90bd39.js} (88%) create mode 100644 assets/js/19f79f7b.1ade0ebc.js delete mode 100644 assets/js/19f79f7b.3e9395c7.js delete mode 100644 assets/js/1a4e3797.3c1887b3.js.LICENSE.txt rename assets/js/{1a4e3797.3c1887b3.js => 1a4e3797.769d8c18.js} (61%) create mode 100644 assets/js/1a4e3797.769d8c18.js.LICENSE.txt delete mode 100644 assets/js/1be78505.60b95ee7.js create mode 100644 assets/js/1c14429f.2c119681.js delete mode 100644 assets/js/1c14429f.6809339c.js delete mode 100644 assets/js/1d8a5d15.2b13cbd9.js create mode 100644 assets/js/1d8a5d15.d895b1ed.js rename assets/js/{21f2cabf.6cb7a47f.js => 21f2cabf.c9ad8d38.js} (96%) create mode 100644 assets/js/26b85cb6.98313bc5.js delete mode 100644 assets/js/26b85cb6.b913bd37.js create mode 100644 assets/js/2730e145.3bb3b825.js delete mode 100644 assets/js/2730e145.70545291.js rename assets/js/{27528755.a604f963.js => 27528755.432f62b4.js} (89%) create mode 100644 assets/js/29b62a39.6607397c.js delete mode 100644 assets/js/29b62a39.d491548c.js delete mode 100644 assets/js/29b83576.1c09dc14.js create mode 100644 assets/js/29b83576.d78afd48.js rename assets/js/{2a6b0b88.dfc48d4a.js => 2a6b0b88.01c63236.js} (94%) rename assets/js/{2adfdcac.a382b418.js => 2adfdcac.3c37a29a.js} (91%) rename assets/js/{2baa5a9a.4b0721ba.js => 2baa5a9a.f25a88f1.js} (94%) rename assets/js/{2ddc9f52.80c52109.js => 2ddc9f52.1d8c6c02.js} (91%) rename assets/js/{2e0a4d25.00fdda3c.js => 2e0a4d25.b54bdd52.js} (95%) delete mode 100644 assets/js/3290fbc2.83ee952a.js create mode 100644 assets/js/3290fbc2.dd92ec9c.js delete mode 100644 assets/js/35230925.29f648b5.js create mode 100644 assets/js/35230925.dcdddd7b.js rename assets/js/{35a7e2bf.e661e27e.js => 35a7e2bf.71209370.js} (71%) create mode 100644 assets/js/3720c009.30b055b5.js delete mode 100644 assets/js/3720c009.a4574b8c.js rename assets/js/{39574d2e.a089ce5c.js => 39574d2e.d1d6cecf.js} (94%) rename assets/js/{399f21a8.90418f6a.js => 399f21a8.420d866d.js} (85%) rename assets/js/{39e94577.fb5615ec.js => 39e94577.85f019bf.js} (85%) rename assets/js/{3a6297ac.b4ac4739.js => 3a6297ac.348b248b.js} (87%) rename assets/js/{3b168dbd.cd5b76ca.js => 3b168dbd.d8580674.js} (83%) rename assets/js/{3f0cec70.f407843f.js => 3f0cec70.f7c10106.js} (83%) delete mode 100644 assets/js/3f90f51b.2d2941a9.js create mode 100644 assets/js/3f90f51b.c63e3c64.js rename assets/js/{4035650f.c73efbe4.js => 4035650f.9316e754.js} (83%) delete mode 100644 assets/js/40aeb86f.376587f0.js create mode 100644 assets/js/40aeb86f.bd8448f6.js rename assets/js/{4247aede.b2010ed6.js => 4247aede.df1864bc.js} (83%) rename assets/js/{433ff3d6.d3c847c3.js => 433ff3d6.093c7d9e.js} (90%) rename assets/js/{43ee1886.331e3119.js => 43ee1886.d81e37f7.js} (89%) create mode 100644 assets/js/445e9e2a.9a475749.js delete mode 100644 assets/js/445e9e2a.e889d98e.js delete mode 100644 assets/js/44969bae.7e6abc6e.js create mode 100644 assets/js/44969bae.ff574e4c.js rename assets/js/{45ac3af8.59f3bef9.js => 45ac3af8.cf7a9fd9.js} (87%) rename assets/js/{45c86e35.7db05553.js => 45c86e35.17e3d245.js} (93%) rename assets/js/{45e1a117.149c1b9d.js => 45e1a117.340acc3e.js} (88%) rename assets/js/{469c924f.1b5727ea.js => 469c924f.9a76c610.js} (82%) rename assets/js/{48857ff6.d7494b7e.js => 48857ff6.ba1d9243.js} (91%) rename assets/js/{48e81e49.381d2121.js => 48e81e49.5ac56e34.js} (89%) delete mode 100644 assets/js/4972.0a28dda3.js rename assets/js/{49b5e83d.31ceddd4.js => 49b5e83d.bb00ad8f.js} (85%) rename assets/js/{4a821728.447bd46f.js => 4a821728.3a30c2cd.js} (93%) rename assets/js/{4beaa780.28992a2f.js => 4beaa780.9c9386ab.js} (82%) rename assets/js/{4c027320.0ae961df.js => 4c027320.9f0993f7.js} (95%) create mode 100644 assets/js/4c9535f7.6cbde464.js delete mode 100644 assets/js/4c9535f7.9ccfa098.js create mode 100644 assets/js/4d7007b2.4b984760.js delete mode 100644 assets/js/4d7007b2.73a373f9.js rename assets/js/{50f02954.171a32d5.js => 50f02954.c6206aff.js} (96%) create mode 100644 assets/js/514cab6e.8af2ed2b.js delete mode 100644 assets/js/514cab6e.e8c2eaad.js delete mode 100644 assets/js/51d5b592.a4e0e2e7.js create mode 100644 assets/js/51d5b592.eb15ccfd.js rename assets/js/{51f2bfad.77ca8786.js => 51f2bfad.03938b9f.js} (87%) rename assets/js/{53ca291c.82f62613.js => 53ca291c.7e6b99d7.js} (89%) create mode 100644 assets/js/5437f376.a307a139.js delete mode 100644 assets/js/5437f376.dd2a93da.js rename assets/js/{54436d06.aef64e50.js => 54436d06.4d56aa06.js} (95%) rename assets/js/{5559e604.2c5aa46d.js => 5559e604.11d96201.js} (88%) rename assets/js/{564044f9.91e85ef3.js => 564044f9.b5bab01d.js} (92%) create mode 100644 assets/js/581d5240.4f96a3e4.js delete mode 100644 assets/js/581d5240.87a21bde.js rename assets/js/{5a9491fe.195d2f1b.js => 5a9491fe.79d386e5.js} (93%) create mode 100644 assets/js/5b6134d1.4caed6d0.js delete mode 100644 assets/js/5b6134d1.a464da92.js delete mode 100644 assets/js/5bc389a1.9f343a0c.js create mode 100644 assets/js/5bc389a1.a5e2deb7.js rename assets/js/{5d08f08d.ecec00ba.js => 5d08f08d.5c7abe18.js} (98%) rename assets/js/{5d38c936.8764d96d.js => 5d38c936.01ab4afd.js} (80%) create mode 100644 assets/js/5e95c892.3e88c822.js rename assets/js/{5ec90731.f6a49b70.js => 5ec90731.4eab081d.js} (87%) rename assets/js/{5ef0bdde.fbb18141.js => 5ef0bdde.da8175a7.js} (80%) delete mode 100644 assets/js/6048.a0d2f860.js rename assets/js/{616ee580.e30472b0.js => 616ee580.6ddee81a.js} (90%) rename assets/js/{631037e5.85b42d25.js => 631037e5.adb20c2c.js} (59%) rename assets/js/{64d03520.0c257146.js => 64d03520.6f24231a.js} (84%) create mode 100644 assets/js/665f164c.493e219b.js delete mode 100644 assets/js/665f164c.eb74b7a6.js create mode 100644 assets/js/6875c492.463ee9a3.js delete mode 100644 assets/js/6875c492.bfbc1fdc.js rename assets/js/{68b99ecd.3b517092.js => 68b99ecd.9b719a2d.js} (79%) create mode 100644 assets/js/6be32138.8a943ec7.js delete mode 100644 assets/js/6be32138.e604e6f4.js rename assets/js/{6ccb158e.71a0d814.js => 6ccb158e.5162cfe7.js} (98%) rename assets/js/{6e965365.0fc782cb.js => 6e965365.33a8784c.js} (99%) rename assets/js/{6f8964f3.0f47a8ee.js => 6f8964f3.a1c6e6fd.js} (93%) rename assets/js/{719c0fd7.9b552829.js => 719c0fd7.6c3d8003.js} (82%) rename assets/js/{749619b5.778e9505.js => 749619b5.eabd0923.js} (94%) rename assets/js/{74ec46b4.45c490ed.js => 74ec46b4.5a8f5ef0.js} (84%) rename assets/js/{75d8af72.de071f8d.js => 75d8af72.0db0b71a.js} (70%) rename assets/js/{763344b9.ca82c87e.js => 763344b9.3fc871db.js} (85%) rename assets/js/{779cc1e8.bbdd63a1.js => 779cc1e8.b5e33d5d.js} (91%) create mode 100644 assets/js/7874.f6f729a5.js rename assets/js/{79055aff.6c794010.js => 79055aff.33b2b3c8.js} (91%) rename assets/js/{7aba1839.091e2e6b.js => 7aba1839.8f38c854.js} (84%) create mode 100644 assets/js/7aefc753.cdd60b24.js delete mode 100644 assets/js/7aefc753.f5cd3448.js rename assets/js/{7b667a7f.ae55a2ab.js => 7b667a7f.8a480976.js} (89%) rename assets/js/{7b788087.328863f6.js => 7b788087.8948d3eb.js} (94%) rename assets/js/{7b9de75f.0ebd6f32.js => 7b9de75f.61af48f1.js} (86%) create mode 100644 assets/js/7ceaa645.42ff94cb.js delete mode 100644 assets/js/7ceaa645.ac1d6308.js delete mode 100644 assets/js/8105.7cae6d1f.js rename assets/js/{814f3328.d24f5f57.js => 814f3328.01f98a18.js} (62%) rename assets/js/{82893666.f3b79821.js => 82893666.1b7a455f.js} (96%) delete mode 100644 assets/js/8428fe34.0509f320.js create mode 100644 assets/js/8428fe34.9593ce54.js rename assets/js/{84e08f43.e19511bc.js => 84e08f43.fd8204f1.js} (92%) create mode 100644 assets/js/866d553a.15ab360d.js delete mode 100644 assets/js/866d553a.cbd99266.js rename assets/js/{86c3bd1d.e7c31aca.js => 86c3bd1d.9115d118.js} (93%) create mode 100644 assets/js/8a92e787.4f946d9f.js delete mode 100644 assets/js/8a92e787.a068730e.js rename assets/js/{8cf21e85.eb0c3500.js => 8cf21e85.f316391c.js} (79%) delete mode 100644 assets/js/8def2dd5.46757c8d.js create mode 100644 assets/js/8def2dd5.8faef833.js rename assets/js/{90decb6d.9b736857.js => 90decb6d.17716680.js} (92%) rename assets/js/{933a69d3.580d79a0.js => 933a69d3.ba52a263.js} (92%) create mode 100644 assets/js/935f2afb.3edf634b.js delete mode 100644 assets/js/935f2afb.73c88fc7.js delete mode 100644 assets/js/93df2695.12f4ff8d.js create mode 100644 assets/js/93df2695.300a96e1.js create mode 100644 assets/js/95f4d37c.0a40e7b8.js delete mode 100644 assets/js/95f4d37c.7715ba3a.js rename assets/js/{965d240c.50abd3fb.js => 965d240c.50a7d323.js} (82%) delete mode 100644 assets/js/9722e053.24ccaeca.js create mode 100644 assets/js/9722e053.7ad17092.js create mode 100644 assets/js/98f9308d.a01bf3c4.js delete mode 100644 assets/js/98f9308d.be94bcbf.js rename assets/js/{9bca08cf.cbc2db42.js => 9bca08cf.cd5bdade.js} (90%) rename assets/js/{9bd69ffc.df99b872.js => 9bd69ffc.96d0dc87.js} (86%) rename assets/js/{9cc140f3.46c0f2b1.js => 9cc140f3.d46c2c0c.js} (89%) create mode 100644 assets/js/9e4087bc.7fa7842e.js delete mode 100644 assets/js/9e4087bc.a9c67174.js delete mode 100644 assets/js/9f1c3232.1cf2e42e.js create mode 100644 assets/js/9f1c3232.754ab62e.js delete mode 100644 assets/js/9f7d0305.7388f64a.js create mode 100644 assets/js/9f7d0305.ff0deaac.js rename assets/js/{a13e0645.b94fc59c.js => a13e0645.94a2c40f.js} (90%) rename assets/js/{a50e2e4f.1318cb1d.js => a50e2e4f.08511bd9.js} (90%) rename assets/js/{a626c4f3.9fea3752.js => a626c4f3.dee5a042.js} (83%) delete mode 100644 assets/js/a6aa9e1f.28469447.js create mode 100644 assets/js/a6aa9e1f.e40508bd.js rename assets/js/{a771de40.71ea664a.js => a771de40.cd72cf12.js} (88%) create mode 100644 assets/js/a7bd4aaa.928fb9e5.js create mode 100644 assets/js/a94703ab.1851859d.js rename assets/js/{a9a76bf7.5c10b5a8.js => a9a76bf7.6ebee837.js} (83%) rename assets/js/{aa81941d.9d9f9412.js => aa81941d.a884d55b.js} (97%) rename assets/js/{ad04e600.4cda4442.js => ad04e600.80dbb210.js} (81%) rename assets/js/{ae013ba6.4cc80cf7.js => ae013ba6.851e7143.js} (86%) rename assets/js/{ae70e824.246e99e9.js => ae70e824.0e6f6d61.js} (88%) rename assets/js/{af6a11bf.4290cebc.js => af6a11bf.050de1e1.js} (97%) rename assets/js/{b02525a9.456b9285.js => b02525a9.4e924af7.js} (82%) rename assets/js/{b03a0ac1.7c16d2b5.js => b03a0ac1.5e843cb3.js} (93%) delete mode 100644 assets/js/b249ed45.77028740.js create mode 100644 assets/js/b249ed45.790c0dff.js create mode 100644 assets/js/b2f554cd.1ddf11f7.js delete mode 100644 assets/js/b2f554cd.295697e8.js create mode 100644 assets/js/b35f1b7f.e3527fb9.js delete mode 100644 assets/js/b35f1b7f.eab94299.js create mode 100644 assets/js/b40daf0f.2f5ab135.js delete mode 100644 assets/js/b40daf0f.f8f42c37.js delete mode 100644 assets/js/b5954e33.0de601d3.js create mode 100644 assets/js/b5954e33.3422a378.js rename assets/js/{b696d13b.1c632dae.js => b696d13b.67d6433c.js} (86%) rename assets/js/{b8466c91.eed55eb6.js => b8466c91.bdc01329.js} (96%) rename assets/js/{b8c37621.03680a1b.js => b8c37621.3fb7580a.js} (97%) rename assets/js/{b9b7817e.d1ea4071.js => b9b7817e.8ebc058f.js} (95%) rename assets/js/{bd59af11.470c9730.js => bd59af11.82aec483.js} (88%) rename assets/js/{bea6e15b.5e98adf3.js => bea6e15b.422e763d.js} (93%) create mode 100644 assets/js/c222de09.301bcc1f.js delete mode 100644 assets/js/c222de09.ec3d20c2.js delete mode 100644 assets/js/c377a04b.a63d0c15.js create mode 100644 assets/js/c377a04b.b8a439ee.js rename assets/js/{c3f5dd14.c34d5bde.js => c3f5dd14.74ce3614.js} (91%) rename assets/js/{caaedc90.7e4aa2bd.js => caaedc90.0c254351.js} (83%) rename assets/js/{cc8e0b88.61c83c7a.js => cc8e0b88.32340495.js} (81%) delete mode 100644 assets/js/ccc49370.084c8d77.js create mode 100644 assets/js/ccc49370.152e84b2.js rename assets/js/{ce321ae3.bd881c9e.js => ce321ae3.8a69b8f3.js} (86%) rename assets/js/{ce4635d7.d356d916.js => ce4635d7.2f6e9cd8.js} (92%) rename assets/js/{ceabd901.affbfa3f.js => ceabd901.23077e58.js} (83%) rename assets/js/{d16f6fc6.a492f280.js => d16f6fc6.dcce69ae.js} (91%) delete mode 100644 assets/js/d1b78a4d.8e6e2837.js create mode 100644 assets/js/d1b78a4d.c349bda3.js rename assets/js/{d1d29319.ebda8846.js => d1d29319.bcaebf14.js} (86%) create mode 100644 assets/js/d23df0ea.1d84ae69.js delete mode 100644 assets/js/d23df0ea.892d5604.js rename assets/js/{d464210a.31238def.js => d464210a.3e507ebe.js} (92%) delete mode 100644 assets/js/d7d81bf6.be572449.js create mode 100644 assets/js/d7d81bf6.dfef0ceb.js create mode 100644 assets/js/d8be0e5a.ea934156.js delete mode 100644 assets/js/d8be0e5a.f9e6cd73.js rename assets/js/{da002ab0.79cb2336.js => da002ab0.4e4f882b.js} (82%) delete mode 100644 assets/js/dc2776f2.224fc2b8.js create mode 100644 assets/js/dc2776f2.a0c19ad7.js delete mode 100644 assets/js/dd97a9bc.316666d0.js create mode 100644 assets/js/dd97a9bc.8892f4a2.js rename assets/js/{de225737.ae0ddde1.js => de225737.a2e520ac.js} (95%) create mode 100644 assets/js/df203c0f.7f1db2f5.js delete mode 100644 assets/js/df203c0f.8ad14275.js rename assets/js/{e331fbd7.8617ba2c.js => e331fbd7.29ba16bf.js} (81%) rename assets/js/{e6a08407.1751bc14.js => e6a08407.9629e8eb.js} (85%) rename assets/js/{e91f52c1.e63d5f81.js => e91f52c1.d3ff2d82.js} (85%) rename assets/js/{ec98ad91.08a89d13.js => ec98ad91.f6dcd324.js} (84%) create mode 100644 assets/js/ecfddbd4.21bb1ad5.js delete mode 100644 assets/js/ecfddbd4.f15998ec.js rename assets/js/{f02c0d6e.a8b752d8.js => f02c0d6e.a68a515b.js} (89%) create mode 100644 assets/js/f3d7f34e.36b0c123.js delete mode 100644 assets/js/f3d7f34e.da24e3c4.js create mode 100644 assets/js/f3f8ecb0.4317feec.js delete mode 100644 assets/js/f3f8ecb0.c4976496.js rename assets/js/{f41bce02.82543bf2.js => f41bce02.7f0e4028.js} (82%) rename assets/js/{f4fd4511.1869451f.js => f4fd4511.35512f65.js} (84%) create mode 100644 assets/js/f50a4147.0bd0271c.js delete mode 100644 assets/js/f50a4147.103a0c55.js rename assets/js/{f6807fb4.5389a650.js => f6807fb4.4f260ebf.js} (82%) rename assets/js/{f893ec16.dafed2ec.js => f893ec16.d295f0cb.js} (90%) create mode 100644 assets/js/fa69a7f4.48858406.js delete mode 100644 assets/js/fa69a7f4.90bbc604.js rename assets/js/{fa7546af.b7f84265.js => fa7546af.7af1c866.js} (89%) rename assets/js/{fcc63351.75cdda8a.js => fcc63351.947aff8c.js} (85%) delete mode 100644 assets/js/fd2b74dc.6aac091f.js create mode 100644 assets/js/fd2b74dc.7c595cf3.js rename assets/js/{ffc337e7.dce1780a.js => ffc337e7.5f4be381.js} (94%) create mode 100644 assets/js/ffcb1b32.d590406b.js delete mode 100644 assets/js/ffcb1b32.d819dc1a.js create mode 100644 assets/js/main.63e95a14.js rename assets/js/{main.f9c5ede1.js.LICENSE.txt => main.63e95a14.js.LICENSE.txt} (76%) delete mode 100644 assets/js/main.f9c5ede1.js create mode 100644 assets/js/runtime~main.3cbddc6e.js delete mode 100644 assets/js/runtime~main.85c93256.js diff --git a/404.html b/404.html index 1380a29b9..b7f755913 100644 --- a/404.html +++ b/404.html @@ -1,9 +1,9 @@ - +
- -We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
/root/.lightning
directory from one user to the other",id:"1-move-the-rootlightning-directory-from-one-user-to-the-other",level:3},{value:"2) Move the /root/fleek-network
directory from one user to the other",id:"2-move-the-rootfleek-network-directory-from-one-user-to-the-other",level:3},{value:"3) Confirm move by finding both directories",id:"3-confirm-move-by-finding-both-directories",level:3},{value:"Change ownership of files",id:"change-ownership-of-files",level:2},{value:"The lgtn symbolic link (symlink)",id:"the-lgtn-symbolic-link-symlink",level:2},{value:"Update the Systemd service unit",id:"update-the-systemd-service-unit",level:2},{value:"Update the config.toml with user-preferred file locations",id:"update-the-configtoml-with-user-preferred-file-locations",level:2},{value:"Start the service",id:"start-the-service",level:2},{value:"Conclusion",id:"conclusion",level:2}],m={toc:u},c="wrapper";function g(e){let{components:t,...l}=e;return(0,r.kt)(c,(0,o.Z)({},m,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"Transfering setup ownership",src:n(2867).Z,width:"1450",height:"816"})),(0,r.kt)("h2",{id:"tldr"},"TL;DR"),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"The step-by-step instructions provided in the guide should be simple to follow, but the process is also available as an automated script from our familiar ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/fleek-network/get.fleek.network"},"get.fleek.network")," tool."),(0,r.kt)("p",{parentName:"admonition"},"To use the automated script execute the following command in your server terminal and follow the instructions:"),(0,r.kt)("pre",{parentName:"admonition"},(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"curl -sS https://get.fleek.network/transfer_system_user_setup_ownership | bash\n")),(0,r.kt)("p",{parentName:"admonition"},"We try to make the auomated scripts as useful as possible, but it's impossible to fit every single use-case. So, if you find any isses or have feedback to help us improve ",(0,r.kt)("a",{parentName:"p",href:"https://discord.gg/fleekxyz"},"message us through our Discord"),".")),(0,r.kt)("h2",{id:"introduction"},"Introduction"),(0,r.kt)("p",null,"Our Lightning CLI and Node process is run by a user, that has some sort of permissions\u2013some users run it as a super user (root) which is questionable as root privileges are not a necessary good. We'll look into how to create a user to manage and control the Fleek Network Lightning CLI and Systemd unit service. Also, presents the concept of file permissions and ownership which is crucial in preventing private or sensitive data from being exposed to dodgy actors."),(0,r.kt)("p",null,"Let's discuss the topic and open up a few ideas to help us improve the security of our server."),(0,r.kt)("h2",{id:"pre-requisites"},"Pre-requisites"),(0,r.kt)("p",null,"To follow the guide, you will need the following:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Familiarity with the command-line interface"),(0,r.kt)("li",{parentName:"ul"},"Have installed and set up the Lightning CLI and service")),(0,r.kt)("h2",{id:"ownership-of-lightning-cli-files"},"Ownership of Lightning CLI files"),(0,r.kt)("p",null,"The user who installs the Lightning CLI and sets the Service takes an important role that determines the location of the configuration files, the setup, and how the Systemd service is managed or controlled."),(0,r.kt)("p",null,"Our ",(0,r.kt)("a",{parentName:"p",href:"/docs/node/install"},"install")," document recommends creating a user and switching to the user to set up the service. You shouldn't want installed applications to run with elevated privileges. Applications are meant to be run with non-administrative privileges. If an application requires higher privileges, the administrator, such as a ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Sudo"},"sudoer")," should be able to elevate it. An application that has full access and control of a system can modify it in harmful ways, e.g. compromise the private keys."),(0,r.kt)("p",null,"For our guide, we'll illustrate the process of migration from a super user (root) to another user (sudo). The knowledge should be easily appliable for any other user-to-user migration. We stick with root user for simplicity and because that's the most common use case."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"A reference document about ",(0,r.kt)("a",{parentName:"p",href:"/references/Lightning%20CLI/file-permissions-and-ownership"},"File permissions and ownership")," is available that explains how it works practically, by showcasing how the process can be started, how the node process locates the Keystore, etc.")),(0,r.kt)("h2",{id:"systemd-service"},"Systemd Service"),(0,r.kt)("p",null,"In systemd, a unit refers to any resource that the system knows how to operate on and manage. This is the primary object that the systemd tools know how to deal with. These resources are defined using configuration files called unit files."),(0,r.kt)("p",null,"The recommended installation process features a ",(0,r.kt)("a",{parentName:"p",href:"https://www.freedesktop.org/software/systemd/man/systemd.service.html"},"systemd.service")," which is a resource that the system knows how to operate and manage by an administrator user."),(0,r.kt)("admonition",{type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"When using a Systemd service to run a process, it operates comparably to running it directly. The key difference is that Systemd keeps track of all the processes and threads that are spawned. This means that when a service is stopped using systemctl, such as the Fleek Network Lightning Node service, all the child processes that were started by the service are also terminated. Additionally, by utilizing Systemd, a user can run the process in the background and configure it to start automatically on system startup.")),(0,r.kt)("p",null,"If you have followed the installation recommendations, find the systemd service unit in the location ",(0,r.kt)("inlineCode",{parentName:"p"},"/etc/systemd/system/lightning.service")," (we are using Ubuntu Linux as an example to keep it short)."),(0,r.kt)("p",null,"Make sure that you have set up a ",(0,r.kt)("a",{parentName:"p",href:"/docs/node/install#systemd-service-setup"},"Systemd unit service"),", as recommended during the installation as this guide assumes you have one setup."),(0,r.kt)("h2",{id:"stop-the-service"},"Stop the service"),(0,r.kt)("p",null,"Before we proceed with any changes required for the migration, you'll have to stop the ",(0,r.kt)("inlineCode",{parentName:"p"},"lightning.service"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"systemctl stop lightning\n")),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"For this guide, we are assuming that you are migrating ownership from ",(0,r.kt)("strong",{parentName:"p"},"root")," to a ",(0,r.kt)("strong",{parentName:"p"},"sudoer")," user. If not, you might be required to elevate privileges as ",(0,r.kt)("strong",{parentName:"p"},"sudo**")," where required. For example, ",(0,r.kt)("inlineCode",{parentName:"p"},"sudo systemctl stop lightning"),".")),(0,r.kt)("h2",{id:"clear-the-lightning-data"},"Clear the .lightning data"),(0,r.kt)("p",null,"Run the following command to clear the ",(0,r.kt)("inlineCode",{parentName:"p"},"/root/.lightning/data"),", as it can be quite large, and we don't need to move it."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"sudo rm -rf /root/.lightning/data\n")),(0,r.kt)("h2",{id:"create-a-user"},"Create a user"),(0,r.kt)(i.ZP,{mdxType:"CreateAUser"}),(0,r.kt)("h2",{id:"move-lightning-system-and-source-code-directory-to-users-home"},"Move lightning system and source code directory to user's home"),(0,r.kt)("p",null,"A user should've been created, added the user to the sudo group, switched to the user, and changed the directory to the user's home."),(0,r.kt)("p",null,"Run the command ",(0,r.kt)("inlineCode",{parentName:"p"},"pwd"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"pwd\n")),(0,r.kt)("p",null,"The output would look like:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"/home//root/.lightning
directory from one user to the other",id:"1-move-the-rootlightning-directory-from-one-user-to-the-other",level:3},{value:"2) Move the /root/fleek-network
directory from one user to the other",id:"2-move-the-rootfleek-network-directory-from-one-user-to-the-other",level:3},{value:"3) Confirm move by finding both directories",id:"3-confirm-move-by-finding-both-directories",level:3},{value:"Change ownership of files",id:"change-ownership-of-files",level:2},{value:"The lgtn symbolic link (symlink)",id:"the-lgtn-symbolic-link-symlink",level:2},{value:"Update the Systemd service unit",id:"update-the-systemd-service-unit",level:2},{value:"Update the config.toml with user-preferred file locations",id:"update-the-configtoml-with-user-preferred-file-locations",level:2},{value:"Start the service",id:"start-the-service",level:2},{value:"Conclusion",id:"conclusion",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Transfering setup ownership",src:t(2867).Z+"",width:"1450",height:"816"})}),"\n","\n","\n",(0,s.jsx)(n.h2,{id:"tldr",children:"TL;DR"}),"\n",(0,s.jsxs)(n.admonition,{type:"tip",children:[(0,s.jsxs)(n.p,{children:["The step-by-step instructions provided in the guide should be simple to follow, but the process is also available as an automated script from our familiar ",(0,s.jsx)(n.a,{href:"https://github.com/fleek-network/get.fleek.network",children:"get.fleek.network"})," tool."]}),(0,s.jsx)(n.p,{children:"To use the automated script execute the following command in your server terminal and follow the instructions:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"curl -sS https://get.fleek.network/transfer_system_user_setup_ownership | bash\n"})}),(0,s.jsxs)(n.p,{children:["We try to make the auomated scripts as useful as possible, but it's impossible to fit every single use-case. So, if you find any isses or have feedback to help us improve ",(0,s.jsx)(n.a,{href:"https://discord.gg/fleekxyz",children:"message us through our Discord"}),"."]})]}),"\n",(0,s.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,s.jsx)(n.p,{children:"Our Lightning CLI and Node process is run by a user, that has some sort of permissions\u2013some users run it as a super user (root) which is questionable as root privileges are not a necessary good. We'll look into how to create a user to manage and control the Fleek Network Lightning CLI and Systemd unit service. Also, presents the concept of file permissions and ownership which is crucial in preventing private or sensitive data from being exposed to dodgy actors."}),"\n",(0,s.jsx)(n.p,{children:"Let's discuss the topic and open up a few ideas to help us improve the security of our server."}),"\n",(0,s.jsx)(n.h2,{id:"pre-requisites",children:"Pre-requisites"}),"\n",(0,s.jsx)(n.p,{children:"To follow the guide, you will need the following:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Familiarity with the command-line interface"}),"\n",(0,s.jsx)(n.li,{children:"Have installed and set up the Lightning CLI and service"}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"ownership-of-lightning-cli-files",children:"Ownership of Lightning CLI files"}),"\n",(0,s.jsx)(n.p,{children:"The user who installs the Lightning CLI and sets the Service takes an important role that determines the location of the configuration files, the setup, and how the Systemd service is managed or controlled."}),"\n",(0,s.jsxs)(n.p,{children:["Our ",(0,s.jsx)(n.a,{href:"/docs/node/install",children:"install"})," document recommends creating a user and switching to the user to set up the service. You shouldn't want installed applications to run with elevated privileges. Applications are meant to be run with non-administrative privileges. If an application requires higher privileges, the administrator, such as a ",(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Sudo",children:"sudoer"})," should be able to elevate it. An application that has full access and control of a system can modify it in harmful ways, e.g. compromise the private keys."]}),"\n",(0,s.jsx)(n.p,{children:"For our guide, we'll illustrate the process of migration from a super user (root) to another user (sudo). The knowledge should be easily appliable for any other user-to-user migration. We stick with root user for simplicity and because that's the most common use case."}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["A reference document about ",(0,s.jsx)(n.a,{href:"/references/Lightning%20CLI/file-permissions-and-ownership",children:"File permissions and ownership"})," is available that explains how it works practically, by showcasing how the process can be started, how the node process locates the Keystore, etc."]})}),"\n",(0,s.jsx)(n.h2,{id:"systemd-service",children:"Systemd Service"}),"\n",(0,s.jsx)(n.p,{children:"In systemd, a unit refers to any resource that the system knows how to operate on and manage. This is the primary object that the systemd tools know how to deal with. These resources are defined using configuration files called unit files."}),"\n",(0,s.jsxs)(n.p,{children:["The recommended installation process features a ",(0,s.jsx)(n.a,{href:"https://www.freedesktop.org/software/systemd/man/systemd.service.html",children:"systemd.service"})," which is a resource that the system knows how to operate and manage by an administrator user."]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsx)(n.p,{children:"When using a Systemd service to run a process, it operates comparably to running it directly. The key difference is that Systemd keeps track of all the processes and threads that are spawned. This means that when a service is stopped using systemctl, such as the Fleek Network Lightning Node service, all the child processes that were started by the service are also terminated. Additionally, by utilizing Systemd, a user can run the process in the background and configure it to start automatically on system startup."})}),"\n",(0,s.jsxs)(n.p,{children:["If you have followed the installation recommendations, find the systemd service unit in the location ",(0,s.jsx)(n.code,{children:"/etc/systemd/system/lightning.service"})," (we are using Ubuntu Linux as an example to keep it short)."]}),"\n",(0,s.jsxs)(n.p,{children:["Make sure that you have set up a ",(0,s.jsx)(n.a,{href:"/docs/node/install#systemd-service-setup",children:"Systemd unit service"}),", as recommended during the installation as this guide assumes you have one setup."]}),"\n",(0,s.jsx)(n.h2,{id:"stop-the-service",children:"Stop the service"}),"\n",(0,s.jsxs)(n.p,{children:["Before we proceed with any changes required for the migration, you'll have to stop the ",(0,s.jsx)(n.code,{children:"lightning.service"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"systemctl stop lightning\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["For this guide, we are assuming that you are migrating ownership from ",(0,s.jsx)(n.strong,{children:"root"})," to a ",(0,s.jsx)(n.strong,{children:"sudoer"})," user. If not, you might be required to elevate privileges as ",(0,s.jsx)(n.strong,{children:"sudo"}),"** where required. For example, ",(0,s.jsx)(n.code,{children:"sudo systemctl stop lightning"}),"."]})}),"\n",(0,s.jsx)(n.h2,{id:"clear-the-lightning-data",children:"Clear the .lightning data"}),"\n",(0,s.jsxs)(n.p,{children:["Run the following command to clear the ",(0,s.jsx)(n.code,{children:"/root/.lightning/data"}),", as it can be quite large, and we don't need to move it."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"sudo rm -rf /root/.lightning/data\n"})}),"\n",(0,s.jsx)(n.h2,{id:"create-a-user",children:"Create a user"}),"\n",(0,s.jsx)(o.ZP,{}),"\n",(0,s.jsx)(n.h2,{id:"move-lightning-system-and-source-code-directory-to-users-home",children:"Move lightning system and source code directory to user's home"}),"\n",(0,s.jsx)(n.p,{children:"A user should've been created, added the user to the sudo group, switched to the user, and changed the directory to the user's home."}),"\n",(0,s.jsxs)(n.p,{children:["Run the command ",(0,s.jsx)(n.code,{children:"pwd"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"pwd\n"})}),"\n",(0,s.jsx)(n.p,{children:"The output would look like:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"/home/config.toml
",id:"update-the-configtoml",level:2},{value:"Update the config.toml
with user home path",id:"update-the-configtoml-with-user-home-path",level:2},{value:"Restart the service",id:"restart-the-service",level:2},{value:"Health checkup",id:"health-checkup",level:2}],m={toc:d},g="wrapper";function k(e){let{components:t,...n}=e;return(0,o.kt)(g,(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"Although the step-by-step instructions described here are simple to follow, this process is available as an automated script. To use it execute the following command in your server terminal and follow the instructions:"),(0,o.kt)("pre",{parentName:"admonition"},(0,o.kt)("code",{parentName:"pre",className:"language-sh"},"curl -sS https://get.fleek.network/update | bash\n"))),(0,o.kt)("h2",{id:"switch-to-the-installation-user"},"Switch to the installation user"),(0,o.kt)("p",null,"Switch to the username you've used throughout the installation process."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-sh"},"su config.toml
",id:"update-the-configtoml",level:2},{value:"Update the config.toml
with user home path",id:"update-the-configtoml-with-user-home-path",level:2},{value:"Restart the service",id:"restart-the-service",level:2},{value:"Health checkup",id:"health-checkup",level:2}];function p(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.admonition,{type:"tip",children:[(0,s.jsx)(n.p,{children:"Although the step-by-step instructions described here are simple to follow, this process is available as an automated script. To use it execute the following command in your server terminal and follow the instructions:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"curl -sS https://get.fleek.network/update | bash\n"})})]}),"\n",(0,s.jsx)(n.h2,{id:"switch-to-the-installation-user",children:"Switch to the installation user"}),"\n",(0,s.jsx)(n.p,{children:"Switch to the username you've used throughout the installation process."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-sh",children:"su 4x00-4x09
)",id:"connection-pool-4x00-4x09",level:3},{value:"Consensus (4x10-4x19
)",id:"consensus-4x10-4x19",level:3},{value:"Handshake (4x20-4x29
)",id:"handshake-4x20-4x29",level:3},{value:"RPC (4x30-4x39
)",id:"rpc-4x30-4x39",level:3},{value:"DHT (4x40-4x49
)",id:"dht-4x40-4x49",level:3},{value:"Broadcast",id:"broadcast",level:3},{value:"Blockstore Server",id:"blockstore-server",level:3}]},a="wrapper";function l(e){let{components:t,...n}=e;return(0,o.kt)(a,(0,r.Z)({},i,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Amongst other resources, ports play the role of managing and organizing network traffic. The ports initiate and terminate network connections crucial for the node to operate in the Fleek Network. The operating system should have the ports enabled and open for the node to run successfully."),(0,o.kt)("p",null,"We reserve the following top level ranges:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"TCP: ",(0,o.kt)("inlineCode",{parentName:"li"},"4200-4299")),(0,o.kt)("li",{parentName:"ul"},"UDP: ",(0,o.kt)("inlineCode",{parentName:"li"},"4300-4399"))),(0,o.kt)("p",null,"Each service in the node has 10 ports reserved within each range."),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"For node operators, they can either choose to individually open up the assigned ports, or just open the top level ranges, at their discretion. But we reserve the full ranges for future use, so they should avoid any port conflicts with other software running on the node.")),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"For the Node Operators who opt to run the ",(0,o.kt)("inlineCode",{parentName:"p"},"get.fleek.network")," assisted installer, the ports are verified if in use.")),(0,o.kt)("p",null,"The Node process requires the following ports:"),(0,o.kt)("h3",{id:"connection-pool-4x00-4x09"},"Connection Pool (",(0,o.kt)("inlineCode",{parentName:"h3"},"4x00-4x09"),")"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Netkit QUIC: ",(0,o.kt)("inlineCode",{parentName:"li"},"4300 (UDP)"))),(0,o.kt)("h3",{id:"consensus-4x10-4x19"},"Consensus (",(0,o.kt)("inlineCode",{parentName:"h3"},"4x10-4x19"),")"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Mempool: ",(0,o.kt)("inlineCode",{parentName:"li"},"4210 (TCP)")),(0,o.kt)("li",{parentName:"ul"},"Primary: ",(0,o.kt)("inlineCode",{parentName:"li"},"4310 (UDP)")),(0,o.kt)("li",{parentName:"ul"},"Worker: ",(0,o.kt)("inlineCode",{parentName:"li"},"4311 (UDP)"))),(0,o.kt)("h3",{id:"handshake-4x20-4x29"},"Handshake (",(0,o.kt)("inlineCode",{parentName:"h3"},"4x20-4x29"),")"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"HTTP: ",(0,o.kt)("inlineCode",{parentName:"li"},"4220 (TCP)")),(0,o.kt)("li",{parentName:"ul"},"TCP: ",(0,o.kt)("inlineCode",{parentName:"li"},"4221 (TCP)")),(0,o.kt)("li",{parentName:"ul"},"WebRTC: ",(0,o.kt)("inlineCode",{parentName:"li"},"4320 (UDP)")),(0,o.kt)("li",{parentName:"ul"},"WebTransport: ",(0,o.kt)("inlineCode",{parentName:"li"},"4321 (UDP)"))),(0,o.kt)("h3",{id:"rpc-4x30-4x39"},"RPC (",(0,o.kt)("inlineCode",{parentName:"h3"},"4x30-4x39"),")"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"HTTP: ",(0,o.kt)("inlineCode",{parentName:"li"},"4230 (TCP)")),(0,o.kt)("li",{parentName:"ul"},"WebSocket / WebTransport?")),(0,o.kt)("h3",{id:"dht-4x40-4x49"},"DHT (",(0,o.kt)("inlineCode",{parentName:"h3"},"4x40-4x49"),")"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"UDP: ",(0,o.kt)("inlineCode",{parentName:"li"},"4340 (UDP)"))),(0,o.kt)("h3",{id:"broadcast"},"Broadcast"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Uses connection pool")),(0,o.kt)("h3",{id:"blockstore-server"},"Blockstore Server"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Uses connection pool")),(0,o.kt)("admonition",{title:"required",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The ports should be freed before launching the node process. Any blockers or firewalls should be configured to enable the ports.")))}l.isMDXComponent=!0},3872:(e,t,n)=>{n.d(t,{Z:()=>o});var r=n(7294);const o=e=>{let{image:t,name:n,title:o,url:i,communityMember:a=!1}=e;return r.createElement("section",{className:"author_card"},r.createElement("div",null,r.createElement("span",{className:"avatar"},r.createElement("a",{href:i,target:"_blank",alt:n},r.createElement("img",{src:t,alt:n}))),r.createElement("div",null,r.createElement("span",{className:"name"},r.createElement("a",{href:i,target:"_blank",alt:n},n)),r.createElement("span",{className:"title"},o),r.createElement("span",{className:"discord"},a?"Join our community on":"Got questions? Find us on"," ",r.createElement("a",{href:"https://discord.gg/fleekxyz",target:"_blank"},"discord!")))))}},7159:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>u,contentTitle:()=>s,default:()=>h,frontMatter:()=>l,metadata:()=>p,toc:()=>d});var r=n(7462),o=(n(7294),n(3905)),i=n(3872),a=n(7906);const l={title:"Requirements",hide_title:!0,description:"The requirements for the server specifications on which the Fleek Network Node can be installed and run.",tags:["requirements","server"],sidebarCollapsible:!1},s=void 0,p={unversionedId:"node/requirements",id:"node/requirements",title:"Requirements",description:"The requirements for the server specifications on which the Fleek Network Node can be installed and run.",source:"@site/docs/node/requirements.md",sourceDirName:"node",slug:"/node/requirements",permalink:"/docs/node/requirements",draft:!1,tags:[{label:"requirements",permalink:"/docs/tags/requirements"},{label:"server",permalink:"/docs/tags/server"}],version:"current",frontMatter:{title:"Requirements",hide_title:!0,description:"The requirements for the server specifications on which the Fleek Network Node can be installed and run.",tags:["requirements","server"],sidebarCollapsible:!1},sidebar:"docs",previous:{title:"Overview",permalink:"/docs/node/overview"},next:{title:"Testnet onboarding",permalink:"/docs/node/testnet-onboarding"}},u={},d=[{value:"Requirements",id:"requirements",level:2},{value:"Server",id:"server",level:2},{value:"Ports",id:"ports",level:2},{value:"Specs",id:"specs",level:2}],c={toc:d},m="wrapper";function h(e){let{components:t,...n}=e;return(0,o.kt)(m,(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"requirements"},"Requirements"),(0,o.kt)("p",null,"This section provides the requirements for the server specifications on which the Fleek Network Node can be installed and run."),(0,o.kt)("admonition",{title:"warning",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Only 64-bits distributions are supported. Do not try to install it on a 32-bits operating system!")),(0,o.kt)("h2",{id:"server"},"Server"),(0,o.kt)("hr",null),(0,o.kt)("p",null,"The Fleek Network node binary is only supported by a Linux server. Currently, we are only providing support for the following distros:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Debian (>= 11)"),(0,o.kt)("li",{parentName:"ul"},"Ubuntu (>= 22.04 LTS)")),(0,o.kt)("admonition",{type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"Support for other OS will be made available soon, e.g. CentOS and Fedora. Feel free to test running on older versions, but we reduce the number of versions to ease support and keep instructions less verbose, which should be easily translatable to your preferred OS Distro and Version. Any contributions to provide support for your favorite distro are welcomed! Feel free to ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/fleek-network"},"open a PR")," in our repositories.")),(0,o.kt)("p",null,"Because of the use of Linux containerization technology, other operating systems, such as FreeBSD, OpenBSD, MacOS, Windows and others are not supported."),(0,o.kt)("p",null,"If you don\u2019t have a server or a spare machine, keep reading as we'll give you some hints on how to rent one, although we are not affiliated with any provider."),(0,o.kt)("h2",{id:"ports"},"Ports"),(0,o.kt)(a.ZP,{mdxType:"Ports"}),(0,o.kt)("h2",{id:"specs"},"Specs"),(0,o.kt)("hr",null),(0,o.kt)("p",null,"The recommended number of CPU cores is a minimum of 4 with a minimum CPU speed of 2.0 GHz. The Fleek Network node binary is only supported on CPUs that adhere to the x86_64 architecture (64-bit)."),(0,o.kt)("p",null,"A minimum of 32 GB of memory (RAM) is required and a reasonable amount of disk space for the installation and running processes, which at the minimum should be around 20 GB."),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"We're mainly supporting ",(0,o.kt)("inlineCode",{parentName:"p"},"GenuineIntel")," and there have been reports of failure to build the binary on ",(0,o.kt)("inlineCode",{parentName:"p"},"AMD"),". The ",(0,o.kt)("inlineCode",{parentName:"p"},"ARM64")," is a different architecture, thus not supported, but there has been some community contributions in that regard, find it in the reference ",(0,o.kt)("a",{parentName:"p",href:"/references/Lightning%20CLI/error-building-on-arm64"},"error building on ARM64"),".")),(0,o.kt)(i.Z,{name:"Helder Oliveira",image:"https://github.com/heldrida.png",title:"Software Developer + DX",url:"https://github.com/heldrida",mdxType:"Author"}))}h.isMDXComponent=!0}}]);
\ No newline at end of file
diff --git a/assets/js/44969bae.ff574e4c.js b/assets/js/44969bae.ff574e4c.js
new file mode 100644
index 000000000..25b635416
--- /dev/null
+++ b/assets/js/44969bae.ff574e4c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[4063],{7767:(e,n,r)=>{r.d(n,{ZP:()=>t});var s=r(5893),i=r(1151);function o(e){const n={admonition:"admonition",code:"code",h3:"h3",li:"li",p:"p",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Amongst other resources, ports play the role of managing and organizing network traffic. The ports initiate and terminate network connections crucial for the node to operate in the Fleek Network. The operating system should have the ports enabled and open for the node to run successfully."}),"\n",(0,s.jsx)(n.p,{children:"We reserve the following top level ranges:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["TCP: ",(0,s.jsx)(n.code,{children:"4200-4299"})]}),"\n",(0,s.jsxs)(n.li,{children:["UDP: ",(0,s.jsx)(n.code,{children:"4300-4399"})]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Each service in the node has 10 ports reserved within each range."}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"For node operators, they can either choose to individually open up the assigned ports, or just open the top level ranges, at their discretion. But we reserve the full ranges for future use, so they should avoid any port conflicts with other software running on the node."})}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["For the Node Operators who opt to run the ",(0,s.jsx)(n.code,{children:"get.fleek.network"})," assisted installer, the ports are verified if in use."]})}),"\n",(0,s.jsx)(n.p,{children:"The Node process requires the following ports:"}),"\n",(0,s.jsxs)(n.h3,{id:"connection-pool-4x00-4x09",children:["Connection Pool (",(0,s.jsx)(n.code,{children:"4x00-4x09"}),")"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Netkit QUIC: ",(0,s.jsx)(n.code,{children:"4300 (UDP)"})]}),"\n"]}),"\n",(0,s.jsxs)(n.h3,{id:"consensus-4x10-4x19",children:["Consensus (",(0,s.jsx)(n.code,{children:"4x10-4x19"}),")"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Mempool: ",(0,s.jsx)(n.code,{children:"4210 (TCP)"})]}),"\n",(0,s.jsxs)(n.li,{children:["Primary: ",(0,s.jsx)(n.code,{children:"4310 (UDP)"})]}),"\n",(0,s.jsxs)(n.li,{children:["Worker: ",(0,s.jsx)(n.code,{children:"4311 (UDP)"})]}),"\n"]}),"\n",(0,s.jsxs)(n.h3,{id:"handshake-4x20-4x29",children:["Handshake (",(0,s.jsx)(n.code,{children:"4x20-4x29"}),")"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["HTTP: ",(0,s.jsx)(n.code,{children:"4220 (TCP)"})]}),"\n",(0,s.jsxs)(n.li,{children:["TCP: ",(0,s.jsx)(n.code,{children:"4221 (TCP)"})]}),"\n",(0,s.jsxs)(n.li,{children:["WebRTC: ",(0,s.jsx)(n.code,{children:"4320 (UDP)"})]}),"\n",(0,s.jsxs)(n.li,{children:["WebTransport: ",(0,s.jsx)(n.code,{children:"4321 (UDP)"})]}),"\n"]}),"\n",(0,s.jsxs)(n.h3,{id:"rpc-4x30-4x39",children:["RPC (",(0,s.jsx)(n.code,{children:"4x30-4x39"}),")"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["HTTP: ",(0,s.jsx)(n.code,{children:"4230 (TCP)"})]}),"\n",(0,s.jsx)(n.li,{children:"WebSocket / WebTransport?"}),"\n"]}),"\n",(0,s.jsxs)(n.h3,{id:"dht-4x40-4x49",children:["DHT (",(0,s.jsx)(n.code,{children:"4x40-4x49"}),")"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["UDP: ",(0,s.jsx)(n.code,{children:"4340 (UDP)"})]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"broadcast",children:"Broadcast"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Uses connection pool"}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"blockstore-server",children:"Blockstore Server"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Uses connection pool"}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{title:"required",type:"caution",children:(0,s.jsx)(n.p,{children:"The ports should be freed before launching the node process. Any blockers or firewalls should be configured to enable the ports."})})]})}function t(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},6019:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>p,frontMatter:()=>d,metadata:()=>c,toc:()=>h});var s=r(5893),i=r(1151),o=r(3872),t=r(7767);const d={title:"Requirements",hide_title:!0,description:"The requirements for the server specifications on which the Fleek Network Node can be installed and run.",tags:["requirements","server"],sidebarCollapsible:!1},l=void 0,c={id:"node/requirements",title:"Requirements",description:"The requirements for the server specifications on which the Fleek Network Node can be installed and run.",source:"@site/docs/node/requirements.md",sourceDirName:"node",slug:"/node/requirements",permalink:"/docs/node/requirements",draft:!1,unlisted:!1,tags:[{label:"requirements",permalink:"/docs/tags/requirements"},{label:"server",permalink:"/docs/tags/server"}],version:"current",frontMatter:{title:"Requirements",hide_title:!0,description:"The requirements for the server specifications on which the Fleek Network Node can be installed and run.",tags:["requirements","server"],sidebarCollapsible:!1},sidebar:"docs",previous:{title:"Overview",permalink:"/docs/node/overview"},next:{title:"Testnet onboarding",permalink:"/docs/node/testnet-onboarding"}},a={},h=[{value:"Requirements",id:"requirements",level:2},{value:"Server",id:"server",level:2},{value:"Ports",id:"ports",level:2},{value:"Specs",id:"specs",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",hr:"hr",li:"li",p:"p",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"requirements",children:"Requirements"}),"\n",(0,s.jsx)(n.p,{children:"This section provides the requirements for the server specifications on which the Fleek Network Node can be installed and run."}),"\n",(0,s.jsx)(n.admonition,{title:"warning",type:"caution",children:(0,s.jsx)(n.p,{children:"Only 64-bits distributions are supported. Do not try to install it on a 32-bits operating system!"})}),"\n",(0,s.jsx)(n.h2,{id:"server",children:"Server"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.p,{children:"The Fleek Network node binary is only supported by a Linux server. Currently, we are only providing support for the following distros:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Debian (>= 11)"}),"\n",(0,s.jsx)(n.li,{children:"Ubuntu (>= 22.04 LTS)"}),"\n"]}),"\n",(0,s.jsx)(n.admonition,{type:"tip",children:(0,s.jsxs)(n.p,{children:["Support for other OS will be made available soon, e.g. CentOS and Fedora. Feel free to test running on older versions, but we reduce the number of versions to ease support and keep instructions less verbose, which should be easily translatable to your preferred OS Distro and Version. Any contributions to provide support for your favorite distro are welcomed! Feel free to ",(0,s.jsx)(n.a,{href:"https://github.com/fleek-network",children:"open a PR"})," in our repositories."]})}),"\n",(0,s.jsx)(n.p,{children:"Because of the use of Linux containerization technology, other operating systems, such as FreeBSD, OpenBSD, MacOS, Windows and others are not supported."}),"\n",(0,s.jsx)(n.p,{children:"If you don\u2019t have a server or a spare machine, keep reading as we'll give you some hints on how to rent one, although we are not affiliated with any provider."}),"\n",(0,s.jsx)(n.h2,{id:"ports",children:"Ports"}),"\n",(0,s.jsx)(t.ZP,{}),"\n",(0,s.jsx)(n.h2,{id:"specs",children:"Specs"}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.p,{children:"The recommended number of CPU cores is a minimum of 4 with a minimum CPU speed of 2.0 GHz. The Fleek Network node binary is only supported on CPUs that adhere to the x86_64 architecture (64-bit)."}),"\n",(0,s.jsx)(n.p,{children:"A minimum of 32 GB of memory (RAM) is required and a reasonable amount of disk space for the installation and running processes, which at the minimum should be around 20 GB."}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["We're mainly supporting ",(0,s.jsx)(n.code,{children:"GenuineIntel"})," and there have been reports of failure to build the binary on ",(0,s.jsx)(n.code,{children:"AMD"}),". The ",(0,s.jsx)(n.code,{children:"ARM64"})," is a different architecture, thus not supported, but there has been some community contributions in that regard, find it in the reference ",(0,s.jsx)(n.a,{href:"/references/Lightning%20CLI/error-building-on-arm64",children:"error building on ARM64"}),"."]})}),"\n",(0,s.jsx)(o.Z,{name:"Helder Oliveira",image:"https://github.com/heldrida.png",title:"Software Developer + DX",url:"https://github.com/heldrida"})]})}function p(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},3872:(e,n,r)=>{r.d(n,{Z:()=>i});r(7294);var s=r(5893);const i=e=>{let{image:n,name:r,title:i,url:o,communityMember:t=!1}=e;return(0,s.jsx)("section",{className:"author_card",children:(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"avatar",children:(0,s.jsx)("a",{href:o,target:"_blank",alt:r,children:(0,s.jsx)("img",{src:n,alt:r})})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("span",{className:"name",children:(0,s.jsx)("a",{href:o,target:"_blank",alt:r,children:r})}),(0,s.jsx)("span",{className:"title",children:i}),(0,s.jsxs)("span",{className:"discord",children:[t?"Join our community on":"Got questions? Find us on"," ",(0,s.jsx)("a",{href:"https://discord.gg/fleekxyz",target:"_blank",children:"discord!"})]})]})]})})}},1151:(e,n,r)=>{r.d(n,{Z:()=>d,a:()=>t});var s=r(7294);const i={},o=s.createContext(i);function t(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),s.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/45ac3af8.59f3bef9.js b/assets/js/45ac3af8.cf7a9fd9.js
similarity index 87%
rename from assets/js/45ac3af8.59f3bef9.js
rename to assets/js/45ac3af8.cf7a9fd9.js
index 0987216ff..7ec52f6b7 100644
--- a/assets/js/45ac3af8.59f3bef9.js
+++ b/assets/js/45ac3af8.cf7a9fd9.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[5204],{5796:e=>{e.exports=JSON.parse('{"label":"systemctl","permalink":"/docs/tags/systemctl","allTagsPath":"/docs/tags","count":1,"items":[{"id":"node/systemd-service","title":"Systemd Service","description":"Systemd Service","permalink":"/docs/node/systemd-service"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[5204],{5796:e=>{e.exports=JSON.parse('{"label":"systemctl","permalink":"/docs/tags/systemctl","allTagsPath":"/docs/tags","count":1,"items":[{"id":"node/systemd-service","title":"Systemd Service","description":"Systemd Service","permalink":"/docs/node/systemd-service"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/45c86e35.7db05553.js b/assets/js/45c86e35.17e3d245.js
similarity index 93%
rename from assets/js/45c86e35.7db05553.js
rename to assets/js/45c86e35.17e3d245.js
index a98708a64..f4dafaab1 100644
--- a/assets/js/45c86e35.7db05553.js
+++ b/assets/js/45c86e35.17e3d245.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[9847],{2316:e=>{e.exports=JSON.parse('{"label":"about","permalink":"/docs/tags/about","allTagsPath":"/docs/tags","count":1,"items":[{"id":"learn/index","title":"Introduction","description":"Introduction to Fleek Network, a decentralized edge network. Learn its purpose, operation, and approach towards a decentralized infrastructure layer.","permalink":"/docs/learn/introduction"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[9847],{2316:e=>{e.exports=JSON.parse('{"label":"about","permalink":"/docs/tags/about","allTagsPath":"/docs/tags","count":1,"items":[{"id":"learn/index","title":"Introduction","description":"Introduction to Fleek Network, a decentralized edge network. Learn its purpose, operation, and approach towards a decentralized infrastructure layer.","permalink":"/docs/learn/introduction"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/45e1a117.149c1b9d.js b/assets/js/45e1a117.340acc3e.js
similarity index 88%
rename from assets/js/45e1a117.149c1b9d.js
rename to assets/js/45e1a117.340acc3e.js
index 61b0dd76b..cd1666930 100644
--- a/assets/js/45e1a117.149c1b9d.js
+++ b/assets/js/45e1a117.340acc3e.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[6696],{5382:e=>{e.exports=JSON.parse('{"label":"frozen","permalink":"/references/tags/frozen","allTagsPath":"/references/tags","count":1,"items":[{"id":"Systemd/shutting-down-persistance","title":"Shutting down persistance","description":"Systemd Service as frozen or idle","permalink":"/references/Systemd/shutting-down-persistance"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[6696],{5382:e=>{e.exports=JSON.parse('{"label":"frozen","permalink":"/references/tags/frozen","allTagsPath":"/references/tags","count":1,"items":[{"id":"Systemd/shutting-down-persistance","title":"Shutting down persistance","description":"Systemd Service as frozen or idle","permalink":"/references/Systemd/shutting-down-persistance"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/469c924f.1b5727ea.js b/assets/js/469c924f.9a76c610.js
similarity index 82%
rename from assets/js/469c924f.1b5727ea.js
rename to assets/js/469c924f.9a76c610.js
index 8131c123a..b13792cd7 100644
--- a/assets/js/469c924f.1b5727ea.js
+++ b/assets/js/469c924f.9a76c610.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[2240],{342:a=>{a.exports=JSON.parse('{"label":"Roadmap","permalink":"/docs/tags/roadmap","allTagsPath":"/docs/tags","count":1,"items":[{"id":"roadmap","title":"Roadmap","description":"Fleek Network\'s high-level roadmap per stage. Devnet, Testnet, and Mainnet.","permalink":"/docs/roadmap"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[2240],{342:a=>{a.exports=JSON.parse('{"label":"Roadmap","permalink":"/docs/tags/roadmap","allTagsPath":"/docs/tags","count":1,"items":[{"id":"roadmap","title":"Roadmap","description":"Fleek Network\'s high-level roadmap per stage. Devnet, Testnet, and Mainnet.","permalink":"/docs/roadmap"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/48857ff6.d7494b7e.js b/assets/js/48857ff6.ba1d9243.js
similarity index 91%
rename from assets/js/48857ff6.d7494b7e.js
rename to assets/js/48857ff6.ba1d9243.js
index 3fe81a65e..570db4bb3 100644
--- a/assets/js/48857ff6.d7494b7e.js
+++ b/assets/js/48857ff6.ba1d9243.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[2908],{1014:e=>{e.exports=JSON.parse('{"label":"Open source","permalink":"/docs/tags/open-source","allTagsPath":"/docs/tags","count":2,"items":[{"id":"Open-source/contributing","title":"Contributing","description":"Contributing","permalink":"/docs/Open-source/contributing"},{"id":"Open-source","title":"Open-source","description":"Fleek Network\'s codebase.","permalink":"/docs/Open-source"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[2908],{1014:e=>{e.exports=JSON.parse('{"label":"Open source","permalink":"/docs/tags/open-source","allTagsPath":"/docs/tags","count":2,"items":[{"id":"Open-source/contributing","title":"Contributing","description":"Contributing","permalink":"/docs/Open-source/contributing"},{"id":"Open-source","title":"Open-source","description":"Fleek Network\'s codebase.","permalink":"/docs/Open-source"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/48e81e49.381d2121.js b/assets/js/48e81e49.5ac56e34.js
similarity index 89%
rename from assets/js/48e81e49.381d2121.js
rename to assets/js/48e81e49.5ac56e34.js
index a527fb693..3f791ad9d 100644
--- a/assets/js/48e81e49.381d2121.js
+++ b/assets/js/48e81e49.5ac56e34.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[173],{5121:e=>{e.exports=JSON.parse('{"label":"incentives","permalink":"/docs/tags/incentives","allTagsPath":"/docs/tags","count":1,"items":[{"id":"learn/token-and-economics","title":"Token and economics","description":"Explore the preliminary breakdown of the Fleek Network\'s FLK token distribution, its integral role in node operations, the balance of economic incentives, and potential adjustments in pre-mainnet phases.","permalink":"/docs/learn/token-and-economics"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[173],{5121:e=>{e.exports=JSON.parse('{"label":"incentives","permalink":"/docs/tags/incentives","allTagsPath":"/docs/tags","count":1,"items":[{"id":"learn/token-and-economics","title":"Token and economics","description":"Explore the preliminary breakdown of the Fleek Network\'s FLK token distribution, its integral role in node operations, the balance of economic incentives, and potential adjustments in pre-mainnet phases.","permalink":"/docs/learn/token-and-economics"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/4972.0a28dda3.js b/assets/js/4972.0a28dda3.js
deleted file mode 100644
index 8cdab0c5e..000000000
--- a/assets/js/4972.0a28dda3.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[4972],{4972:(e,t,a)=>{a.r(t),a.d(t,{default:()=>c});var n=a(7294),l=a(5999),o=a(833),r=a(8888);function c(){return n.createElement(n.Fragment,null,n.createElement(o.d,{title:(0,l.I)({id:"theme.NotFound.title",message:"Page Not Found"})}),n.createElement(r.Z,null,n.createElement("main",{className:"container margin-vert--xl"},n.createElement("div",{className:"row"},n.createElement("div",{className:"col col--6 col--offset-3"},n.createElement("h1",{className:"hero__title"},n.createElement(l.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),n.createElement("p",null,n.createElement(l.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken.")))))))}}}]);
\ No newline at end of file
diff --git a/assets/js/49b5e83d.31ceddd4.js b/assets/js/49b5e83d.bb00ad8f.js
similarity index 85%
rename from assets/js/49b5e83d.31ceddd4.js
rename to assets/js/49b5e83d.bb00ad8f.js
index c25463033..87ec631f6 100644
--- a/assets/js/49b5e83d.31ceddd4.js
+++ b/assets/js/49b5e83d.bb00ad8f.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[402],{3969:a=>{a.exports=JSON.parse('{"label":"manual","permalink":"/docs/tags/manual","allTagsPath":"/docs/tags","count":1,"items":[{"id":"node/install","title":"Install","description":"The Fleek Network Lightning CLI installation walkthrough","permalink":"/docs/node/install"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[402],{3969:a=>{a.exports=JSON.parse('{"label":"manual","permalink":"/docs/tags/manual","allTagsPath":"/docs/tags","count":1,"items":[{"id":"node/install","title":"Install","description":"The Fleek Network Lightning CLI installation walkthrough","permalink":"/docs/node/install"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/4a821728.447bd46f.js b/assets/js/4a821728.3a30c2cd.js
similarity index 93%
rename from assets/js/4a821728.447bd46f.js
rename to assets/js/4a821728.3a30c2cd.js
index c86d1902d..99d11a1fa 100644
--- a/assets/js/4a821728.447bd46f.js
+++ b/assets/js/4a821728.3a30c2cd.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[9513],{9748:e=>{e.exports=JSON.parse('{"label":"whitepaper","permalink":"/docs/tags/whitepaper","allTagsPath":"/docs/tags","count":2,"items":[{"id":"learn/index","title":"Introduction","description":"Introduction to Fleek Network, a decentralized edge network. Learn its purpose, operation, and approach towards a decentralized infrastructure layer.","permalink":"/docs/learn/introduction"},{"id":"whitepaper","title":"Whitepaper","description":"Fleek Network\'s whitepaper and codebase.","permalink":"/docs/whitepaper"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[9513],{9748:e=>{e.exports=JSON.parse('{"label":"whitepaper","permalink":"/docs/tags/whitepaper","allTagsPath":"/docs/tags","count":2,"items":[{"id":"learn/index","title":"Introduction","description":"Introduction to Fleek Network, a decentralized edge network. Learn its purpose, operation, and approach towards a decentralized infrastructure layer.","permalink":"/docs/learn/introduction"},{"id":"whitepaper","title":"Whitepaper","description":"Fleek Network\'s whitepaper and codebase.","permalink":"/docs/whitepaper"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/4beaa780.28992a2f.js b/assets/js/4beaa780.9c9386ab.js
similarity index 82%
rename from assets/js/4beaa780.28992a2f.js
rename to assets/js/4beaa780.9c9386ab.js
index af03ad97a..3c2750250 100644
--- a/assets/js/4beaa780.28992a2f.js
+++ b/assets/js/4beaa780.9c9386ab.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[5081],{380:e=>{e.exports=JSON.parse('{"label":"reputation","permalink":"/docs/tags/reputation","allTagsPath":"/docs/tags","count":1,"items":[{"id":"learn/the-network","title":"The Network","description":"Explore Fleek Network\u2019s core protocol, its architecture, and unique characteristics as a decentralized edge network.","permalink":"/docs/learn/the-network"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[5081],{380:e=>{e.exports=JSON.parse('{"label":"reputation","permalink":"/docs/tags/reputation","allTagsPath":"/docs/tags","count":1,"items":[{"id":"learn/the-network","title":"The Network","description":"Explore Fleek Network\u2019s core protocol, its architecture, and unique characteristics as a decentralized edge network.","permalink":"/docs/learn/the-network"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/4c027320.0ae961df.js b/assets/js/4c027320.9f0993f7.js
similarity index 95%
rename from assets/js/4c027320.0ae961df.js
rename to assets/js/4c027320.9f0993f7.js
index a7ba2bf22..e4d92ec6a 100644
--- a/assets/js/4c027320.0ae961df.js
+++ b/assets/js/4c027320.9f0993f7.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[9511],{2564:t=>{t.exports=JSON.parse('{"label":"Getting Started","permalink":"/guides/tags/getting-started","allTagsPath":"/guides/tags","count":1,"items":[{"id":"Node Operators/getting-started-guide","title":"Getting Started","description":"A first look at what Fleek Network is, why it\'s important, and a simple tutorial of running and interacting with a node on your local machine!","permalink":"/guides/Node Operators/getting-started"}]}')}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[9511],{2564:t=>{t.exports=JSON.parse('{"label":"Getting Started","permalink":"/guides/tags/getting-started","allTagsPath":"/guides/tags","count":1,"items":[{"id":"Node Operators/getting-started-guide","title":"Getting Started","description":"A first look at what Fleek Network is, why it\'s important, and a simple tutorial of running and interacting with a node on your local machine!","permalink":"/guides/Node Operators/getting-started"}],"unlisted":false}')}}]);
\ No newline at end of file
diff --git a/assets/js/4c9535f7.6cbde464.js b/assets/js/4c9535f7.6cbde464.js
new file mode 100644
index 000000000..86918f8d3
--- /dev/null
+++ b/assets/js/4c9535f7.6cbde464.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkdocta=self.webpackChunkdocta||[]).push([[6296],{9237:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>p,frontMatter:()=>c,metadata:()=>l,toc:()=>u});var i=t(5893),r=t(1151),o=t(3872),s=t(3183),a=t(8432);const c={title:"Running a node in Docker",hide_title:!0,slug:"running-a-node-in-docker",image:"./assets/running-a-node-in-docker.png?202311181211",date:new Date("2023-09-18T17:00:00.000Z"),description:"A guide on how to run Fleek Network's node in a Docker container",category:"Tutorial",tags:["guide","docker","container"]},d=void 0,l={id:"Node Operators/running-a-node-in-docker",title:"Running a node in Docker",description:"A guide on how to run Fleek Network's node in a Docker container",source:"@site/guides/Node Operators/running-a-node-in-docker.md",sourceDirName:"Node Operators",slug:"/Node Operators/running-a-node-in-docker",permalink:"/guides/Node Operators/running-a-node-in-docker",draft:!1,unlisted:!1,editUrl:"https://github.com/fleek-network/fleek-network-docs/edit/main/guides/Node Operators/running-a-node-in-docker.md",tags:[{label:"guide",permalink:"/guides/tags/guide"},{label:"docker",permalink:"/guides/tags/docker"},{label:"container",permalink:"/guides/tags/container"}],version:"current",lastUpdatedAt:1698861793,formattedLastUpdatedAt:"Nov 1, 2023",frontMatter:{title:"Running a node in Docker",hide_title:!0,slug:"running-a-node-in-docker",image:"./assets/running-a-node-in-docker.png?202311181211",date:"2023-09-18T17:00:00.000Z",description:"A guide on how to run Fleek Network's node in a Docker container",category:"Tutorial",tags:["guide","docker","container"]},sidebar:"defaultSidebar",previous:{title:"Managing the keystore",permalink:"/guides/Node Operators/managing-the-keystore"},next:{title:"Transfering setup ownership",permalink:"/guides/Node Operators/transfering-setup-ownership"}},h={image:t(3451).Z},u=[{value:"Introduction",id:"introduction",level:2},{value:"Pre-requisites",id:"pre-requisites",level:2},{value:"For the impatient",id:"for-the-impatient",level:2},{value:"Pull and run image",id:"pull-and-run-image",level:3},{value:"Setup",id:"setup",level:2},{value:"Requirements",id:"requirements",level:3},{value:"Create a user",id:"create-a-user",level:3},{value:"Lightning CLI source code",id:"lightning-cli-source-code",level:3},{value:"Change directory to Lightning source code",id:"change-directory-to-lightning-source-code",level:3},{value:"Install Docker",id:"install-docker",level:3},{value:"Create the Docker image",id:"create-the-docker-image",level:3},{value:"Build the Docker image",id:"build-the-docker-image",level:3},{value:"Docker Container",id:"docker-container",level:2},{value:"Generate keys",id:"generate-keys",level:2},{value:"Run the Docker Container as Systemd Service",id:"run-the-docker-container-as-systemd-service",level:2},{value:"Create the Systemd Service Unit",id:"create-the-systemd-service-unit",level:3},{value:"Viewing logs",id:"viewing-logs",level:2},{value:"Conclusion",id:"conclusion",level:2}];function g(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Running a node in Docker",src:t(8597).Z+"",width:"1450",height:"816"})}),"\n","\n","\n",(0,i.jsx)(n.h2,{id:"introduction",children:"Introduction"}),"\n",(0,i.jsxs)(n.p,{children:["Our ",(0,i.jsx)(n.a,{href:"https://www.docker.com/",children:"Docker"})," ",(0,i.jsx)(n.a,{href:"https://docs.docker.com/engine/reference/commandline/images/",children:"image"})," provides all the requirements to have Fleek Network running quickly and the following guide will provide you a quick reference to get you started with Docker."]}),"\n",(0,i.jsxs)(n.p,{children:["Alternatively, if you need a deep dive into Docker, check the official getting started ",(0,i.jsx)(n.a,{href:"https://docs.docker.com/get-started/",children:"here"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["TL;DR If you have Docker experience then you'll find our ",(0,i.jsx)(n.a,{href:"#for-the-impatient",children:"for the impatient"})," sufficient to get started."]}),"\n",(0,i.jsx)(n.h2,{id:"pre-requisites",children:"Pre-requisites"}),"\n",(0,i.jsx)(n.p,{children:"To follow the guide, you will need the following:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Familiarity with the command-line interface"}),"\n",(0,i.jsx)(n.li,{children:"Git"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"for-the-impatient",children:"For the impatient"}),"\n",(0,i.jsxs)(n.p,{children:["Building a Docker image requires some effort and some of our users might find it easier to pull our ",(0,i.jsx)(n.a,{href:"https://github.com/fleek-network/lightning/pkgs/container/lightning",children:"latest image"})," for quick access to Lightning CLI, which doesn't require them to build from source."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["The Docker Container image for Lightning is located at ",(0,i.jsx)(n.a,{href:"https://github.com/fleek-network/lightning/pkgs/container/lightning",children:"https://github.com/fleek-network/lightning/pkgs/container/lightning"}),"."]})}),"\n",(0,i.jsx)(n.h3,{id:"pull-and-run-image",children:"Pull and run image"}),"\n",(0,i.jsx)(n.p,{children:"You can pull and run the Lightning pre-built Docker image from our GitHub and run the Docker container quickly by executing the following command:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo docker run \\\n -p 4200-4299:4200-4299 \\\n -p 4300-4399:4300-4399 \\\n --mount type=bind,source=$HOME/.lightning,target=/home/lgtn/.lightning \\\n --mount type=bind,source=/var/tmp,target=/var/tmp \\\n --name lightning-node \\\n -it ghcr.io/fleek-network/lightning:latest\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Keys have to be generated when launching the service. On Docker run, if the ",(0,i.jsx)(n.a,{href:"/guides/Node%20Operators/managing-the-keystore",children:"keystore"})," is not found, the keys are automatically generated and stored in the Docker host's ",(0,i.jsx)(n.code,{children:"$HOME/.lightning/keystore"})," directory. To learn more about how to manage the keystore, visit the ",(0,i.jsx)(n.a,{href:"/guides/Node%20Operators/managing-the-keystore",children:"managing keystore"})," section."]})}),"\n",(0,i.jsx)(n.admonition,{title:"warning",type:"caution",children:(0,i.jsxs)(n.p,{children:["The Docker image is tied to a CPU architecture, make sure that you have verified the ",(0,i.jsx)(n.a,{href:"/docs/node/requirements#specs",children:"required"})," specifications to run the container successfully."]})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["The command has a list of ports ",(0,i.jsx)(n.code,{children:"-p"})," values that map ports in the container on the Docker host. While we try to keep the information across our documentation in sync with the latest changes or requirements e.g. port number changes, make sure that you check the section ",(0,i.jsx)(n.a,{href:"/docs/node/requirements#ports",children:"ports"})," to find the latest updates."]})}),"\n",(0,i.jsx)(n.h2,{id:"setup",children:"Setup"}),"\n",(0,i.jsx)(n.h3,{id:"requirements",children:"Requirements"}),"\n",(0,i.jsx)(n.p,{children:"To follow the guide successfully, a good amount of memory and disk space is necessary to run Docker. The main reason for our use-case is that your host machine requires a generous amount of memory and disk space, for the containers."}),"\n",(0,i.jsxs)(n.p,{children:["For this guide, we used a server with the 4vCPU, 32\xa0GB ram memory and 20 GB disk space specifications. Learn more about the recommended specifications ",(0,i.jsx)(n.a,{href:"/docs/node/requirements",children:"here"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"create-a-user",children:"Create a user"}),"\n",(0,i.jsx)(a.ZP,{}),"\n",(0,i.jsx)(n.h3,{id:"lightning-cli-source-code",children:"Lightning CLI source code"}),"\n",(0,i.jsxs)(n.p,{children:["Start by cloning the repository located at ",(0,i.jsx)(n.a,{href:"https://github.com/fleek-network/lightning",children:"https://github.com/fleek-network/lightning"}),"."]}),"\n",(0,i.jsx)(s.ZP,{}),"\n",(0,i.jsx)(n.h3,{id:"change-directory-to-lightning-source-code",children:"Change directory to Lightning source code"}),"\n",(0,i.jsxs)(n.p,{children:["If you have cloned the project correctly, you should ",(0,i.jsx)(n.code,{children:"change directory"})," to the project source code directory which by default is ",(0,i.jsx)(n.code,{children:"~/fleek-network/lightning"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"cd ~/fleek-network/lightning\n"})}),"\n",(0,i.jsxs)(n.p,{children:["At time of writing, this is how the project root looks like (e.g. use the ",(0,i.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Ls",children:"ls"})," to see the list):"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:".\n\u251c\u2500\u2500 CODE_OF_CONDUCT.md\n\u251c\u2500\u2500 CONTRIBUTING.md\n\u251c\u2500\u2500 Cargo.lock\n\u251c\u2500\u2500 Cargo.toml\n\u251c\u2500\u2500 Dockerfile\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 README.md\n\u251c\u2500\u2500 codecov.yml\n\u251c\u2500\u2500 core\n\u251c\u2500\u2500 docs\n\u251c\u2500\u2500 etc\n\u251c\u2500\u2500 lib\n\u251c\u2500\u2500 rust-toolchain\n\u251c\u2500\u2500 rustfmt.toml\n\u251c\u2500\u2500 services\n\u2514\u2500\u2500 target\n"})}),"\n",(0,i.jsx)(n.h3,{id:"install-docker",children:"Install Docker"}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["To keep our guide short, we're using Ubuntu Linux. You'll have to make the required tweaks for your preferred Linux Distro. Find the list of support operating systems ",(0,i.jsx)(n.a,{href:"/docs/node/requirements#server",children:"here"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:"First, update the existing list of packages:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo apt update\n"})}),"\n",(0,i.jsx)(n.p,{children:"Next, install the required packages to let apt use packages over HTTPS:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo apt install apt-transport-https ca-certificates software-properties-common\n"})}),"\n",(0,i.jsx)(n.p,{children:"Add the GPG key for the official Docker repository to your system:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -\n"})}),"\n",(0,i.jsx)(n.p,{children:"Add the Docker repository to apt sources and update the package database with the Docker packages from the new added repository:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable"\n'})}),"\n",(0,i.jsx)(n.p,{children:"Set to install from the Docker repo instead of the default Ubuntu repo:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"apt-cache policy docker-ce\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"docker-ce:\n Installed: (none)\n Candidate: 5:24.0.6-1~ubuntu.22.04~jammy\n Version table:\n 5:24.0.6-1~ubuntu.22.04~jammy 500\n 500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages\n 5:24.0.6-1~ubuntu.22.04~jammy 500\n"})}),"\n",(0,i.jsx)(n.p,{children:"Finally, install Docker:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo apt install docker-ce\n"})}),"\n",(0,i.jsx)(n.p,{children:"Once complete you should be able to run it via the CLI, as such:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"docker -v\n"})}),"\n",(0,i.jsx)(n.p,{children:"Here's the output (versions might differ a bit from the time of writing):"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"Docker version 24.0.6, build ed223bc\n"})}),"\n",(0,i.jsx)(n.p,{children:"The following command's output will indicate if Docker's working correctly:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo docker run hello-world\n"})}),"\n",(0,i.jsx)(n.p,{children:"Here's an example of the output you'll find us \"Hello from Docker!\":"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:'Hello from Docker!\nThis message shows that your installation appears to be working correctly.\n\nTo generate this message, Docker took the following steps:\n 1. The Docker client contacted the Docker daemon.\n 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.\n (amd64)\n 3. The Docker daemon created a new container from that image which runs the\n executable that produces the output you are currently reading.\n 4. The Docker daemon streamed that output to the Docker client, which sent it\n to your terminal.\n\nTo try something more ambitious, you can run an Ubuntu container with:\n $ docker run -it ubuntu bash\n\nShare images, automate workflows, and more with a free Docker ID:\n https://hub.docker.com/\n\nFor more examples and ideas, visit:\n https://docs.docker.com/get-started/\n'})}),"\n",(0,i.jsx)(n.p,{children:"Run all the commands above in your terminal, to confirm everything's working before proceeding to the next steps."}),"\n",(0,i.jsx)(n.h3,{id:"create-the-docker-image",children:"Create the Docker image"}),"\n",(0,i.jsx)(n.p,{children:"A Docker image is a read-only template with instructions for creating a Docker container, like a template. Docker images also act as a starting point when using Docker."}),"\n",(0,i.jsx)(n.p,{children:'The starting point for our use-case is a Dockerfile, where all those "template instructions" are declared.'}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.a,{href:"https://raw.githubusercontent.com/fleek-network/lightning/main/Dockerfile",children:"Dockerfile"})," should exist in the repository source code, so make sure you have ",(0,i.jsx)(n.a,{href:"#change-directory-to-lightning-source-code",children:"change directory to the lightning source code"})," to find it."]}),"\n",(0,i.jsx)(n.h3,{id:"build-the-docker-image",children:"Build the Docker image"}),"\n",(0,i.jsxs)(n.p,{children:["Build the image named as ",(0,i.jsx)(n.code,{children:"lightning"})," from our Dockerfile:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo docker build -t lightning -f ./Dockerfile .\n"})}),"\n",(0,i.jsx)(n.p,{children:"The build process takes awhile, and you have to wait for completion."}),"\n",(0,i.jsx)(n.p,{children:"The output should be similar to:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"[+] Building 1.2s (16/16) FINISHED docker:default\n => [internal] load build definition from Dockerfile 0.0s\n => => transferring dockerfile: 990B 0.0s\n => [internal] load .dockerignore 0.0s\n => => transferring context: 2B 0.0s\n => [internal] load metadata for docker.io/library/debian:bullseye-slim 0.6s\n => [internal] load metadata for docker.io/library/rust:latest 0.9s\n => [stage-1 1/3] FROM docker.io/library/debian:bullseye-slim@sha256:3bc5e94a0e8329c102203c3f5f26fd67835f0c81633dd6949de0557867a87fac 0.0s\n => [builder 1/7] FROM docker.io/library/rust:latest@sha256:8a4ca3ca75afbc97bcf5362e9a694fe049d15734fbbaf82b8b7e224616c1254b 0.0s\n => [internal] load build context 0.3s\n => => transferring context: 948.93kB 0.3s\n => CACHED [stage-1 2/3] RUN DEBIAN_FRONTEND=noninteractive apt-get update -yq && DEBIAN_FRONTEND=noninteractive apt-get install -yq libs 0.0s\n => CACHED [builder 2/7] WORKDIR /lightning 0.0s\n => CACHED [builder 3/7] RUN apt-get update 0.0s\n => CACHED [builder 4/7] RUN apt-get install -y build-essential cmake clang pkg-config libssl-dev gcc protobuf-comp 0.0s\n => CACHED [builder 5/7] RUN --mount=type=cache,target=/usr/local/cargo/registry cargo install cargo-strip 0.0s\n => CACHED [builder 6/7] COPY . . 0.0s\n => CACHED [builder 7/7] RUN --mount=type=cache,target=/usr/local/cargo/registry --mount=type=cache,target=/lightning/target cargo buil 0.0s\n => CACHED [stage-1 3/3] COPY --from=builder /lightning/target/release/lightning-node /usr/local/bin/lgtn 0.0s\n => exporting to image 0.0s\n => => exporting layers 0.0s\n => => writing image sha256:e8e5ed19f59c3cc6a9add5bdb578c464904e9789d5f386cc4af81044c062d998 0.0s\n => => naming to docker.io/library/lightning\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["The Docker image is only required to be built once and/or, when changes are pulled from the remote repository, or specific versions you might be interested in. Otherwise, you're not required to build it every time to run the node. If you'd like to learn how to update the Lightning CLI, find our references ",(0,i.jsx)(n.a,{href:"/references/Lightning%20CLI/update-cli-from-source-code",children:"here"}),"."]})}),"\n",(0,i.jsx)(n.admonition,{type:"caution",children:(0,i.jsx)(n.p,{children:"If you don't update your source code and binary build often, you won't have the latest changes, which should happen frequently to take advantage of all the ongoing development. This is quite important to understand, as it causes confusion to some users. The Lightning application at time of writing does not update automatically."})}),"\n",(0,i.jsx)(n.h2,{id:"docker-container",children:"Docker Container"}),"\n",(0,i.jsxs)(n.p,{children:["A container is what's originated from the image we discussed in the section ",(0,i.jsx)(n.a,{href:"#build-the-docker-image",children:"build the docker image"}),", it is a run-able instance of an image. We can create, start, stop, move, or delete a container using the Docker API or CLI."]}),"\n",(0,i.jsx)(n.p,{children:"Following up, we'll learn how to run the Docker container that includes our Lightning CLI program, built from our Dockerfile."}),"\n",(0,i.jsxs)(n.p,{children:["Once the ",(0,i.jsx)(n.a,{href:"#build-the-docker-image",children:"Docker image"})," is ready, run the container based on the image ",(0,i.jsx)(n.code,{children:"lightning"}),". Effectively running the Fleek Network Lightning node process:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo docker run \\\n -p 4200-4299:4200-4299 \\\n -p 4300-4399:4300-4399 \\\n --mount type=bind,source=$HOME/.lightning,target=/home/lgtn/.lightning \\\n --mount type=bind,source=/var/tmp,target=/var/tmp \\\n --name lightning-node \\\n -it ghcr.io/fleek-network/lightning:latest\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["Notice that the command arguments we pass are for the flag's ",(0,i.jsx)(n.code,{children:"-p"})," port numbers, ",(0,i.jsx)(n.code,{children:"-v"})," to bind mount a location in your host to a container path (useful to persist your configuration files, e.g. keystore), ",(0,i.jsx)(n.code,{children:"--name"})," to make it easier to identify, ",(0,i.jsx)(n.code,{children:"-it"})," to make it interactive (e.g. presents output to the terminal), and the image name we ",(0,i.jsx)(n.a,{href:"#build-the-docker-image",children:"built earlier"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:'The output would look as the following, showing the error message "Node is not whitelisted" (this error message is due to the testnet phase that requires nodes to be whitelisted to run successfully):'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"thread 'main' panicked at 'Node is not whitelisted. Please join the Fleek Discord to get invited.', core/cli/src/testnet_sync.rs:45:9\nnote: run with `RUST_BACKTRACE=1` environment variable to display a backtrace\n/root/init: line 7: 7 Aborted (core dumped) lgtn run\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Keys have to be generated when launching the service. On Docker run, if the ",(0,i.jsx)(n.a,{href:"/guides/Node%20Operators/managing-the-keystore",children:"keystore"})," is not found, the keys are automatically generated and stored in the Docker host's ",(0,i.jsx)(n.code,{children:"$HOME/.lightning/keystore"})," directory."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["Have in mind that the ",(0,i.jsx)(n.code,{children:"$HOME/.lightning/config.toml"})," is where the keystore location paths are configured, which default value is in the user ",(0,i.jsx)(n.code,{children:"$HOME"})," path. The users who customize or modify the default location, need to apply the required customizations. To learn more about how to manage the keystore, visit the ",(0,i.jsx)(n.a,{href:"/guides/Node%20Operators/managing-the-keystore",children:"managing keystore"})," section."]})}),"\n",(0,i.jsx)(n.h2,{id:"generate-keys",children:"Generate keys"}),"\n",(0,i.jsxs)(n.p,{children:["Execute the ",(0,i.jsx)(n.code,{children:"keys generate"})," command on the container ",(0,i.jsx)(n.code,{children:"lightning-node"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo docker exec -it lightning-node lgtn keys generate\n"})}),"\n",(0,i.jsxs)(n.p,{children:["We've bound the host path ",(0,i.jsx)(n.code,{children:"~/.lightning"})," into the container ",(0,i.jsx)(n.code,{children:"/home/lgtn/.lightning"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["You can list the contents of the ",(0,i.jsx)(n.code,{children:"~/.lightning"}),", where you should find the ",(0,i.jsx)(n.code,{children:"config.toml"})," and ",(0,i.jsx)(n.code,{children:"keystore"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:".\n..\nconfig.toml\nkeystore\n"})}),"\n",(0,i.jsxs)(n.p,{children:["You only have to run the ",(0,i.jsx)(n.code,{children:"keys generate"})," once from your host."]}),"\n",(0,i.jsx)(n.p,{children:"Finally, you can start the Fleek Network node by running the command:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo docker start lightning-node\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["The ",(0,i.jsx)(n.code,{children:"lightning-node"})," is the name we provided on first run as described in ",(0,i.jsx)(n.a,{href:"#docker-container",children:"docker container"})," section. If you have set a different name, change accordingly."]})}),"\n",(0,i.jsx)(n.h2,{id:"run-the-docker-container-as-systemd-service",children:"Run the Docker Container as Systemd Service"}),"\n",(0,i.jsxs)(n.p,{children:["In this section we\u2019ll cover how to wrap a Docker Container as a Systemd Service without the need for third party tools or complex commands. Some reasons include, minimizing the dependency on the Docker Daemon as we can move to an ",(0,i.jsx)(n.a,{href:"https://opencontainers.org/",children:"OCI complaint solution"})," other that Docker at anytime, or the fact we recommend Systemd Service Units and Systemctl to control the Service in our ",(0,i.jsx)(n.a,{href:"/docs/node/install",children:"Native install"})," that most users are familiar. Our goal is to provide guidance to the widest audience possible, if you have other preferences on managing your service that is more fitting to your needs that's fine."]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["Docker recommends using their cross-platform built-in restart policy for running a Container as a Service. For that, configure your Docker service to ",(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/linux/linux-postinstall/#configure-docker-to-start-on-boot",children:"start on system boot"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:"Systemd was specifically developed to serve the purpose of stopping services, dependency checking and recovery of failed services. You can have your host start, stop, enable, check the status, and generally manage a container as a Systemd Service."}),"\n",(0,i.jsx)(n.h3,{id:"create-the-systemd-service-unit",children:"Create the Systemd Service Unit"}),"\n",(0,i.jsxs)(n.p,{children:["We are going to create the unit configuration file in the /etc/systemd/system/ directory. The Service Unit is going to be named as ",(0,i.jsx)(n.code,{children:"docker-lightning.service"}),". To create the file run the following command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo touch /etc/systemd/system/docker-lightning.service\n"})}),"\n",(0,i.jsx)(n.p,{children:"Open the file in your favorite text editor and populate with the content found here:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"[Unit]\nDescription=Fleek Network Node lightning service\nAfter=docker.service\nRequires=docker.service\n\n[Service]\nRestart=always\nRestartSec=5\nTimeoutStartSec=0\nExecStartPre=-/usr/bin/docker kill lightning-node\nExecStartPre=-/usr/bin/docker rm lightning-node\nExecStartPre=/usr/bin/docker pull ghcr.io/fleek-network/lightning:latest\nExecStart=/usr/bin/docker run -p 4200-4299:4200-4299 -p 4300-4399:4300-4399 --mount type=bind,source=/home/skywalker/.lightning,target=/home/lgtn/.lightning --mount type=bind,source=/var/tmp,target=/var/tmp --name lightning-node ghcr.io/fleek-network/lightning:latest\nExecStop=/usr/bin/docker stop lightning-node\nStandardOutput=append:/var/log/lightning/output.log\nStandardError=append:/var/log/lightning/diagnostic.log\n\n[Install]\nWantedBy=multi-user.target\n"})}),"\n",(0,i.jsx)(n.p,{children:"Once the file is saved, change the file permissions by running the command:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo chmod 644 /etc/systemd/system/docker-lightning.service\n"})}),"\n",(0,i.jsx)(n.p,{children:"Next, reload the Systemctl Daemon:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo systemctl daemon-reload\n"})}),"\n",(0,i.jsx)(n.p,{children:"Enable the service on startup when the system boots:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo systemctl enable docker-lightning.service\n"})}),"\n",(0,i.jsxs)(n.p,{children:["As a result, we are now able to run our containers as a Systemd service. For this, read the document ",(0,i.jsx)(n.a,{href:"/docs/node/install#use-systemctl-to-manage-systemd-service",children:"manage systemd service"})," to find more about how to control the service."]}),"\n",(0,i.jsx)(n.h2,{id:"viewing-logs",children:"Viewing logs"}),"\n",(0,i.jsx)(n.p,{children:"To view the logs of a Docker container in real time, use the following command:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo docker logs -f lightning-node\n"})}),"\n",(0,i.jsxs)(n.p,{children:["If you have wrapped the ",(0,i.jsx)(n.a,{href:"#run-the-docker-container-as-systemd-service",children:"docker container as a systemd service"}),", you can use the same commands found when installed natively, such as:"]}),"\n",(0,i.jsx)(n.p,{children:"For standard output:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"tail -f /var/log/lightning/output.log\n"})}),"\n",(0,i.jsx)(n.p,{children:"Or, the standard error:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"tail -f /var/log/lightning/diagnostic.log\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Learn more about how to ",(0,i.jsx)(n.a,{href:"/docs/node/analyzing-logs",children:"analyze log messages"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"conclusion",children:"Conclusion"}),"\n",(0,i.jsx)(n.p,{children:"Containers are a way to have a self-contained environment that includes all necessary dependencies, libraries, software, amongst others required to run an application."}),"\n",(0,i.jsxs)(n.p,{children:["Fleek Network's Lightning is developed with ",(0,i.jsx)(n.a,{href:"https://www.rust-lang.org/",children:"Rust"}),", a general-purpose programming language, that requires several dependencies and libraries to compile the project. Some of these libraries are not installed by default and require some troubleshooting for the end user. ",(0,i.jsx)(n.a,{href:"https://www.docker.com/",children:"Docker"})," provides us with containers, self-containing all the required libraries for the purpose of running Lightning, our application."]}),"\n",(0,i.jsxs)(n.p,{children:["We guided you through the initial installation steps, and how to build a ",(0,i.jsx)(n.a,{href:"https://www.docker.com/",children:"Docker"})," image, which then's used to Docker run a container. Plus, provided lower-level commands, to help you understand other present or advanced use-cases, and also at higher level, offerring simple utility methods."]}),"\n",(0,i.jsxs)(n.p,{children:["While we do our best to provide the clearest instructions, there's always space for improvement, therefore feel free to make any contributions by messaging us on our ",(0,i.jsx)(n.a,{href:"https://discord.gg/fleekxyz",children:"Discord"})," or by opening a ",(0,i.jsx)(n.a,{href:"https://github.com/fleek-network",children:"PR"})," in any of our repositories."]}),"\n",(0,i.jsxs)(n.p,{children:["Discover more about the project by ",(0,i.jsx)(n.a,{href:"https://github.com/fleek-network/lightning",children:"watching/contributing on Github"}),", following us on ",(0,i.jsx)(n.a,{href:"https://twitter.com/fleek_net",children:"Twitter"}),", and joining ",(0,i.jsx)(n.a,{href:"https://discord.gg/fleekxyz",children:"our community Discord"})," for all the best updates!"]}),"\n",(0,i.jsx)(o.Z,{name:"Helder Oliveira",image:"https://github.com/heldrida.png",title:"Software Developer + DX",url:"https://github.com/heldrida"})]})}function p(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(g,{...e})}):g(e)}},8432:(e,n,t)=>{t.d(n,{ZP:()=>s});var i=t(5893),r=t(1151);function o(e){const n={admonition:"admonition",code:"code",p:"p",pre:"pre",strong:"strong",...(0,r.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["We recommend creating a ",(0,i.jsx)(n.code,{children:"non-root"})," user with administrative privileges. It'll allow us to install any system requirements."]}),"\n",(0,i.jsxs)(n.p,{children:["You can create a new user and add to the ",(0,i.jsx)(n.strong,{children:"sudo"})," group by running:"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["For our example, we'll be using the name ",(0,i.jsx)(n.code,{children:"lgtn"})," but you can pick whichever you'd like. If you already have a ",(0,i.jsx)(n.strong,{children:"sudoer"})," account, you can skip this step."]})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo adduser lgtn\n"})}),"\n",(0,i.jsxs)(n.p,{children:["After completing the ",(0,i.jsx)(n.code,{children:"adduser"})," steps, execute the ",(0,i.jsx)(n.code,{children:"usermod"})," to add the ",(0,i.jsx)(n.code,{children:"user"})," to the ",(0,i.jsx)(n.strong,{children:"sudo"})," group, as follows:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"sudo usermod -aG sudo lgtn\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Switch to the new ",(0,i.jsx)(n.strong,{children:"user"})," by using the command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"su lgtn\n"})}),"\n",(0,i.jsx)(n.p,{children:"Change the directory to the new user's home, as follows:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"cd /home/lgtn\n"})})]})}function s(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(o,{...e})}):o(e)}},3183:(e,n,t)=>{t.d(n,{ZP:()=>s});var i=t(5893),r=t(1151);function o(e){const n={a:"a",admonition:"admonition",code:"code",li:"li",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsx)(n.p,{children:"You have several ways of doing this:"}),(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Clone via HTTPS"}),"\n",(0,i.jsx)(n.li,{children:"Clone via SSH"}),"\n",(0,i.jsx)(n.li,{children:"Download via Github CLI"}),"\n",(0,i.jsxs)(n.li,{children:["Download the ",(0,i.jsx)(n.a,{href:"https://github.com/fleek-network/lightning/archive/refs/heads/main.zip",children:"zip package"})," from the repository"]}),"\n"]}),(0,i.jsxs)(n.p,{children:["We recommend HTTPS because it is the easiest to set up in the wild, and by users who are new to all this.\nAlthough, we strongly recommend using an SSH connection when interacting with GitHub. If you are to this and are interested read more about it ",(0,i.jsx)(n.a,{href:"https://docs.github.com/en/authentication/connecting-to-github-with-ssh",children:"here"}),"."]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-sh",children:"git clone -b testnet-alpha-1 https://github.com/fleek-network/lightning.git