[{"data":1,"prerenderedAt":549},["ShallowReactive",2],{"docs-nav":3,"content-query-5mUleBdTCg":249},[4,8,11,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86,90,94,98,102,105,108,111,114,117,120,123,126,129,132,135,138,141,144,147,150,153,156,159,162,165,168,171,174,177,180,183,186,189,192,195,198,201,204,207,210,213,216,219,222,225,228,231,234,237,240,243,246],{"_path":5,"title":6,"order":7},"/docs/getting-started","Getting Started",1,{"_path":9,"title":10,"order":7},"/docs/self-hosting/all-in-one","All-in-One Setup",{"_path":12,"title":13,"order":7},"/docs/views/grid","Grid View",{"_path":15,"title":16,"order":17},"/docs/core-concepts","Core Concepts",10,{"_path":19,"title":20,"order":21},"/docs/crdt","What is a CRDT?",11,{"_path":23,"title":24,"order":25},"/docs/self-hosting/separate-containers","Separate Containers Setup",2,{"_path":27,"title":28,"order":29},"/docs/interface-overview","Interface Overview",20,{"_path":31,"title":32,"order":33},"/docs/global-search","Global Search",22,{"_path":35,"title":36,"order":37},"/docs/filters","Filters",24,{"_path":39,"title":40,"order":41},"/docs/sorting","Sorting",25,{"_path":43,"title":44,"order":45},"/docs/tagging-and-selection","Tagging & Selection",26,{"_path":47,"title":48,"order":49},"/docs/quick-view","Quick View",28,{"_path":51,"title":52,"order":53},"/docs/self-hosting/remote-access-tailscale","Remote Access with Tailscale",3,{"_path":55,"title":56,"order":57},"/docs/block-actions","Block Actions",30,{"_path":59,"title":60,"order":61},"/docs/deleting-blocks","Deleting Blocks & Trash",32,{"_path":63,"title":64,"order":65},"/docs/self-hosting","Self-Hosting",4,{"_path":67,"title":68,"order":69},"/docs/managing-heaps","Managing Heaps",40,{"_path":71,"title":72,"order":73},"/docs/file-scanning","File Scanning & Importing",42,{"_path":75,"title":76,"order":77},"/docs/storage-management","Storage Management",44,{"_path":79,"title":80,"order":81},"/docs/daily-notes","Daily Notes & Calendar",46,{"_path":83,"title":84,"order":85},"/docs/views","Views",60,{"_path":87,"title":88,"order":89},"/docs/authentication","Authentication & User Management",70,{"_path":91,"title":92,"order":93},"/docs/licenses-privacy","Licenses & Privacy",72,{"_path":95,"title":96,"order":97},"/docs/faq","FAQ",80,{"_path":99,"title":100,"order":101},"/docs/changelog","Changelog",99,{"_path":103,"title":104},"/docs/changelog/v16.16.15","v16.16.15",{"_path":106,"title":107},"/docs/changelog/v16.16.34","v16.16.34",{"_path":109,"title":110},"/docs/changelog/v16.16.28","v16.16.28",{"_path":112,"title":113},"/docs/changelog/v16.16.35","v16.16.35",{"_path":115,"title":116},"/docs/changelog/v16.16.32","v16.16.32",{"_path":118,"title":119},"/docs/changelog/v16.8.0","v16.8.0",{"_path":121,"title":122},"/docs/changelog/v16.16.8","v16.16.8",{"_path":124,"title":125},"/docs/changelog/v16.16.27","v16.16.27",{"_path":127,"title":128},"/docs/changelog/v16.16.41","v16.16.41",{"_path":130,"title":131},"/docs/changelog/v16.16.11","v16.16.11",{"_path":133,"title":134},"/docs/changelog/v16.16.14","v16.16.14",{"_path":136,"title":137},"/docs/changelog/v16.16.17","v16.16.17",{"_path":139,"title":140},"/docs/changelog/v16.16.10","v16.16.10",{"_path":142,"title":143},"/docs/changelog/v16.16.20","v16.16.20",{"_path":145,"title":146},"/docs/changelog/v16.6.0","v16.6.0",{"_path":148,"title":149},"/docs/changelog/v16.16.22","v16.16.22",{"_path":151,"title":152},"/docs/changelog/v16.16.6","v16.16.6",{"_path":154,"title":155},"/docs/changelog/v16.16.36","v16.16.36",{"_path":157,"title":158},"/docs/changelog/v16.16.18","v16.16.18",{"_path":160,"title":161},"/docs/changelog/v16.16.38","v16.16.38",{"_path":163,"title":164},"/docs/changelog/v16.16.1","v16.16.1",{"_path":166,"title":167},"/docs/changelog/v16.16.12","v16.16.12",{"_path":169,"title":170},"/docs/changelog/v16.16.31","v16.16.31",{"_path":172,"title":173},"/docs/changelog/v16.16.40","v16.16.40",{"_path":175,"title":176},"/docs/changelog/v16.7.0","v16.7.0",{"_path":178,"title":179},"/docs/changelog/v16.9.0","v16.9.0",{"_path":181,"title":182},"/docs/changelog/v16.16.4","v16.16.4",{"_path":184,"title":185},"/docs/changelog/v16.16.13","v16.16.13",{"_path":187,"title":188},"/docs/changelog/v16.16.37","v16.16.37",{"_path":190,"title":191},"/docs/changelog/v16.16.9","v16.16.9",{"_path":193,"title":194},"/docs/changelog/v16.16.25","v16.16.25",{"_path":196,"title":197},"/docs/changelog/v16.16.24","v16.16.24",{"_path":199,"title":200},"/docs/changelog/v16.16.3","v16.16.3",{"_path":202,"title":203},"/docs/changelog/v16.10.0","v16.10.0",{"_path":205,"title":206},"/docs/changelog/v16.16.16","v16.16.16",{"_path":208,"title":209},"/docs/changelog/v16.16.33","v16.16.33",{"_path":211,"title":212},"/docs/changelog/v16.16.26","v16.16.26",{"_path":214,"title":215},"/docs/changelog/v16.16.43","v16.16.43",{"_path":217,"title":218},"/docs/changelog/v16.11.0","v16.11.0",{"_path":220,"title":221},"/docs/changelog/v16.16.29","v16.16.29",{"_path":223,"title":224},"/docs/changelog/v16.16.5","v16.16.5",{"_path":226,"title":227},"/docs/changelog/v16.16.39","v16.16.39",{"_path":229,"title":230},"/docs/changelog/v16.16.2","v16.16.2",{"_path":232,"title":233},"/docs/changelog/v16.16.7","v16.16.7",{"_path":235,"title":236},"/docs/changelog/v16.16.23","v16.16.23",{"_path":238,"title":239},"/docs/changelog/v16.16.0","v16.16.0",{"_path":241,"title":242},"/docs/changelog/v16.16.30","v16.16.30",{"_path":244,"title":245},"/docs/changelog/v16.16.21","v16.16.21",{"_path":247,"title":248},"/docs/changelog/v16.16.19","v16.16.19",{"_path":51,"_dir":250,"_draft":251,"_partial":251,"_locale":252,"title":52,"description":253,"order":53,"body":254,"_type":543,"_id":544,"_source":545,"_file":546,"_stem":547,"_extension":548},"self-hosting",false,"","Access your self-hosted Heaper instance remotely using Tailscale",{"type":255,"children":256,"toc":530},"root",[257,265,282,289,294,300,307,312,325,339,345,350,359,365,370,376,381,389,410,416,437,443,448,456,469,475,480,489,494,500],{"type":258,"tag":259,"props":260,"children":262},"element","h1",{"id":261},"remote-access-with-tailscale",[263],{"type":264,"value":52},"text",{"type":258,"tag":266,"props":267,"children":268},"p",{},[269,271,280],{"type":264,"value":270},"If you're running Heaper on a home server or local machine, you can use ",{"type":258,"tag":272,"props":273,"children":277},"a",{"href":274,"rel":275},"https://tailscale.com",[276],"nofollow",[278],{"type":264,"value":279},"Tailscale",{"type":264,"value":281}," to securely access it from anywhere — without exposing ports to the internet or setting up a reverse proxy.",{"type":258,"tag":283,"props":284,"children":286},"h2",{"id":285},"what-is-tailscale",[287],{"type":264,"value":288},"What is Tailscale?",{"type":258,"tag":266,"props":290,"children":291},{},[292],{"type":264,"value":293},"Tailscale creates a private mesh network (VPN) between your devices using WireGuard. Once installed, all your devices can reach each other via stable IP addresses, regardless of where they are.",{"type":258,"tag":283,"props":295,"children":297},{"id":296},"setup",[298],{"type":264,"value":299},"Setup",{"type":258,"tag":301,"props":302,"children":304},"h3",{"id":303},"_1-install-tailscale-on-your-server",[305],{"type":264,"value":306},"1. Install Tailscale on your server",{"type":258,"tag":266,"props":308,"children":309},{},[310],{"type":264,"value":311},"Install Tailscale on the machine running your Heaper Docker container:",{"type":258,"tag":313,"props":314,"children":319},"pre",{"code":315,"language":316,"meta":252,"className":317},"# Linux (Debian/Ubuntu)\ncurl -fsSL https://tailscale.com/install.sh | sh\nsudo tailscale up\n","bash",[318],"language-bash",[320],{"type":258,"tag":321,"props":322,"children":323},"code",{"__ignoreMap":252},[324],{"type":264,"value":315},{"type":258,"tag":266,"props":326,"children":327},{},[328,330,337],{"type":264,"value":329},"For other platforms, see ",{"type":258,"tag":272,"props":331,"children":334},{"href":332,"rel":333},"https://tailscale.com/download",[276],[335],{"type":264,"value":336},"Tailscale's install guide",{"type":264,"value":338},".",{"type":258,"tag":301,"props":340,"children":342},{"id":341},"_2-note-the-tailscale-ip",[343],{"type":264,"value":344},"2. Note the Tailscale IP",{"type":258,"tag":266,"props":346,"children":347},{},[348],{"type":264,"value":349},"After connecting, find your server's Tailscale IP:",{"type":258,"tag":313,"props":351,"children":354},{"code":352,"language":316,"meta":252,"className":353},"tailscale ip -4\n# Example output: 100.64.0.1\n",[318],[355],{"type":258,"tag":321,"props":356,"children":357},{"__ignoreMap":252},[358],{"type":264,"value":352},{"type":258,"tag":301,"props":360,"children":362},{"id":361},"_3-install-tailscale-on-your-client-devices",[363],{"type":264,"value":364},"3. Install Tailscale on your client devices",{"type":258,"tag":266,"props":366,"children":367},{},[368],{"type":264,"value":369},"Install Tailscale on every device you want to access Heaper from (phone, laptop, etc.) and sign in with the same account.",{"type":258,"tag":301,"props":371,"children":373},{"id":372},"_4-connect-to-heaper",[374],{"type":264,"value":375},"4. Connect to Heaper",{"type":258,"tag":266,"props":377,"children":378},{},[379],{"type":264,"value":380},"From any device on your Tailnet, open:",{"type":258,"tag":313,"props":382,"children":384},{"code":383},"http://100.64.0.1:3010\n",[385],{"type":258,"tag":321,"props":386,"children":387},{"__ignoreMap":252},[388],{"type":264,"value":383},{"type":258,"tag":266,"props":390,"children":391},{},[392,394,400,402,408],{"type":264,"value":393},"Replace ",{"type":258,"tag":321,"props":395,"children":397},{"className":396},[],[398],{"type":264,"value":399},"100.64.0.1",{"type":264,"value":401}," with your server's Tailscale IP and ",{"type":258,"tag":321,"props":403,"children":405},{"className":404},[],[406],{"type":264,"value":407},"3010",{"type":264,"value":409}," with whatever port you mapped in your Docker config.",{"type":258,"tag":301,"props":411,"children":413},{"id":412},"_5-add-the-server-in-heaper",[414],{"type":264,"value":415},"5. Add the server in Heaper",{"type":258,"tag":266,"props":417,"children":418},{},[419,421,427,429,435],{"type":264,"value":420},"In the Heaper app, go to ",{"type":258,"tag":422,"props":423,"children":424},"strong",{},[425],{"type":264,"value":426},"Settings → Heaps → Pull Heap",{"type":264,"value":428}," and enter your server's Tailscale IP and port (e.g. ",{"type":258,"tag":321,"props":430,"children":432},{"className":431},[],[433],{"type":264,"value":434},"100.64.0.1:3010",{"type":264,"value":436},").",{"type":258,"tag":283,"props":438,"children":440},{"id":439},"optional-use-magicdns",[441],{"type":264,"value":442},"Optional: Use MagicDNS",{"type":258,"tag":266,"props":444,"children":445},{},[446],{"type":264,"value":447},"Tailscale's MagicDNS gives your devices readable hostnames. Instead of an IP, you can access Heaper at something like:",{"type":258,"tag":313,"props":449,"children":451},{"code":450},"http://my-server:3010\n",[452],{"type":258,"tag":321,"props":453,"children":454},{"__ignoreMap":252},[455],{"type":264,"value":450},{"type":258,"tag":266,"props":457,"children":458},{},[459,461,468],{"type":264,"value":460},"Enable MagicDNS in your ",{"type":258,"tag":272,"props":462,"children":465},{"href":463,"rel":464},"https://login.tailscale.com/admin/dns",[276],[466],{"type":264,"value":467},"Tailscale admin console",{"type":264,"value":338},{"type":258,"tag":283,"props":470,"children":472},{"id":471},"optional-https-with-tailscale",[473],{"type":264,"value":474},"Optional: HTTPS with Tailscale",{"type":258,"tag":266,"props":476,"children":477},{},[478],{"type":264,"value":479},"Tailscale can provision TLS certificates for your devices:",{"type":258,"tag":313,"props":481,"children":484},{"code":482,"language":316,"meta":252,"className":483},"sudo tailscale cert my-server.tailnet-name.ts.net\n",[318],[485],{"type":258,"tag":321,"props":486,"children":487},{"__ignoreMap":252},[488],{"type":264,"value":482},{"type":258,"tag":266,"props":490,"children":491},{},[492],{"type":264,"value":493},"This gives you a valid HTTPS certificate without needing a public domain or reverse proxy. Configure your reverse proxy (Caddy, nginx) to use the generated certificate files.",{"type":258,"tag":283,"props":495,"children":497},{"id":496},"advantages-over-port-forwarding",[498],{"type":264,"value":499},"Advantages over Port Forwarding",{"type":258,"tag":501,"props":502,"children":503},"ul",{},[504,510,515,520,525],{"type":258,"tag":505,"props":506,"children":507},"li",{},[508],{"type":264,"value":509},"No ports exposed to the public internet",{"type":258,"tag":505,"props":511,"children":512},{},[513],{"type":264,"value":514},"End-to-end encrypted (WireGuard)",{"type":258,"tag":505,"props":516,"children":517},{},[518],{"type":264,"value":519},"Works behind NAT and firewalls",{"type":258,"tag":505,"props":521,"children":522},{},[523],{"type":264,"value":524},"No dynamic DNS or domain required",{"type":258,"tag":505,"props":526,"children":527},{},[528],{"type":264,"value":529},"Free for personal use (up to 100 devices)",{"title":252,"searchDepth":25,"depth":25,"links":531},[532,533,540,541,542],{"id":285,"depth":25,"text":288},{"id":296,"depth":25,"text":299,"children":534},[535,536,537,538,539],{"id":303,"depth":53,"text":306},{"id":341,"depth":53,"text":344},{"id":361,"depth":53,"text":364},{"id":372,"depth":53,"text":375},{"id":412,"depth":53,"text":415},{"id":439,"depth":25,"text":442},{"id":471,"depth":25,"text":474},{"id":496,"depth":25,"text":499},"markdown","content:docs:self-hosting:remote-access-tailscale.md","content","docs/self-hosting/remote-access-tailscale.md","docs/self-hosting/remote-access-tailscale","md",1774954237973]