[{"data":1,"prerenderedAt":231},["ShallowReactive",2],{"navigation":3,"\u002Fself-hosting\u002Foverview":87,"\u002Fself-hosting\u002Foverview-surround":226},[4,32,51,69],{"title":5,"path":6,"stem":7,"children":8,"icon":31},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11,15,19,23,27],{"title":10,"path":6,"stem":7},"What is this?",{"title":12,"path":13,"stem":14},"Before You Begin","\u002Fgetting-started\u002Fbefore-you-begin","1.getting-started\u002F2.before-you-begin",{"title":16,"path":17,"stem":18},"Install the Apps","\u002Fgetting-started\u002Finstall","1.getting-started\u002F3.install",{"title":20,"path":21,"stem":22},"Your First Family Tree","\u002Fgetting-started\u002Fyour-first-tree","1.getting-started\u002F4.your-first-tree",{"title":24,"path":25,"stem":26},"Invite Family Members","\u002Fgetting-started\u002Finvite-family","1.getting-started\u002F5.invite-family",{"title":28,"path":29,"stem":30},"Connect Family Branches","\u002Fgetting-started\u002Fconnect-branches","1.getting-started\u002F6.connect-branches","i-lucide-footprints",{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":50},"Apps","i-lucide-smartphone","\u002Fapps","2.apps",[38,42,46],{"title":39,"path":40,"stem":41},"Iwacu — Family Tree","\u002Fapps\u002Fiwacu","2.apps\u002F1.iwacu",{"title":43,"path":44,"stem":45},"Isoko — Local Marketplace","\u002Fapps\u002Fisoko","2.apps\u002F2.isoko",{"title":47,"path":48,"stem":49},"Abantu — Community Governance","\u002Fapps\u002Fabantu","2.apps\u002F3.abantu",false,{"title":52,"icon":53,"path":54,"stem":55,"children":56,"page":50},"Self-Hosting","i-lucide-server","\u002Fself-hosting","3.self-hosting",[57,61,65],{"title":58,"path":59,"stem":60},"Self-Hosting Overview","\u002Fself-hosting\u002Foverview","3.self-hosting\u002F1.overview",{"title":62,"path":63,"stem":64},"Deploy the Relay Server","\u002Fself-hosting\u002Frelay","3.self-hosting\u002F2.relay",{"title":66,"path":67,"stem":68},"Configure Tor Hidden Service","\u002Fself-hosting\u002Ftor","3.self-hosting\u002F3.tor",{"title":70,"icon":71,"path":72,"stem":73,"children":74,"page":50},"Privacy & Security","i-lucide-shield","\u002Fprivacy","4.privacy",[75,79,83],{"title":76,"path":77,"stem":78},"How Privacy Works Here","\u002Fprivacy\u002Fhow-it-works","4.privacy\u002F1.how-it-works",{"title":80,"path":81,"stem":82},"Device Security","\u002Fprivacy\u002Fdevice","4.privacy\u002F2.device",{"title":84,"path":85,"stem":86},"Under Pressure","\u002Fprivacy\u002Fcoercion","4.privacy\u002F3.coercion",{"id":88,"title":58,"body":89,"description":219,"extension":220,"links":221,"meta":222,"navigation":223,"path":59,"seo":224,"stem":60,"__hash__":225},"docs\u002F3.self-hosting\u002F1.overview.md",{"type":90,"value":91,"toc":210},"minimark",[92,96,100,103,106,111,114,136,139,143,146,158,161,165,184,187,191],[93,94,58],"h1",{"id":95},"self-hosting-overview",[97,98,99],"p",{},"The apps work without a relay server. Invitations can be exchanged in person via QR code, and tree merges happen peer-to-peer.",[97,101,102],{},"The relay server adds one capability: distributing encrypted invitations over the internet. This lets you invite someone remotely — over WhatsApp, SMS, or any messaging app — without exposing your infrastructure to that platform.",[97,104,105],{},"If your family is entirely local and you prefer the simplest setup, skip this section. You do not need it.",[107,108,110],"h2",{"id":109},"what-the-relay-server-does","What the relay server does",[97,112,113],{},"When you generate a remote invitation:",[115,116,117,121,124,127,130,133],"ol",{},[118,119,120],"li",{},"Your device encrypts the invitation payload using AES-256-GCM. The encryption key is the invite token (32 random bytes).",[118,122,123],{},"The ciphertext is sent to the relay. The relay stores it.",[118,125,126],{},"You receive a short URL containing the token. You share this URL.",[118,128,129],{},"The recipient opens the URL. The landing page launches iwacu with the token.",[118,131,132],{},"Iwacu fetches the ciphertext from the relay, decrypts it using the token, and processes the invitation.",[118,134,135],{},"The relay deletes the ciphertext. Each token can only be claimed once.",[97,137,138],{},"The relay never sees the plaintext. It holds encrypted data it cannot read. Even if the relay is seized or compromised, no invitation contents are exposed.",[107,140,142],{"id":141},"why-run-your-own","Why run your own",[97,144,145],{},"If you use someone else's relay, you are trusting them to:",[147,148,149,152,155],"ul",{},[118,150,151],{},"Actually delete tokens after use",[118,153,154],{},"Not log IP addresses",[118,156,157],{},"Not correlate invitation patterns",[97,159,160],{},"Running your own relay means you trust yourself. You control what is logged (nothing), who can post tokens (your devices), and when the server goes down.",[107,162,164],{"id":163},"what-you-need","What you need",[147,166,167,170,173,176],{},[118,168,169],{},"A Linux server with a public IP address, or a machine at home with a stable connection.",[118,171,172],{},"Docker and Docker Compose installed.",[118,174,175],{},"Basic comfort with a terminal.",[118,177,178,179,183],{},"Optionally: ",[180,181,182],"code",{},"tor"," to run the relay as a hidden service (strongly recommended).",[97,185,186],{},"Minimum resources: 1 CPU, 256 MB RAM, 1 GB disk. A cheap VPS works fine.",[107,188,190],{"id":189},"sections","Sections",[147,192,193,200],{},[118,194,195,199],{},[196,197,198],"a",{"href":63},"Deploy the relay server"," — Docker Compose setup, configuration, and testing.",[118,201,202,205,206,209],{},[196,203,204],{"href":67},"Configure Tor hidden service"," — How to run the relay behind ",[180,207,208],{},".onion"," so the server's IP is never exposed to invitation recipients.",{"title":211,"searchDepth":212,"depth":213,"links":214},"",1,2,[215,216,217,218],{"id":109,"depth":213,"text":110},{"id":141,"depth":213,"text":142},{"id":163,"depth":213,"text":164},{"id":189,"depth":213,"text":190},"What it means to run your own relay server, why you might want to, and what is required.","md",null,{},true,{"title":58,"description":219},"keHITSCVsfi55OvcecKHDhcNrbAQMKeQnlZ1dIGOZ-s",[227,229],{"title":47,"path":48,"stem":49,"description":228,"children":-1},"How to use abantu to create communities, write and ratify protocols, run projects, and make decisions together — without a central server.",{"title":62,"path":63,"stem":64,"description":230,"children":-1},"How to run the invite relay with Docker Compose. Takes about 15 minutes on a fresh server.",1783593685810]