{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/TVp5dKgu3wsmk4cPXZHQ/Jgv0EC4bem7StwOK7L0z/wtyR92LHZ-9.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{Link as n}from\"framer\";import{motion as o}from\"framer-motion\";import*as r from\"react\";export const richText=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you are a web developer working with clients, running your own business website, or simply hosting your personal blog, you likely want to have a way for you or your customers to privately preview changes before they are made public. With \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=wordpress-staging\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Twingate Starter\"})}),\", you can easily create a private staging environment that is completely inaccessible from the public internet but still shareable with collaborators or clients \u2014 all without setting up a VPN, port forwarding, static IP addresses, or configuring DDNS.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this guide, we\u2019ll walk through how to set things up on Google Cloud Platform (GCP) for WordPress, but the same general steps also work if you use other solutions like \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/aws-wordpress-staging-environment\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"AWS\"})}),\", Digital Ocean, or Linode. As the video tutorial below shows, the entire process takes under 3 minutes. We\u2019ll walk through each step in the sections below.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Full 3 minute video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to set up remote access to a private staging environment on GCP using Twingate in <3 minutes\",className:\"framer-image\",src:\"https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png\",srcSet:\"https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png?scale-down-to=512 512w,https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=tL0vktWOA8k\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Video tutorial: How to set up remote access to a private staging environment on GCP using Twingate in <3 minutes\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/t(\"p\",{children:[\"GCP comes with pre-configured instances of WordPress to make it really fast to start building a website, and it has a \",/*#__PURE__*/e(n,{href:\"https://cloud.google.com/free\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"free tier and free credits\"})}),\" to get up and running with no cost. Please follow the short video tutorial below to deploy WordPress on GCP if you don\u2019t already have it set up. Choose the GCP zone and machine configuration that is appropriate for you. As part of the deployment configuration, we can safely remove the external IP and deny HTTP/HTTPS traffic from the Internet. In the rest of this guide, we\u2019ll show you how to use Twingate to grant yourself (or any other trusted party) secure, private access to your instance via just the Private IP address.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to deploy WordPress on GCP\",className:\"framer-image\",src:\"https://framerusercontent.com/images/6Fn6EovNoOIX2D2Kl8Wyb0YTlM.png\",srcSet:\"https://framerusercontent.com/images/6Fn6EovNoOIX2D2Kl8Wyb0YTlM.png?scale-down-to=512 512w,https://framerusercontent.com/images/6Fn6EovNoOIX2D2Kl8Wyb0YTlM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=48c9rqmreR0\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Video tutorial: How to deploy WordPress on GCP\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=wordpress-staging\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Once you have an account, there are 5 simple steps to get up and running.\"]}),/*#__PURE__*/e(\"h1\",{children:\"1. Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, that would be GCP.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to create a Remote Network for GCP on Twingate\",className:\"framer-image\",src:\"https://framerusercontent.com/images/G740CxxYX5E7KhNIpMYU9NqP8.png\",srcSet:\"https://framerusercontent.com/images/G740CxxYX5E7KhNIpMYU9NqP8.png?scale-down-to=512 512w,https://framerusercontent.com/images/G740CxxYX5E7KhNIpMYU9NqP8.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=5c6Fe7O2AFs\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Video tutorial: How to create a Remote Network for GCP on Twingate\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"2. Add a Connector\"}),/*#__PURE__*/t(\"p\",{children:[\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to Lightsail, it can also be deployed to other cloud instances (\",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/aws-wordpress-staging-environment\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"AWS\"})}),\", Azure, etc.) as well as your home devices, including \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/synology-nas\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Synology NAS\"})}),\" and \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Raspberry Pi\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Generate Connector tokens\"}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on GCP. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Copy the automatically generated shell command. You will soon run this command on your Lightsail instance to install the Connector there.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to generate Connector tokens and deploy via Linux\",className:\"framer-image\",src:\"https://framerusercontent.com/images/xCbUQNMXkQd9XnrrRiIkbpXSXY.png\",srcSet:\"https://framerusercontent.com/images/xCbUQNMXkQd9XnrrRiIkbpXSXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/xCbUQNMXkQd9XnrrRiIkbpXSXY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=ry-95xa926Y\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Video tutorial: How to generate Connector tokens and deploy via Linux\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h2\",{children:\"Deploy the Connector on the Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"In GCP, create a new VM instance where we\u2019ll deploy the Twingate Connector.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"We suggest giving the VM instance the same name as the Connector for easy association\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Choose the Region, Zone, and Machine configuration that\u2019s appropriate for you (some configurations can be \",/*#__PURE__*/e(n,{href:\"https://cloud.google.com/free\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"free\"})}),\")\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Expand the \u201CNetworking, Disks, Security, \u2026\u201A section at the bottom, then expand the \u201CManagement\u201A section. Inside the \u201CAutomation\u201A textbox, paste in the command that was generated earlier. This will ensure that the Twingate Connector automatically installs and runs when you boot up your VM instance.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to deploy a Connector on a GCP VM\",className:\"framer-image\",src:\"https://framerusercontent.com/images/Em8kF9knZ4bsI2Id5h6OfcIPns.png\",srcSet:\"https://framerusercontent.com/images/Em8kF9knZ4bsI2Id5h6OfcIPns.png?scale-down-to=512 512w,https://framerusercontent.com/images/Em8kF9knZ4bsI2Id5h6OfcIPns.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=hEi1ZUlGwXE\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Video tutorial: How to deploy a Connector on a GCP VM\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"After just a minute or so, the instance should be up and running, and you can check the logs to verify that the Connector was successfully deployed. You should also see within the Twingate admin console that the Connector status has turned green.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to verify that the Connector has successfully deployed on a GCP VM instance\",className:\"framer-image\",src:\"https://framerusercontent.com/images/9qIjT3yfvarsUrPrMJ4MGNwK4.png\",srcSet:\"https://framerusercontent.com/images/9qIjT3yfvarsUrPrMJ4MGNwK4.png?scale-down-to=512 512w,https://framerusercontent.com/images/9qIjT3yfvarsUrPrMJ4MGNwK4.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=44VivKjxBW4\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Video tutorial: How to verify that the Connector has successfully deployed on a GCP VM instance\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"3. Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Now that you\u2019ve deployed a Twingate Connector on GCP, you can get remote access to any other VM instance running on the same VPC network. Even though the WordPress instance has no external IP address and we\u2019ve denied all HTTP/HTTPS access, we can add it as a Twingate Resource and get secure access.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. In the popup, click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your WordPress VM instance, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to your VM instance and can use it as a staging environment for your WordPress site.\"}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to add WordPress as a resource\",className:\"framer-image\",src:\"https://framerusercontent.com/images/JNvDQsyEtvI97J2YsTfr6BSBHow.png\",srcSet:\"https://framerusercontent.com/images/JNvDQsyEtvI97J2YsTfr6BSBHow.png?scale-down-to=512 512w,https://framerusercontent.com/images/JNvDQsyEtvI97J2YsTfr6BSBHow.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=P-3NvQ7chSs\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Video tutorial: How to add WordPress as a resource\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"4. Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(n,{href:\"https://api.twingate.com/download/darwin\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created. Click on \u201COpen in Browser\u2026\u201A and you should see your WordPress site is accessible via the Private IP address of your GCP VM instance, even though it has no public IP address.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\\xf0\u0178\u017D\\xa5 \",/*#__PURE__*/e(\"strong\",{children:\"Video tutorial:\"})]}),/*#__PURE__*/e(\"img\",{alt:\"Video tutorial: How to access your resource using the Twingate client\",className:\"framer-image\",src:\"https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png\",srcSet:\"https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png?scale-down-to=512 512w,https://framerusercontent.com/images/7Lr8aFXhZpSOYVy7loUVJ3ZRPqg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.youtube.com/watch?v=HD4W-g40TVc\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Video tutorial: How to access your resource using the Twingate client\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the site again \u2014 you should see that it\u2019s completely inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You\u2019ve finished setting up Twingate for GCP and used it to create a staging environment for your WordPress site. Anything else that you deploy to the same VPC network (e.g., a web app, dashboard, database, etc.) can also be added as a Resource, and you would have a private staging environment for those as well, using the same Connector. Join us in the \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"5. Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the WordPress site with a client, collaborator, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to the WordPress site, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]});export const richText1=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/e(\"img\",{alt:\"Plex + Twingate client experience\",className:\"framer-image\",src:\"https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png\",srcSet:\"https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Plex + Twingate client experience\"}),/*#__PURE__*/e(\"p\",{children:\"Plex Media Server is a great solution to organize all of your media and access them from your laptop, phone, TV, or lots of other places. It\u2019s easy to listen to your music or watch your movies via Plex when you\u2019re at home and connected to your home network. But what about when you are away on vacation, or if you want to share access to your library with friends and family?\"}),/*#__PURE__*/e(\"h1\",{children:\"Plex remote access not working?\"}),/*#__PURE__*/e(\"p\",{children:\"Plex offers a remote access feature that relies on port forwarding, but the configuration may not always work or there may be other common issues like Double-NAT, resulting in an error like the screenshot below.\"}),/*#__PURE__*/e(\"img\",{alt:\"Plex remote access not available\",className:\"framer-image\",src:\"https://framerusercontent.com/images/JCNSmqK3iisMbdSJVVvZsEDEVA.png\",srcSet:\"https://framerusercontent.com/images/JCNSmqK3iisMbdSJVVvZsEDEVA.png?scale-down-to=512 512w,https://framerusercontent.com/images/JCNSmqK3iisMbdSJVVvZsEDEVA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Plex remote access not available\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Using port forwarding also exposes an open port to your home network that can potentially be exploited. For mobile access, Plex provides mobile apps, but without a paid subscription, video and music streaming is limited to 1 minute and photos are watermarked.\"}),/*#__PURE__*/t(\"p\",{children:[\"There are other common approaches, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=windows-plex\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\",className:\"framer-image\",src:\"https://framerusercontent.com/images/FWA2KYIjilZryZI5ofbLHiDizNg.png\",srcSet:\"https://framerusercontent.com/images/FWA2KYIjilZryZI5ofbLHiDizNg.png?scale-down-to=512 512w,https://framerusercontent.com/images/FWA2KYIjilZryZI5ofbLHiDizNg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are running your Plex Media Server on a NAS or a Raspberry Pi, please follow the tutorial \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/plex-media-server\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\". In this guide, we\u2019ll focus on Windows and walk you through the steps to setup Twingate to access your Windows Plex Media Server from anywhere.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Please also join us in our \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"The rest of this guide assumes that you have some components already installed. If you\u2019ve already installed Plex, WSL, and Docker on your Windows PC, skip ahead to \u201CSign up for Twingate\u201A below. If not, please following these instructions first.\"}),/*#__PURE__*/e(\"h2\",{children:\"Install Plex Media Server on your Windows PC\"}),/*#__PURE__*/t(\"p\",{children:[\"Plex Media Server can be installed on a variety of devices. In this guide, we\u2019ll focus on Windows. If you haven\u2019t already done so, please install Plex Media Server \",/*#__PURE__*/e(n,{href:\"https://www.plex.tv/media-server-downloads#plex-media-server\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Install WSL\"}),/*#__PURE__*/e(\"p\",{children:\"Windows Subsystem for Linux (WSL) lets you run a Linux environment on your Windows PC and is required to set up Twingate. Fortunately, it can be installed by running just a single command.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, open up Command Prompt or PowerShell as an Administrator. Type \",/*#__PURE__*/e(\"code\",{children:\"command prompt\"}),\" in the Windows start menu search box and click on \u201CRun as administrator\u201A, as shown in the screenshot below.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Open Command Prompt as an Administrator\",className:\"framer-image\",src:\"https://framerusercontent.com/images/1OMopn1Au7xvzh5ikj0VSvsvwsw.png\",srcSet:\"https://framerusercontent.com/images/1OMopn1Au7xvzh5ikj0VSvsvwsw.png?scale-down-to=512 512w,https://framerusercontent.com/images/1OMopn1Au7xvzh5ikj0VSvsvwsw.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Open Command Prompt as an Administrator\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"In the Command Prompt window that pops up, simply type in \",/*#__PURE__*/e(\"code\",{children:\"wsl --install\"}),\" and press Enter. After some time, the installation will automatically complete and Ubuntu will now be installed.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Installing WSL\",className:\"framer-image\",src:\"https://framerusercontent.com/images/MaHf0dHt2AKarZ5zc2sDOnn45g.png\",srcSet:\"https://framerusercontent.com/images/MaHf0dHt2AKarZ5zc2sDOnn45g.png?scale-down-to=512 512w,https://framerusercontent.com/images/MaHf0dHt2AKarZ5zc2sDOnn45g.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Installing WSL\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"If you run into any issues, please also refer to Microsoft\u2019s detailed instructions \",/*#__PURE__*/e(n,{href:\"https://docs.microsoft.com/en-us/windows/wsl/install\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"h2\",{children:\"Install Docker\"}),/*#__PURE__*/t(\"p\",{children:[\"Docker is a popular platform for building and installing applications, and it\u2019s how we will install Twingate. Fortunately, it also has a very simple installation wizard on Windows. Please download it \",/*#__PURE__*/e(n,{href:\"https://docs.docker.com/desktop/windows/install\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\" and open the \",/*#__PURE__*/e(\"code\",{children:\"Docker Desktop Installer.exe\"}),\" file to start the wizard.\"]}),/*#__PURE__*/e(\"p\",{children:\"On the Configuration screen, make sure that \u201CInstall required Windows components for WSL 2\u201A is checked.\"}),/*#__PURE__*/e(\"img\",{alt:\"Install Docker components for WSL 2\",className:\"framer-image\",src:\"https://framerusercontent.com/images/pdPCxiDiIPPPKsuWzrQXuVgv9Q.png\",srcSet:\"https://framerusercontent.com/images/pdPCxiDiIPPPKsuWzrQXuVgv9Q.png?scale-down-to=512 512w,https://framerusercontent.com/images/pdPCxiDiIPPPKsuWzrQXuVgv9Q.png 706w\"}),/*#__PURE__*/e(\"p\",{children:\"Install Docker components for WSL 2\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"Follow the rest of the installation wizard. After completion, open the Docker Desktop application and you should see a screen like this. We will come back to Docker later on.\"}),/*#__PURE__*/e(\"img\",{alt:\"Docker Desktop is running\",className:\"framer-image\",src:\"https://framerusercontent.com/images/9N3A4uCOxQ6Ktuy6FWycmoDyAdk.png\",srcSet:\"https://framerusercontent.com/images/9N3A4uCOxQ6Ktuy6FWycmoDyAdk.png?scale-down-to=512 512w,https://framerusercontent.com/images/9N3A4uCOxQ6Ktuy6FWycmoDyAdk.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Docker Desktop is running\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=windows-plex\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"Click on the \u201CAdd a Remote Network\u201A button, and you should see a popup. Twingate supports many different kinds of remote networks. If you are looking to connect to AWS, Azure, or GCP, then select the appropriate option in the dropdown menu. If you are connecting to your home network, choose \u201COther\u201A for the Location. Regardless of which option you choose, give the network a name, like \u201CHome Network\u201A, then click \u201CAdd Remote Network\u201A to create it.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Remote Network\",className:\"framer-image\",src:\"https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png\",srcSet:\"https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png?scale-down-to=512 512w,https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"After completing the steps above, you should now have a Starter account with a Remote Network set up. The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the devices connected to it. For it to work, you first need to deploy the Connector on the device that is hosting your Plex Media Server, which is your Windows PC in this case.\"}),/*#__PURE__*/e(\"p\",{children:\"Click on the remote network you just created and you should see two automatically generated Connectors (the names are random) that are not yet connected. Choose one of the two Connectors and click on the \u201CDeploy Connector\u201A button. You\u2019ll see a Controller configuration page like the one below with several deployment options. For Step 1, keep the default option of Docker.\"}),/*#__PURE__*/e(\"img\",{alt:\"Set up the Connector\",className:\"framer-image\",src:\"https://framerusercontent.com/images/LAEnRaydyh4jNGTvLRnHI2wEPSU.png\",srcSet:\"https://framerusercontent.com/images/LAEnRaydyh4jNGTvLRnHI2wEPSU.png?scale-down-to=512 512w,https://framerusercontent.com/images/LAEnRaydyh4jNGTvLRnHI2wEPSU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Set up the Connector\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"The next step is to generate tokens for the Connector. Scroll down to Step 2 and click the \u201CGenerate Tokens\u201A button. You\u2019ll see a popup asking you to re-authenticate using whichever account you used to sign up (e.g., Google). After doing so, you\u2019ll be redirected back and should see that two tokens have been generated.\"}),/*#__PURE__*/e(\"p\",{children:\"Scroll down to Step 3, where you\u2019ll see that a command has been automatically generated. Click the button to copy the command.\"}),/*#__PURE__*/t(\"p\",{children:[\"After installing WSL, you should now have Ubuntu on your Windows computer. Search for \",/*#__PURE__*/e(\"code\",{children:\"ubuntu\"}),\" in the start menu and open Ubuntu.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Open Ubuntu\",className:\"framer-image\",src:\"https://framerusercontent.com/images/iE1ITIm9Gjm5DQFoXqdpIwPglss.png\",srcSet:\"https://framerusercontent.com/images/iE1ITIm9Gjm5DQFoXqdpIwPglss.png?scale-down-to=512 512w,https://framerusercontent.com/images/iE1ITIm9Gjm5DQFoXqdpIwPglss.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Open Ubuntu\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"In the window that popped up, paste in the command you copied earlier and run it (your command will have different tokens). You may need to add \",/*#__PURE__*/e(\"code\",{children:\"sudo\"}),\" at the beginning of the command. After just a minute, the command should complete.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Run command in Ubuntu\",className:\"framer-image\",src:\"https://framerusercontent.com/images/Yg1ItB3xbDWcGvzhzxyA3WTohFs.png\",srcSet:\"https://framerusercontent.com/images/Yg1ItB3xbDWcGvzhzxyA3WTohFs.png?scale-down-to=512 512w,https://framerusercontent.com/images/Yg1ItB3xbDWcGvzhzxyA3WTohFs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Run command in Ubuntu\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/t(\"p\",{children:[\"Open up Docker Desktop and click on \u201CImages\u201A in the side panel on the left. You should see that \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"}),\" has automatically appeared as an image and is \",/*#__PURE__*/e(\"code\",{children:\"IN USE\"}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"Connected deployed on Docker\",className:\"framer-image\",src:\"https://framerusercontent.com/images/NDRrV3Db9dIxjTjJnlNvxoM2eC8.png\",srcSet:\"https://framerusercontent.com/images/NDRrV3Db9dIxjTjJnlNvxoM2eC8.png?scale-down-to=512 512w,https://framerusercontent.com/images/NDRrV3Db9dIxjTjJnlNvxoM2eC8.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connected deployed on Docker\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"On the Twingate web UI, you should also see that the Connector\u2019s status has automatically turned green, indicating that it has been successfully deployed on your Windows PC.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",src:\"https://framerusercontent.com/images/o74fBNR4lerWaIF6nBHUItjTcA.png\",srcSet:\"https://framerusercontent.com/images/o74fBNR4lerWaIF6nBHUItjTcA.png?scale-down-to=512 512w,https://framerusercontent.com/images/o74fBNR4lerWaIF6nBHUItjTcA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"You\u2019ve now set up a Connector on your Windows PC, which enables remote access to Plex, or other services that you\u2019re running on your computer (called a \u201CResource\u201A in Twingate).\"}),/*#__PURE__*/t(\"p\",{children:[\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. You\u2019ll see a popup like the one below. Click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of Plex (it\u2019s listed under Plex Settings > Remote Access and is likely \",/*#__PURE__*/e(\"code\",{children:\"10.x.x.x\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"192.168.x.x\"}),\"), choose \",/*#__PURE__*/e(\"code\",{children:\"32400\"}),\" for the Port Restriction, and click \u201CAdd Resource\u201A. Congrats! Your Plex Media Server is now enabled for secure remote access.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Add a Resource\",className:\"framer-image\",src:\"https://framerusercontent.com/images/GcvbUDzBFbl3gG3thQlCtPxjErA.png\",srcSet:\"https://framerusercontent.com/images/GcvbUDzBFbl3gG3thQlCtPxjErA.png?scale-down-to=512 512w,https://framerusercontent.com/images/GcvbUDzBFbl3gG3thQlCtPxjErA.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"h1\",{children:\"Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your devices (we support Windows, Mac, Linux and have apps for iOS and Android) and access your Plex Media Server from anywhere. As an example, let\u2019s walk through setting things up on iOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the iOS app \",/*#__PURE__*/e(n,{href:\"https://api.twingate.com/download/ios\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\". Type in the Twingate Network URL that you chose when you signed up and tap \u201CJoin Network\u201A. You\u2019ll be automatically asked to log in using the same account you used to sign up. After signing in, you\u2019ll land on the home screen, where you should already see your Plex Resource listed. When you are connected to your Twingate network, a \u201CVPN\u201A icon will appear in the top bar of your screen.\"]}),/*#__PURE__*/e(\"p\",{children:\"To test it out, stay connected to Twingate, disconnect from your local network (e.g., by disabling WiFi), and navigate to your Plex Media Server instance on your phone\u2019s browser. You should be able to access it just as if you were at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing Plex again \u2014 you should see that it\u2019s inaccessible.\"}),/*#__PURE__*/e(\"img\",{alt:\"Plex + Twingate client experience\",className:\"framer-image\",src:\"https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png\",srcSet:\"https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/WH0PZSKXCcn7GoEmO8C4ISmWoQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Plex + Twingate client experience\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You\u2019ve finished setting up Twingate for Plex Media Server. Join us in the \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to Plex, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",src:\"https://framerusercontent.com/images/aCD5ak5DqcW7pv2chnhA9eJyWg.png\",srcSet:\"https://framerusercontent.com/images/aCD5ak5DqcW7pv2chnhA9eJyWg.png?scale-down-to=512 512w,https://framerusercontent.com/images/aCD5ak5DqcW7pv2chnhA9eJyWg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]});export const richText2=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"A quarter-century ago, remote access VPNs solved an important business problem: how to keep remote workers connected to the company network. But that was a long time ago. \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN technology\"})}),\" does not work with today\u2019s distributed networks and workforces.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this article, we will introduce the concepts behind remote access VPNs, explain why it no longer fits with the way we work today, and introduce \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\u2019s\"})}),\" modern approach to access control.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is a remote access VPN?\"}),/*#__PURE__*/e(\"p\",{children:\"A remote access VPN establishes encrypted internet connections between remote users\u2019 devices and a protected network. The system consists of two components:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A VPN client app on the user\u2019s device.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"A VPN gateway at the edge of the network\u2019s secure perimeter.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"When the client connects to the gateway\u2019s public internet address, an encrypted tunnel gives the user access to the network and its resources.\"}),/*#__PURE__*/e(\"p\",{children:\"Over the past three decades, VPN has become the dominant form of remote access for businesses of all sizes because of the clear benefits it offered:\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Productivity\"}),\" - Field engineers, salespeople, and executives experienced less downtime while on the road. In addition, having instant access to company resources made employees more responsive to customers.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Ubiquity\"}),\" - VPN\u2019s popularity means businesses can choose among a wide field of solutions that fit their needs and budgets. The pool of IT workers with VPN-related experience is also much larger, making staffing easier.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security\"}),\" - Encrypted tunnels let users connect to the company network from untrusted locations like hotels and coffee shops without risking sensitive data.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How do remote access VPNs compare to site-to-site VPNs?\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN\"})}),\" was first developed as a wide-area networking solution, not for remote access. Until the 1990s, connecting a company\u2019s remote networks to their central computing resources meant paying telephone companies for expensive leased-line services.\"]}),/*#__PURE__*/e(\"p\",{children:\"The internet offered an affordable alternative, but how could companies send private data over public networks? Deploying VPN gateways in a hub-and-spoke topology created a virtual, private network across the internet and made remote sites part of the central network. Under the direct control of the company\u2019s IT staff, this static architecture was relatively easy to deploy and manage.\"}),/*#__PURE__*/e(\"p\",{children:\"Remote access capabilities came later but used the same structure as site-to-site applications. Each remote VPN client is a spoke connecting to the VPN gateway\u2019s central hub. When users connect to the main office, their devices become extensions of the company network. From there, users can access that network\u2019s resources.\"}),/*#__PURE__*/e(\"h1\",{children:\"Are remote access VPNs built for hybrid workforces?\"}),/*#__PURE__*/e(\"p\",{children:\"A quarter-century ago, extending the site-to-site approach to remote access made some sense. The infrastructure and skill sets were already in place and the benefits were very real. But as the pandemic made crystal clear, legacy remote access VPN does not work anymore.\"}),/*#__PURE__*/e(\"p\",{children:\"Back in the day, companies had direct control over their information technologies. Resources, devices, and networks were company-owned and company-managed. Only a relative handful of those devices connected remotely.\"}),/*#__PURE__*/e(\"p\",{children:\"The workforce was also very different. Only employees could access the company network. Plus, the number of employees accessing the network remotely was limited to a narrow range of trusted roles.\"}),/*#__PURE__*/e(\"h2\",{children:\"Remote VPNs are not built for the way we work today\"}),/*#__PURE__*/t(\"p\",{children:[\"Things are \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"more decentralized today\"})}),\". Resources, devices, and networks may not be owned by the company, managed by the company, or located on company property. More resources are either hosted on third-party cloud platforms or simply outsourced to SaaS providers. The very idea of a \u201Csecure perimeter\u201A is becoming meaningless as the network\u2019s boundaries extend far beyond the office walls.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Workforces are also more amorphous. Long-running trends like \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/byod\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"BYOD\"})}),\" and work-from-home went exponential in 2020. Rather than having most user devices on-premises, most were connecting remotely. Instead of managing fleets of company-owned computers, companies were opening their networks to a more diverse mix of devices connecting from home routers.\"]}),/*#__PURE__*/e(\"p\",{children:\"The reason remote access VPN does not suit the way business works today is built into its fundamental design:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Hub-and-spoke topology in a distributed world\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Gateways channeling every user\u2019s traffic create bottlenecks that impact network bandwidth and latency.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Each subnet requires its own \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN\"})}),\" gateway, making networks expensive and difficult to scale while degrading the user experience.\"]})})]})]}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/e(\"p\",{children:\"Only controlling remote access to managed networks\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Separate \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/access-control-essentials\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"access control\"})}),\" systems are needed for on-premises users.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Cloud resources require their own unique access control systems.\"})})]})]})]}),/*#__PURE__*/t(\"p\",{children:[\"Companies are realizing that, beyond the productivity issues, \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN\"})}),\" makes them more vulnerable to security breaches. The problem comes down to trust. VPN gateways, for example, trust that only \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"authorized\"})}),\" users will access their public IP addresses. That visibility, however, makes VPN gateways easily discoverable by hackers who can exploit vulnerabilities.\"]}),/*#__PURE__*/t(\"p\",{children:[\"The greatest risk, however, is from compromised user credentials. Trusting an \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"authorized\"})}),\" user, VPN gateways grant full access to whatever network they protect. Stolen user credentials grant hackers the same \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/lateral-movement\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"unfettered access\"})}),\" \u2014 and let them appear to be the authorized user.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Remote access VPNs vs. Zero Trust for hybrid workforces\"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/ztna\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust Network Access\"})}),\" is a modern security paradigm based on the assumption that trust never exists. Not only can a breach happen, but it probably already has. Zero Trust requires the verification of every connection attempt no matter:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Who the user is.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"What device they use.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Where they connect from.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Zero Trust lets companies adopt \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"distributed architectures\"})}),\" more suited to modern networking. Rather than consolidating traffic through gateways, Zero Trust systems let traffic flow directly between devices and resources. This approach generates several benefits:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Resources and devices can be anywhere on any network.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Nothing is ever exposed to the public internet.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Software-based, Zero Trust solutions are simple to deploy and manage.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Routing and rules enforcement happen locally rather than round-tripping to central systems.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Modern \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/zero-trust-security\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\"})}),\" access control also improves the performance of company networks while improving the user experience. \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/network-connectivity-for-zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Direct connections\"})}),\" allow traffic to follow the most performant route. Traffic between remote users and cloud resources no longer traverses company networks. In addition, geographically dispersed users experience less latency and improved productivity.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Where is the industry headed?\"}),/*#__PURE__*/t(\"p\",{children:[\"While Zero Trust eliminates the inefficiencies imposed by \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"legacy VPN technologies\"})}),\", security is the primary driver of its adoption across industries. The number and severity of cyber breaches increase every year as secure perimeters crumble. In the face of this threat, for example, the US government is rapidly shifting to Zero Trust architectures.\"]}),/*#__PURE__*/t(\"p\",{children:[\"\u201CFederal agency CIOs and IT leadership are leaning into this challenge,\u201A \",/*#__PURE__*/e(n,{href:\"https://www.whitehouse.gov/omb/briefing-room/2022/01/26/office-of-management-and-budget-releases-federal-strategy-to-move-the-u-s-government-towards-a-zero-trust-architecture\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Federal Chief Information Officer Clare Martorana said recently.\"})}),\" \u201CThe zero trust strategy provides a clear roadmap for deploying technology that is secure by design and responsive to the needs of our workforce.\u201A\"]}),/*#__PURE__*/e(\"p\",{children:\"Zero Trust is not limited to organizations as complex as the US government. Companies of all sizes can adopt Zero Trust access control to improve their security posture, increase productivity, and make their IT investments more agile.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust solution\"})}),\" lets large and small companies alike protect their most sensitive resources while enjoying benefits such as:\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Protect resources, not networks\"}),\" - Mirco-segmentation was impractical with VPN, but Twingate\u2019s solution lets companies shield every resource behind its own \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"software-defined perimeter\"})}),\".\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Invisibility on any network\"}),\" - With Twingate\u2019s approach, an organization\u2019s private resources disappear. Whether on the internet or a compromised network, hackers cannot see protected resources.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Transparent user experience\"}),\" - VPN undermines security compliance by making the user experience more difficult. Twingate\u2019s client operates transparently with no user engagement.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simple to deploy\"}),\" - Twingate customers have deployed \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\"})}),\" across their organizations in as little as 15 minutes. No changes are needed to the network or any resource settings.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Simple to manage\"}),\" - Twingate\u2019s administrator console turns permission management into a one-click operation.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate does more than replace remote access VPN. Our complete \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/access-control-essentials\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"access control\"})}),\" solution applies to all users whether they are remote or on-site, employees or contractors. Twingate can protect any resource whether it runs on a local server or is hosted in the cloud. We can even extend \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/docs/protect-legacy-apps-with-multi-factor-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"multi-factor authentication to SSH\"})}),\" and other services hackers use to escalate their privileges.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Twingate goes beyond remote access VPN\"}),/*#__PURE__*/e(\"p\",{children:\"In a simpler information age, remote access VPN was a solution that matched the way business worked. Today\u2019s world is more complex, dynamic, and distributed which is why businesses need a modern approach to network access control.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust solution\"})}),\" gives companies a more secure, flexible, and performant way to manage network access. Resources can be in the cloud or on-premises. Users can be anywhere in the world. Twingate makes it easy for companies to enforce granular access control policies based on \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"least-privilege principles\"})}),\". And without the need to re-architect their networks, Twingate customers can reap the benefits of Zero Trust in minutes.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Use Twingate\u2019s \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=remote-access-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"free Starter plan\"})}),\" to experience how simple and easy Zero Trust can be. Or \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=remote-access-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"contact us\"})}),\" for more information about how Zero Trust can work for your organization.\"]})]});export const richText3=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"If you are a web developer working with clients, running your own business website, or simply hosting your personal blog, you likely want to have a way for you or your customers to privately preview changes before they are made public. With \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=wordpress-staging\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Twingate Starter\"})}),\", you can easily create a private staging environment that is completely inaccessible from the public internet but still shareable with collaborators or clients \u2014 all without setting up a VPN, port forwarding, static IP addresses, or configuring DDNS.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this guide, we\u2019ll walk through how to set things up on WordPress running on Amazon Lightsail, but the same general steps also work if you use other solutions like AWS EC2, Digital Ocean, or Linode. Please also join us in our \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share and discuss your experience and any other use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/t(\"p\",{children:[\"Amazon Lightsail is an easy way to get up and running on AWS and comes with pre-configured instances of WordPress to make it really fast to start building a website, and it is free for the first 3 months. Please follow the short guide \",/*#__PURE__*/e(n,{href:\"https://aws.amazon.com/getting-started/hands-on/launch-a-wordpress-website\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\" to create an instance if you don\u2019t already have one.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Restrict access to your Lightsail instance\"}),/*#__PURE__*/e(\"p\",{children:\"After the quick setup, you (or anyone else) are now able to access your WordPress site via the Public IP address associated with your Lightsail instance. Since we want to restrict access to our staging environment, we can go to the \u201CNetworking\u201A tab and remove the HTTP/HTTPS access rules under the \u201CIPv4 Firewall\u201A section.\"}),/*#__PURE__*/e(\"img\",{alt:\"Remove public access\",className:\"framer-image\",src:\"https://framerusercontent.com/images/zb1FcB9DTGfMhfBtxKBWuiN1TnE.png\",srcSet:\"https://framerusercontent.com/images/zb1FcB9DTGfMhfBtxKBWuiN1TnE.png?scale-down-to=512 512w,https://framerusercontent.com/images/zb1FcB9DTGfMhfBtxKBWuiN1TnE.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Remove public access\"}),/*#__PURE__*/e(\"p\",{children:\"If you try the Public IP address again, you should find that it\u2019s no longer accessible.\"}),/*#__PURE__*/e(\"img\",{alt:\"Site is inaccessible\",className:\"framer-image\",src:\"https://framerusercontent.com/images/XS8qRRTZSv6xgetp7owf4NVK0fk.png\",srcSet:\"https://framerusercontent.com/images/XS8qRRTZSv6xgetp7owf4NVK0fk.png?scale-down-to=512 512w,https://framerusercontent.com/images/XS8qRRTZSv6xgetp7owf4NVK0fk.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Site is inaccessible\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"p\",{children:\"In the rest of this guide, we\u2019ll show you how to use Twingate to grant yourself (or any other trusted party) secure, private access to your instance via just the Private IP address.\"}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=wordpress-staging\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Create a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"After creating a Twingate account, from the main \u201CNetwork\u201A page, add a new Remote Network and give it a name. This represents the network we\u2019re going to connect to \u2014 in this case, our Lightsail instance.\"}),/*#__PURE__*/e(\"img\",{alt:\"Create a Remote Network\",className:\"framer-image\",src:\"https://framerusercontent.com/images/cgofRwPJErMY6d21XLTehezkzqk.png\",srcSet:\"https://framerusercontent.com/images/cgofRwPJErMY6d21XLTehezkzqk.png?scale-down-to=512 512w,https://framerusercontent.com/images/cgofRwPJErMY6d21XLTehezkzqk.png 800w\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"The next step is to deploy a Twingate Connector, which is a piece of software that allows for secure access to your remote network and the services running on it. In addition to Lightsail, it can also be deployed to other cloud instances (AWS EC2, GCP, Azure, etc.) as well as your home devices, including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/synology-nas\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Synology NAS\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Raspberry Pi\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"In this case, we\u2019ll set it up on our Lightsail instance. Click on one of the automatically generated Connectors (the names are random) and complete the following steps:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Click on Linux as the deployment method\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Generate tokens. You\u2019ll be prompted to sign in again, after which you should see two new tokens.\"})}),/*#__PURE__*/t(\"li\",{\"data-preset-tag\":\"p\",children:[/*#__PURE__*/t(\"p\",{children:[\"Copy the automatically generated shell command. You will soon run this command on your Lightsail instance to install the Connector there.    \",/*#__PURE__*/e(\"span\",{children:\"                  \"})]}),/*#__PURE__*/e(\"img\",{alt:\"Deploy the Connector\",className:\"framer-image\",src:\"https://framerusercontent.com/images/B6Wxdzrjw1YsO98WACmBrEZlT5U.png\",srcSet:\"https://framerusercontent.com/images/B6Wxdzrjw1YsO98WACmBrEZlT5U.png?scale-down-to=512 512w,https://framerusercontent.com/images/B6Wxdzrjw1YsO98WACmBrEZlT5U.png 800w\"})]})]}),/*#__PURE__*/e(\"p\",{children:'Go to your Lightsail instance, and under the \u201CConnect\u201A tab, click the \u201CConnect using SSH\" button.'}),/*#__PURE__*/e(\"img\",{alt:\"Connect to Lightsail instance using SSH\",className:\"framer-image\",src:\"https://framerusercontent.com/images/jhJtpeNXRl7EPFEioecr52WneK0.png\",srcSet:\"https://framerusercontent.com/images/jhJtpeNXRl7EPFEioecr52WneK0.png?scale-down-to=512 512w,https://framerusercontent.com/images/jhJtpeNXRl7EPFEioecr52WneK0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"This will open up a new window with a Linux terminal connected to your instance. Paste in and execute the command that was generated by your Twingate Connector (your tokens and Twingate URL will be different).\"}),/*#__PURE__*/e(\"img\",{alt:\"Run the Twingate Connector command\",className:\"framer-image\",src:\"https://framerusercontent.com/images/gMAg4Bk9n1Og0HOaVVGZPFhU5g.png\",srcSet:\"https://framerusercontent.com/images/gMAg4Bk9n1Og0HOaVVGZPFhU5g.png?scale-down-to=512 512w,https://framerusercontent.com/images/gMAg4Bk9n1Og0HOaVVGZPFhU5g.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"After just a minute or so, the command should complete and you should see that the Connector status has turned green, indicating that you\u2019ve successfully deployed the Connector on your Lightsail instance.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",src:\"https://framerusercontent.com/images/rTxowGT68CcuRoIoyXaEtvXWvTY.png\",srcSet:\"https://framerusercontent.com/images/rTxowGT68CcuRoIoyXaEtvXWvTY.png?scale-down-to=512 512w,https://framerusercontent.com/images/rTxowGT68CcuRoIoyXaEtvXWvTY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. You\u2019ll see a popup like the one below. Click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the private IP address of your Lightsail instance that\u2019s displayed in the \u201CNetworking\u201A tab of your Lightsail console, and click \u201CAdd Resource\u201A. Congrats! You now have secure, private access to you Lightsail instance and can use it as a staging environment for your WordPress site.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Resource\",className:\"framer-image\",src:\"https://framerusercontent.com/images/S2aZYstknOhCjFsGCiBo7FxLdbo.png\",srcSet:\"https://framerusercontent.com/images/S2aZYstknOhCjFsGCiBo7FxLdbo.png?scale-down-to=512 512w,https://framerusercontent.com/images/S2aZYstknOhCjFsGCiBo7FxLdbo.png 800w\"}),/*#__PURE__*/e(\"h1\",{children:\"Download the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) to authenticate your account and authorize your access to the instance. As an example, let\u2019s walk through setting up the Twingate client on macOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the macOS app \",/*#__PURE__*/e(n,{href:\"https://api.twingate.com/download/darwin\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up (the \",/*#__PURE__*/e(\"code\",{children:\"[abc]\"}),\" part of \",/*#__PURE__*/e(\"code\",{children:\"[abc].twingate.com\"}),\") and click \u201CJoin Network\u201A. You\u2019ll be asked to log in using the same account you used to sign up. After signing in, you\u2019ll see that Twingate is connected with access to the Resource you created.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Client is connected\",className:\"framer-image\",src:\"https://framerusercontent.com/images/JOl7hl5PZgclxqx0JSEtYhG2G8.png\",srcSet:\"https://framerusercontent.com/images/JOl7hl5PZgclxqx0JSEtYhG2G8.png?scale-down-to=512 512w,https://framerusercontent.com/images/JOl7hl5PZgclxqx0JSEtYhG2G8.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Click on \u201COpen in Browser\u2026\u201A and you should see your WordPress site is accessible via the Private IP address of your Lightsail instance, even though it\u2019s not accessible via the Public IP address.\"}),/*#__PURE__*/e(\"img\",{alt:\"Client access\",className:\"framer-image\",src:\"https://framerusercontent.com/images/o9tRyY21uIIuofzjDkwxFjnwAM.png\",srcSet:\"https://framerusercontent.com/images/o9tRyY21uIIuofzjDkwxFjnwAM.png?scale-down-to=512 512w,https://framerusercontent.com/images/o9tRyY21uIIuofzjDkwxFjnwAM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing the site again \u2014 you should see that it\u2019s inaccessible via both the Private and Public IP addresses.\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You\u2019ve finished setting up Twingate for your Lightsail instance and used it to create a staging environment for your WordPress site. If you run anything else on your instance like a web app, you now have a private staging environment for those as well. Join us in the \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access to the WordPress site with a client, collaborator, or friend? You can easily do this from the Twingate web UI. Just go to the \u201CTeam\u201A tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to the WordPress site, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",src:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png\",srcSet:\"https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png?scale-down-to=512 512w,https://framerusercontent.com/images/4lFNmzEPQKj6eeB0cAmIYWvrXY.png 800w\"})]});export const richText4=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"There are common approaches to accessing devices and apps on your home network while you\u2019re away from home, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=plex-media-server\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\",className:\"framer-image\",src:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png\",srcSet:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?scale-down-to=512 512w,https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\"}),/*#__PURE__*/e(\"p\",{children:\"We\u2019ve created a quick start guide below to walk you through the steps to sign up for a free Twingate Starter account. With this account, you can then easily configure secure remote access to lots of devices and servers, including:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Raspberry Pi\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/synology-nas\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Synology NAS\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"On these devices and servers, you can then unlock simple, secure, and free remote acess to a variety of apps and use cases, including\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Home Assistant\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/plex-media-server\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Plex Media Server\"})})})})]}),/*#__PURE__*/t(\"p\",{children:[\"Please join us at our \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share and discuss your experience and projects.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate can be installed either as a Docker container or directly on the OS. If you prefer the first approach, please first \",/*#__PURE__*/e(n,{href:\"https://docs.docker.com/get-docker\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"install Docker\"})}),\".\"]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=starter-setup\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\" to sign up for a Starter account. Creating an account is simple and you can choose to sign up using a Google, Github, or other existing account you have.\"]}),/*#__PURE__*/e(\"p\",{children:\"Complete the short questionnaire and choose a Network Name and URL on Step 3. This URL (in this example, \u201Cjlhome\u201A) will be a unique identifier that you\u2019ll use later to connect your clients.\"}),/*#__PURE__*/e(\"img\",{alt:\"Name your network\",className:\"framer-image\",src:\"https://framerusercontent.com/images/VI2GfZ28R9pIfe2pVoNPKtQ9OU.png\",srcSet:\"https://framerusercontent.com/images/VI2GfZ28R9pIfe2pVoNPKtQ9OU.png?scale-down-to=512 512w,https://framerusercontent.com/images/VI2GfZ28R9pIfe2pVoNPKtQ9OU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Name your network\"}),/*#__PURE__*/e(\"p\",{children:\"At this point, you should see a home screen like the one below.\"}),/*#__PURE__*/e(\"img\",{alt:\"Signup complete\",className:\"framer-image\",src:\"https://framerusercontent.com/images/jFnDr4R8lZsqthXPVF4MaAeBtnI.png\",srcSet:\"https://framerusercontent.com/images/jFnDr4R8lZsqthXPVF4MaAeBtnI.png?scale-down-to=512 512w,https://framerusercontent.com/images/jFnDr4R8lZsqthXPVF4MaAeBtnI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Signup complete\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"p\",{children:\"Click on the \u201CAdd a Remote Network\u201A button, and you should see a popup. Twingate supports many different kinds of remote networks. If you are looking to connect to AWS, Azure, or GCP, then select the appropriate option in the dropdown menu. If you are connecting to your home network, choose \u201COther\u201A for the Location. Regardless of which option you choose, give the network a name, like \u201CHome Network\u201A, then click \u201CAdd Remote Network\u201A to create it.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Remote Network\",className:\"framer-image\",src:\"https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png\",srcSet:\"https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png?scale-down-to=512 512w,https://framerusercontent.com/images/5nUDs3njYPZaemmR5rnr7Dz5dU.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Remote Network\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector is a piece of software that allows for secure access to your remote network and the devices connected to it (e.g., your Raspberry Pi or Synology NAS). For it to work, you first need to deploy the Connector on your devices. Click on the remote network you just created and you should see a screen like the one below with two automatically generated Connectors (the names are random) that are not yet connected.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector\",className:\"framer-image\",src:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png\",srcSet:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png?scale-down-to=512 512w,https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"Choose one of the two Connectors and click on the \u201CDeploy Connector\u201A button. You\u2019ll see a Controller configuration page like the one below with several deployment options. The Connector can be deployed on a variety of devices and servers. Please follow the appropriate instructions below:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Raspberry Pi\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/synology-nas\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Synology NAS\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"After deploying the Connector, return to the Twingate web portal and you should see that the Connector\u2019s status has automatically turned green, indicating that the Connector was successfully deployed.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",src:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png\",srcSet:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/t(\"p\",{children:[\"You\u2019ve now set up a Connector on your Synology NAS. This Connector enables remote access for any device or service on your home network (called a \u201CResource\u201A in Twingate). We\u2019ve put together some guides for things that we\u2019re tinkering on at home ourselves, but please join us in the \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share how things went and what other cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/raspberry-pi-home-assistant\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Home Assistant\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/plex-media-server\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Plex Media Server\"})})})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to the devices and resources that you choose.\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",src:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png\",srcSet:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png?scale-down-to=512 512w,https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]});export const richText5=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"OpenVPN is a twenty-year-old protocol for delivering remote access to protected networks. Available in many commercial and consumer VPN applications, OpenVPN is a simpler, more performant alternative to \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/ipsec\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"IPsec\"})}),\". Yet, OpenVPN suffers from the weaknesses inherent to all \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN technologies\"})}),\". It simply is not designed to handle the realities of today\u2019s distributed, cloud-enabled networking ecosystem.\"]}),/*#__PURE__*/t(\"p\",{children:[\"In this article, we will explain why OpenVPN and other VPN protocols are no longer suited to how the world works today. We will compare \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Twingate\"})}),\" with OpenVPN\u2019s legacy technology and show how our modern approach is more secure, more performant, easier to use, and more responsive to today\u2019s dynamic business conditions.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is OpenVPN?\"}),/*#__PURE__*/e(\"p\",{children:\"OpenVPN is an open-source protocol for establishing virtual private network connections. First developed in 2001, the protocol\u2019s configurability has led to widespread adoption by consumer and commercial VPN providers alike. The capabilities this protocol offers includes:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"SSL/TLS security through the OpenSSL library\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/tcp-vs-udp\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"TCP/UDP\"})}),\" tunneling\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Dynamic IP addressing and DHCP\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Native \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"authentication\"})}),\" through pre-shared keys or certificates\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"With twenty years of community development effort behind it, the OpenVPN protocol has been ported to a wide range of platforms including all major desktop and mobile operating systems. Open-source VPN router firmware projects such as DD-WRT have also integrated the OpenVPN protocol.\"}),/*#__PURE__*/e(\"p\",{children:\"The project\u2019s original developers also founded OpenVPN, Inc. to commercialize their protocol through two main product lines. OpenVPN Access Server is a Linux-based VPN solution for small and medium businesses. OpenVPN Cloud is a managed remote access service that lets companies avoid maintaining their own servers.\"}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Security Capabilities vs. Twingate & Zero Trust\"}),/*#__PURE__*/t(\"p\",{children:[\"The \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN\"})}),\" architecture that OpenVPN is based on is as old as the public internet. They were originally developed to provide secure, network-to-network connections over the internet. That fundamental concept remained as it evolved to support remote access features. As a result, \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN\"})}),\" technologies create two major security weaknesses:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Public visibility\"}),\" - All VPN gateways publish their presence on the internet, letting hackers monitor them for vulnerabilities.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network access\"}),\" - A compromised client device or VPN gateway gives hackers full access to the protected network.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/ztna\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust Network Access\"})}),\" solutions such as Twingate\u2019s are designed for a networking environment in which nothing is reliably secure. Breaches could happen at any time \u2014 and may already be in progress.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Rather than defending entire networks, Twingate establishes \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/sdp-vs-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"software-defined perimeters\"})}),\" around each resource, hiding it from public and private networks alike. Connections are only created once a user has been \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"authenticated and authorized\"})}),\" through role-based \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"least-privilege access\"})}),\" policies. Twingate\u2019s \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/zero-trust-security\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\"})}),\" solution dramatically reduces an organization\u2019s attack surface and limits hackers\u2019 abilities to move through a network.\"]}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Performance vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"At the heart of OpenVPN\u2019s decades-old architecture is the assumption that a company\u2019s resources, devices, and users are in the same physical location. Today\u2019s internet-connected architectures make this secure perimeter paradigm obsolete. Resources and users could be anywhere. The OpenVPN protocol\u2019s outdated model imposes severe performance penalties on company networks and the user experience.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network congestion\"}),\" - \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN gateways\"})}),\" are bottlenecks through which all remote traffic flows. But gateway capacity is limited. Without expensive upgrades, the congestion caused by remote working impacts network performance.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network latency\"}),\" - Traffic flowing between remote users and cloud resources must pass through the VPN gateway. This two-step routing adds latency to users\u2019 connections and undermines productivity.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate eliminates these performance penalties by establishing direct, encrypted connections between user devices and resources. In addition, default split tunneling shifts non-essential user traffic to the public internet. Replacing legacy OpenVPN with Twingate\u2019s \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust solution\"})}),\" lowers bandwidth demands on private networks and reduces the latency of user connections.\"]}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Ease of Use vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Whether using OpenVPN or other protocols, VPN-based remote access technologies are difficult to use and manage. End-users must frequently interact with the VPN client software. This is especially true when companies mitigate VPN\u2019s weaknesses through network segmentation. Users must connect and disconnect their VPN each time they need a resource on a different subnet.\"}),/*#__PURE__*/t(\"p\",{children:[\"Since VPN is a remote access solution, it does not apply to on-premises workers. A company\u2019s VPN system is also limited to protecting its private networks. Cloud platforms have their own VPN security systems. As a result, administrators must synchronize policies and permissions across these discrete various \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/access-control-essentials\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"access control\"})}),\" systems.\"]}),/*#__PURE__*/e(\"p\",{children:\"Twingate eliminates these sources of friction. No matter where users are, they get a better experience with a client app that works seamlessly with every resource. Administrators can use simple management consoles to apply consistent policies no matter where the user or resource is located.\"}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Scalability vs. Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"OpenVPN and other legacy technologies integrate \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/access-control-essentials\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"access control\"})}),\" into the \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/network-architecture\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"network architecture\"})}),\". This makes VPN more brittle and less responsive to changing business demands. Any changes to the network will impact access policies and vice versa. Ensuring that changes do not impact operations takes time and resources.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s software-based solution decouples access control from the physical network. No new infrastructure or changes to configurations are needed. Network administrators can keep the existing network names and IP addresses. In addition, Twingate integrates with \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/docs/identity-providers\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"major identity providers\"})}),\" and other elements of a company\u2019s existing security stack.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate customers have deployed their \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/ztna\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\"})}),\" systems in as little as 15 minutes. Our service-based model removes much of the burden that VPN change management places on IT teams. As business demands evolve, easy-to-use consoles let administrators add, change, and remove user permissions with a few mouse clicks.\"]}),/*#__PURE__*/e(\"h1\",{children:\"OpenVPN Support vs. Twingate\"}),/*#__PURE__*/e(\"p\",{children:\"Like many open-source projects, the support for the OpenVPN protocol is a mix of community-driven forums and vendor-specific resources. This can get complicated since VPN vendors may modify their implementation of OpenVPN. For example, some vendors will use different encryption algorithms to improve performance on their OpenVPN servers. Identifying the best source for support in these cases is not always clear-cut.\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate customers have a single source for all their support needs. Individuals and small teams using our free Starter Tier can rely on a \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" focused on Twingate\u2019s solution. Large teams and organizations using our paid tiers have direct access to Twingate\u2019s support team.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate enhances security beyond access control\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern, \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust security solution\"})}),\" delivers more than remote access control. You can enhance your organizations with additional capabilities including:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Universal 2-factor authentication\"}),\" - Twingate integrates with 2FA providers and extends \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/docs/two-factor-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"2FA protection\"})}),\" to any private resource. Without any settings changes, services such as SSH can get the same level of \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/access-control-essentials\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"access control\"})}),\" as databases and other resources.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device restrictions\"}),\" - Take access control beyond user identity by applying \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"authorizations\"})}),\" based on the posture of specific devices. As access requests are made, Twingate can evaluate the device\u2019s security settings, operating system status, and other variables. Policies can limit or prohibit access based on the device\u2019s real-time \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"security posture\"})}),\".\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Activity logging\"}),\" - Twingate\u2019s extensive logging gives administrators enterprise-wide visibility over how their networks are being used. All activity logs are indexed to the identity of each user and device to better establish baseline usage patterns and identify unusual activity.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"DNS filtering\"}),\" - Besides integrating with identity providers, Twingate is compatible with other security services such as DNS filtering to help protect users\u2019 public internet access.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Improve security, performance, and usability with Twingate\u2019s Zero Trust solution\"}),/*#__PURE__*/t(\"p\",{children:[\"OpenVPN and other VPN protocols were developed in a networking world that no longer exists. Their reliance on the secure perimeter paradigm makes \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN\"})}),\" solutions less secure, difficult to manage, and harder to scale. With fewer resources and users sitting in a company facility, the topology of VPN architectures imposes significant penalties on a company\u2019s private network performance and user experience.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s modern approach based on principles of \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\"})}),\" eliminates the burden and friction of legacy technologies like OpenVPN. You can implement Twingate quickly without changing your network. Management becomes much simpler by consolidating control of access to all resources \u2014 no matter where they are located \u2014 within Twingate\u2019s single, easy-to-use system. And Twingate improves security by reducing your company\u2019s attack surface and taking away hackers\u2019 ability to move laterally.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=what-is-openvpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Contact us\"})}),\" to learn more about Twingate\u2019s \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\"})}),\" solution. To get a zero-risk experience of Twingate in action, try out our new \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=what-is-openvpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Starter service\"})}),\". Perfect for individuals and small teams, this free service lets you provide up to 5 users remote access to a private network.\"]})]});export const richText6=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"A network-attached storage device (or NAS) is a great way to backup your files or your entire computer. But beyond just storage, a NAS is itself also a computer that can be used for example as a media server to access your photos or watch your movies. This works fine when you are at home, but what\u2019s the best way to access your NAS when you are out and about?\"}),/*#__PURE__*/t(\"p\",{children:[\"There are some common approaches, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=synology-nas\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\",className:\"framer-image\",src:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png\",srcSet:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?scale-down-to=512 512w,https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve created a quick start guide below to walk you through the steps to get Twingate up and running on Synology, a popular NAS option, but the same concept would work for TrueNAS, Unraid, and others. Please join us at our \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share and discuss your experience and projects.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"The rest of this guide assumes that you have a couple components already installed. If not, please following these instructions first:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://kb.synology.com/en-us/DSM/help/DSM/MainMenu/get_started?version=6\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Set up your Synology NAS\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://kb.synology.com/en-us/DSM/help/Docker/docker_desc?version=6\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Install Docker on your Synology NAS\"})})})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=synology-nas\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\" and follow the simple steps to sign up for a Starter account and begin the initial setup. Creating an account is simple and you can choose to sign up using a Google, Github, or other existing account you have.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector is a piece of software that allows for secure access to your remote network and the devices connected to it (in this case, your Synology NAS). For it to work, you first need to deploy the Connector on your Synology NAS. Click on the remote network you just created and you should see a screen like the one below with two automatically generated Connectors (the names are random) that are not yet connected.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector\",className:\"framer-image\",src:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png\",srcSet:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png?scale-down-to=512 512w,https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"Choose one of the two Connectors and click on the \u201CDeploy Connector\u201A button. You\u2019ll see a Controller configuration page like the one below with several deployment options. You can keep the default option (Docker).\"}),/*#__PURE__*/e(\"h2\",{children:\"Docker deployment\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector via Docker\",className:\"framer-image\",src:\"https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png\",srcSet:\"https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png?scale-down-to=512 512w,https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector via Docker\"}),/*#__PURE__*/e(\"p\",{children:\"The next step is to generate tokens for the Connector. Scroll down to Step 2 and click the \u201CGenerate Tokens\u201A button. You\u2019ll see a popup like below asking you to re-authenticate using whichever account you used to sign up (e.g., Google). After doing so, you\u2019ll come back to this page and see that two tokens have been generated. You will need these tokens in a little bit.\"}),/*#__PURE__*/e(\"img\",{alt:\"Generate tokens\",className:\"framer-image\",src:\"https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png\",srcSet:\"https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png?scale-down-to=512 512w,https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Generate tokens\"}),/*#__PURE__*/e(\"h2\",{children:\"Install the Twingate Connector on your Synology NAS\"}),/*#__PURE__*/t(\"p\",{children:[\"Open Docker on your Synology NAS, click on \u201CRegistry\u201A in the left side panel, search for \",/*#__PURE__*/e(\"code\",{children:\"twingate\"}),\", select \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"}),\", and click \u201CDownload\u201A to install it.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Install the Twingate Connector via Docker\",className:\"framer-image\",src:\"https://framerusercontent.com/images/G2wgIJksEOvF0mmnzGk9608SyPs.png\",srcSet:\"https://framerusercontent.com/images/G2wgIJksEOvF0mmnzGk9608SyPs.png?scale-down-to=512 512w,https://framerusercontent.com/images/G2wgIJksEOvF0mmnzGk9608SyPs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Install the Twingate Connector via Docker\"}),/*#__PURE__*/e(\"p\",{children:\"Click on the \u201CImage\u201A tab and you sould see the Connector. Select it and click on the \u201CLaunch\u201A button. In the \u201CGeneral Settings\u201A screen, give the Connector a name and then click on \u201CAdvanced Settings\u201A.\"}),/*#__PURE__*/e(\"img\",{alt:\"Docker container general settings\",className:\"framer-image\",src:\"https://framerusercontent.com/images/duFNbpZvh5M49a0cQDfmFUCs.png\",srcSet:\"https://framerusercontent.com/images/duFNbpZvh5M49a0cQDfmFUCs.png?scale-down-to=512 512w,https://framerusercontent.com/images/duFNbpZvh5M49a0cQDfmFUCs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Docker container general settings\"}),/*#__PURE__*/e(\"p\",{children:\"Under \u201CAdvanced Settings\u201A, go to the \u201CNetwork\u201A tab, and make sure to check the box next to \u201CUse the same network as Docker Host\u201A.\"}),/*#__PURE__*/e(\"img\",{alt:\"Docker container advanced settings\",className:\"framer-image\",src:\"https://framerusercontent.com/images/4GR0JEeQh0mv3ihprgdftWeod50.png\",srcSet:\"https://framerusercontent.com/images/4GR0JEeQh0mv3ihprgdftWeod50.png?scale-down-to=512 512w,https://framerusercontent.com/images/4GR0JEeQh0mv3ihprgdftWeod50.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Docker container advanced settings\"}),/*#__PURE__*/t(\"p\",{children:[\"Next, go to the \u201CEnvironment\u201A tab and you should see several variables listed. Make sure that the \",/*#__PURE__*/e(\"code\",{children:\"REFRESH_TOKEN\"}),\", \",/*#__PURE__*/e(\"code\",{children:\"ACCESS_TOKEN\"}),\", and \",/*#__PURE__*/e(\"code\",{children:\"TENANT_URL\"}),\" variables are defined. For the first two variables, paste in the two tokens that you generated earlier. For the third variable, enter your Twingate URL (e.g., \",/*#__PURE__*/e(\"code\",{children:\"https://jlhome.twingate.com\"}),\").\"]}),/*#__PURE__*/e(\"img\",{alt:\"Docker container environment variables\",className:\"framer-image\",src:\"https://framerusercontent.com/images/1XCFu2RyjKlpP2EHmwjdkiNzzs.png\",srcSet:\"https://framerusercontent.com/images/1XCFu2RyjKlpP2EHmwjdkiNzzs.png?scale-down-to=512 512w,https://framerusercontent.com/images/1XCFu2RyjKlpP2EHmwjdkiNzzs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Docker container environment variables\"}),/*#__PURE__*/e(\"p\",{children:\"Click \u201CApply\u201A to save the settings, then click \u201CNext\u201A and you should see a summary of the settings you configured. Make sure to check \u201CRun this container after the wizard is finished\u201A and click \u201CApply\u201A. The container for your Twingate Connector should have been successfully created. Check in Docker that the container is running. If it is not, click the on/off toggle on the right.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back the Twingate web portal and you should see that the Connector\u2019s status has automatically turned green, indicating that the Connector was successfully deployed.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",src:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png\",srcSet:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"h2\",{children:\"Keeping the Twingate connector up to date\"}),/*#__PURE__*/e(\"p\",{children:\"We regularly update our connector with improvements. Follow these steps to update your Docker container:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Go to the \u201CRegistry\u201A tab and download the latest version of \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Go to the \u201CContainer\u201A tab and stop \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Go to the \u201CActions\u201A menu and select \u201CClear\u201A (or might be named \u201CReset\u201A)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Restart the \",/*#__PURE__*/e(\"code\",{children:\"twingate/connector\"}),\" container\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/t(\"p\",{children:[\"You\u2019ve now set up a Connector on your Synology NAS. This Connector enables remote access for any device or service on your home network (called a \u201CResource\u201A in Twingate). Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. You\u2019ll see a popup like the one below. Click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the local IP address of your Synology NAS (probably something like \",/*#__PURE__*/e(\"code\",{children:\"10.x.x.x\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"192.168.x.x\"}),\"), choose 5000 for the Port Restriction, and click \u201CAdd Resource\u201A.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Add a Resource\",className:\"framer-image\",src:\"https://framerusercontent.com/images/1PHAa95fN9f9AD1tOXRDAFE27EQ.png\",srcSet:\"https://framerusercontent.com/images/1PHAa95fN9f9AD1tOXRDAFE27EQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/1PHAa95fN9f9AD1tOXRDAFE27EQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Congrats! Your Synology NAS is now enabled for secure remote access.\"}),/*#__PURE__*/e(\"img\",{alt:\"Setup is complete\",className:\"framer-image\",src:\"https://framerusercontent.com/images/ZpJOqrglSCpmDjTjEV9HJLj7Eg.png\",srcSet:\"https://framerusercontent.com/images/ZpJOqrglSCpmDjTjEV9HJLj7Eg.png?scale-down-to=512 512w,https://framerusercontent.com/images/ZpJOqrglSCpmDjTjEV9HJLj7Eg.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Setup is complete\"}),/*#__PURE__*/e(\"h1\",{children:\"Set up the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) and access your Synology NAS. As an example, let\u2019s walk through setting up the Twingate client on iOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the iOS app \",/*#__PURE__*/e(n,{href:\"https://api.twingate.com/download/ios\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up and tap \u201CJoin Network\u201A. You\u2019ll be automatically asked to log in using the same account you used to sign up. After signing in, you\u2019ll land on the home screen, where you should already see your Synology NAS Resource listed. When you are connected to your Twingate network, a \u201CVPN\u201A icon will appear in the top bar of your screen.\"]}),/*#__PURE__*/e(\"p\",{children:\"To test it out, stay connected to Twingate, disconnect from your local network (e.g., by disabling WiFi), and navigate to your Synology NAS on your phone\u2019s browser. You should be able to access it just as if you were at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing it again \u2014 you should see that it\u2019s inaccessible.\"}),/*#__PURE__*/e(\"p\",{children:\"Congrats! You\u2019ve finished setting up Twingate for Synology NAS. You can now securely access anything that you have running on your Synology NAS, such as:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Streaming photos, music, or videos stored on your NAS from anywhere\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Monitoring and reviewing camera footage using Surveillance Station\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Using your NAS as a file server that you can use from anywhere\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Join us in the \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share how things went and what cool use cases you\u2019ve discovered!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Client setup\",className:\"framer-image\",src:\"https://framerusercontent.com/images/EslHATFQyfHLJJSdE7QFMx9zs.png\",srcSet:\"https://framerusercontent.com/images/EslHATFQyfHLJJSdE7QFMx9zs.png?scale-down-to=512 512w,https://framerusercontent.com/images/EslHATFQyfHLJJSdE7QFMx9zs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Client setup\"}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to your Synology NAS, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",src:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png\",srcSet:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png?scale-down-to=512 512w,https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]});export const richText7=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"If you are like us, you need a secure remote access solution for your job, and maybe you already use Twingate at work.\"}),/*#__PURE__*/e(\"p\",{children:\"Also like us, you might enjoy tinkering at home with devices that you want to be able to securely access and control when you\u2019re away. For example, if you have a Raspberry Pi, you could set up Home Assistant on it to control and automate your smart devices. But what\u2019s the best way to access it when you are not at home?\"}),/*#__PURE__*/t(\"p\",{children:[\"There are some common approaches, but as the table below illustrates, they are cumbersome, insecure, and potentially expensive. We are excited to offer a new simple, secure, and free solution: \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/pricing?utm_source=blog&utm_medium=blog&utm_campaign=raspberry-pi-home-assistant\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Twingate Starter\"})}),\"!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\",className:\"framer-image\",src:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png\",srcSet:\"https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png?scale-down-to=512 512w,https://framerusercontent.com/images/rO7Zjjqq5v2MrA7U5RCtv50FVU0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Twingate remote access does not require setting up a VPN, port forwarding, static IP addresses, or configuring DDNS\"}),/*#__PURE__*/t(\"p\",{children:[\"We\u2019ve created a quick start guide below to walk you through the steps to get Twingate up and running on your Raspberry Pi. Please join us at our \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share and discuss your experience and projects.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Prerequisites\"}),/*#__PURE__*/e(\"p\",{children:\"The rest of this guide assumes that you have a few components already installed. If not, please following these instructions first:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.raspberrypi.com/documentation/computers/getting-started.html\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Set up your Raspberry Pi\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(n,{href:\"https://www.home-assistant.io/installation/raspberrypi\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Install Home Assistant on your Raspberry Pi\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Twingate can be installed either as a Docker container or directly on the OS. If you prefer the first approach, please first \",/*#__PURE__*/e(n,{href:\"https://docs.docker.com/get-docker\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"install Docker\"})}),\".\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Sign up for Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate Starter is a new free plan that is designed for home and personal use. If you don\u2019t have an account already, please click \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/twingate-starter-setup?utm_source=blog&utm_medium=blog&utm_campaign=raspberry-pi-home-assistant\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\" to sign up for a Starter account. Creating an account is simple and you can choose to sign up using a Google, Github, or other existing account you have.\"]}),/*#__PURE__*/e(\"h1\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"The Twingate Connector is a piece of software that allows for secure access to your remote network and the devices connected to it (in this case, your Raspberry Pi). For it to work, you first need to deploy the Connector on your Raspberry Pi. Click on the remote network you just created and you should see a screen like the one below with two automatically generated Connectors (the names are random) that are not yet connected.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector\",className:\"framer-image\",src:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png\",srcSet:\"https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png?scale-down-to=512 512w,https://framerusercontent.com/images/SjVoRD3I66SrdN96PQ6AaQ4hPI.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector\"}),/*#__PURE__*/e(\"p\",{children:\"Choose one of the two Connectors and click on the \u201CDeploy Connector\u201A button. You\u2019ll see a Controller configuration page like the one below with several deployment options. We\u2019ll walk through the Docker method first and then also cover the Linux method further below.\"}),/*#__PURE__*/e(\"h2\",{children:\"Docker deployment\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector via Docker\",className:\"framer-image\",src:\"https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png\",srcSet:\"https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png?scale-down-to=512 512w,https://framerusercontent.com/images/lyiqB9xK58gM4UoEgU6DUXrWsVs.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector via Docker\"}),/*#__PURE__*/e(\"p\",{children:\"The next step is to generate tokens for the Connector. Scroll down to Step 2 and click the \u201CGenerate Tokens\u201A button. You\u2019ll see a popup like below asking you to re-authenticate using whichever account you used to sign up (e.g., Google). After doing so, you\u2019ll come back to this page and see that two tokens have been generated.\"}),/*#__PURE__*/e(\"img\",{alt:\"Generate tokens\",className:\"framer-image\",src:\"https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png\",srcSet:\"https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png?scale-down-to=512 512w,https://framerusercontent.com/images/HxnjHNBFmGGgLCvT4dhKJU2r7o.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Generate tokens\"}),/*#__PURE__*/t(\"p\",{children:[\"Scroll down to Step 4 and copy the Docker command that has been automatically generated. Paste this into a terminal on your Raspberry Pi (you may need to add \",/*#__PURE__*/e(\"code\",{children:\"sudo\"}),\" at the beginning).\"]}),/*#__PURE__*/e(\"img\",{alt:\"Copy command\",className:\"framer-image\",src:\"https://framerusercontent.com/images/jupud568QSdHaoNuIOaE5mAis.png\",srcSet:\"https://framerusercontent.com/images/jupud568QSdHaoNuIOaE5mAis.png?scale-down-to=512 512w,https://framerusercontent.com/images/jupud568QSdHaoNuIOaE5mAis.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Copy command\"}),/*#__PURE__*/t(\"p\",{children:[\"The command should have run successfully in seconds. (You may also be asked to enter a password if you ran the command with \",/*#__PURE__*/e(\"code\",{children:\"sudo\"}),\" at the beginning.) You can check that the Connector is running using \",/*#__PURE__*/e(\"code\",{children:\"sudo docker ps\"}),\".\"]}),/*#__PURE__*/e(\"img\",{alt:\"Check docker ps\",className:\"framer-image\",src:\"https://framerusercontent.com/images/ndYW2lQqAURFl0Et2obY4QZLv6M.png\",srcSet:\"https://framerusercontent.com/images/ndYW2lQqAURFl0Et2obY4QZLv6M.png?scale-down-to=512 512w,https://framerusercontent.com/images/ndYW2lQqAURFl0Et2obY4QZLv6M.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Check docker ps\"}),/*#__PURE__*/e(\"p\",{children:\"If you go back to the Connector configuration page, you should also see that the Connection Status has also automatically turned green. Congrats! You\u2019ve successfully deployed your Connector.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",src:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png\",srcSet:\"https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png?scale-down-to=512 512w,https://framerusercontent.com/images/OA6Qk2khsAw8PsQMK9z5mJGsyfQ.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"h2\",{children:\"Linux deployment\"}),/*#__PURE__*/t(\"p\",{children:[\"An alternative method is to deploy the Connector directly on the Linux OS. We support \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/docs/connectors-on-linux#supported-distributions\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"multiple distributions\"})}),\". Choose the other automatically generated Connector and click the \u201CLinux\u201A box under Step 1.\"]}),/*#__PURE__*/e(\"img\",{alt:\"Add a Connector via Linux\",className:\"framer-image\",src:\"https://framerusercontent.com/images/LmxXMzuZNN3q6TiZrrIpfOVMQj4.png\",srcSet:\"https://framerusercontent.com/images/LmxXMzuZNN3q6TiZrrIpfOVMQj4.png?scale-down-to=512 512w,https://framerusercontent.com/images/LmxXMzuZNN3q6TiZrrIpfOVMQj4.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Connector via Linux\"}),/*#__PURE__*/e(\"p\",{children:\"Just like with the Docker method, you\u2019ll need to generate tokens for Step 2. This will also prompt you to authenticate again using the account you used to sign up.\"}),/*#__PURE__*/e(\"img\",{alt:\"Generate tokens\",className:\"framer-image\",src:\"https://framerusercontent.com/images/k78LtZ7SuoXr9xoPXih1h5Kp65M.png\",srcSet:\"https://framerusercontent.com/images/k78LtZ7SuoXr9xoPXih1h5Kp65M.png?scale-down-to=512 512w,https://framerusercontent.com/images/k78LtZ7SuoXr9xoPXih1h5Kp65M.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Generate tokens\"}),/*#__PURE__*/e(\"p\",{children:\"After authenticating, you\u2019ll see two tokens were generated and a command was automatically generated under Step 3. Click the button to copy the command and run it in a shell terminal.\"}),/*#__PURE__*/e(\"img\",{alt:\"Copy command\",className:\"framer-image\",src:\"https://framerusercontent.com/images/2MfTdcKM8npvg2QzLXXf4iokqSk.png\",srcSet:\"https://framerusercontent.com/images/2MfTdcKM8npvg2QzLXXf4iokqSk.png?scale-down-to=512 512w,https://framerusercontent.com/images/2MfTdcKM8npvg2QzLXXf4iokqSk.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Copy command\"}),/*#__PURE__*/e(\"p\",{children:\"The command should take a couple minutes to run, after which you should see that the Connector\u2019s status has automatically turned green on the Twingate web portal.\"}),/*#__PURE__*/e(\"img\",{alt:\"Connector is connected\",className:\"framer-image\",src:\"https://framerusercontent.com/images/t2ch1epU5uFZzPFxdxAfIwcIH0.png\",srcSet:\"https://framerusercontent.com/images/t2ch1epU5uFZzPFxdxAfIwcIH0.png?scale-down-to=512 512w,https://framerusercontent.com/images/t2ch1epU5uFZzPFxdxAfIwcIH0.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Connector is connected\"}),/*#__PURE__*/e(\"h1\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"You\u2019ve now set up a Connector on your Raspberry Pi. This Connector enables remote access for any device or service on your home network (called a \u201CResource\u201A in Twingate). For now, we\u2019re just interested in enabling access to the Home Assistant service on the Raspberry Pi, so we need to add it as a Resource.\"}),/*#__PURE__*/e(\"p\",{children:\"Go back to your Remote Network and click on the \u201CAdd Resource\u201A link. You\u2019ll see a popup like the one below. Click on the \u201CCIDR Address\u201A box, choose a Label name for the Resource, enter the local IP address of Home Assistant (likely something like 192.168.xxx.xxx), choose 8123 for the Port Restriction, and click \u201CAdd Resource\u201A.\"}),/*#__PURE__*/e(\"img\",{alt:\"Add a Resource\",className:\"framer-image\",src:\"https://framerusercontent.com/images/jFxTzP0DoFNtfojLE2rtbsrVx4.png\",srcSet:\"https://framerusercontent.com/images/jFxTzP0DoFNtfojLE2rtbsrVx4.png?scale-down-to=512 512w,https://framerusercontent.com/images/jFxTzP0DoFNtfojLE2rtbsrVx4.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Add a Resource\"}),/*#__PURE__*/e(\"p\",{children:\"Congrats! Your Home Assistant is now enabled for secure remote access!\"}),/*#__PURE__*/e(\"img\",{alt:\"Setup is complete\",className:\"framer-image\",src:\"https://framerusercontent.com/images/CP4KUnwl1MeKB0kuyf5z83fLYNY.png\",srcSet:\"https://framerusercontent.com/images/CP4KUnwl1MeKB0kuyf5z83fLYNY.png?scale-down-to=512 512w,https://framerusercontent.com/images/CP4KUnwl1MeKB0kuyf5z83fLYNY.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Setup is complete\"}),/*#__PURE__*/e(\"h1\",{children:\"Set up the Twingate client\"}),/*#__PURE__*/e(\"p\",{children:\"All that\u2019s left to do now is to install Twingate on your device (we support Windows, Mac, Linux and have apps for iOS and Android) and access your Raspberry Pi + Home Assistant. As an example, let\u2019s walk through setting up the Twingate client on iOS.\"}),/*#__PURE__*/t(\"p\",{children:[\"First, download and install the iOS app \",/*#__PURE__*/e(n,{href:\"https://api.twingate.com/download/ios\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"here\"})}),\". Type in the Network URL that you chose when you signed up and tap \u201CJoin Network\u201A. You\u2019ll be automatically asked to log in using the same account you used to sign up. After signing in, you\u2019ll land on the home screen, where you should already see your Home Assistant Resource listed. When you are connected to your Twingate network, a \u201CVPN\u201A icon will appear in the top bar of your screen.\"]}),/*#__PURE__*/e(\"p\",{children:\"To test it out, stay connected to Twingate, disconnect from your local network (e.g., by disabling WiFi), and navigate to your Home Assistant instance on your phone\u2019s browser. You should be able to access it just as if you were at home.\"}),/*#__PURE__*/e(\"p\",{children:\"Finally, disconnect from Twingate and try accessing Home Assistant again \u2014 you should see that it\u2019s inaccessible.\"}),/*#__PURE__*/t(\"p\",{children:[\"Congrats! You\u2019ve finished setting up Twingate for Raspberry Pi + Home Assistant. Join us in the \",/*#__PURE__*/e(n,{href:\"https://forum.twingate.com/\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"community forum\"})}),\" to share how things went and what cool integrations you\u2019ve set up!\"]}),/*#__PURE__*/e(\"img\",{alt:\"Client setup\",className:\"framer-image\",src:\"https://framerusercontent.com/images/nM4KIa6ml0uw4kA1IFwtcdTqvM.png\",srcSet:\"https://framerusercontent.com/images/nM4KIa6ml0uw4kA1IFwtcdTqvM.png?scale-down-to=512 512w,https://framerusercontent.com/images/nM4KIa6ml0uw4kA1IFwtcdTqvM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Client setup\"}),/*#__PURE__*/e(\"h1\",{children:\"Sharing is Caring\"}),/*#__PURE__*/e(\"p\",{children:\"Do you want to share access with a family member? You can easily do this from the Twingate web UI. Just go to the Team tab and click \u201CInvite User\u201A to send an email invitation. The recipient would simply follow the same steps to download the Twingate client, join your network, and get access to Home Assistant, or any other resource you set up!\"}),/*#__PURE__*/e(\"img\",{alt:\"Invite other users\",className:\"framer-image\",src:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png\",srcSet:\"https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png?scale-down-to=512 512w,https://framerusercontent.com/images/wJPtFs7Rp1d8H5qfpBe42WwnM.png 800w\"}),/*#__PURE__*/e(\"p\",{children:\"Invite other users\"})]});export const richText8=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"As traditional \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN technologies\"})}),\" become less effective and more problematic, companies are searching for another way to provide secure remote access to their private resources. Mesh VPN solutions offer an alternative that replaces VPN\u2019s original hub-and-spoke model with a distributed, peer-to-peer topology. Although it solves some problems, mesh VPN does not address all the challenges modern enterprises face.\"]}),/*#__PURE__*/t(\"p\",{children:[\"We will explain what mesh VPNs are, how they work, and how they differ from traditional VPN solutions. As enterprise networks and workforces become more distributed, however, mesh VPNs add complexity and struggle to scale. Secure access solutions based on \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust principles\"})}),\" are better suited for how business works today.\"]}),/*#__PURE__*/e(\"h1\",{children:\"What is mesh VPN?\"}),/*#__PURE__*/t(\"p\",{children:[\"A mesh VPN is a private, centrally-managed peer-to-peer (P2P) network that creates direct, secure connections between any two member nodes. Unlike public P2P services such as Gnutella or BitTorrent, mesh VPN solutions give administrators control over \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/access-control-essentials\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"access\"})}),\" and visibility into network activity. That central control does not extend to the mesh VPN\u2019s data traffic which passes directly between nodes through encrypted tunnels.\"]}),/*#__PURE__*/e(\"p\",{children:\"Mesh VPNs let organizations build efficient network topologies that link multiple geographically separated sites together without running them through a central location. Increasingly, companies are looking at mesh VPNs to support distributed workforces.\"}),/*#__PURE__*/e(\"h2\",{children:\"How Mesh VPNs work\"}),/*#__PURE__*/e(\"p\",{children:\"Most of the work in a mesh VPN is done by software agents running on each node. The agent maintains a list of the other nodes in the network and their public keys and IP addresses. When two nodes connect, they exchange keys and establish an encrypted connection.\"}),/*#__PURE__*/e(\"p\",{children:\"Some mesh VPNs, such as the open-source project tinc, use a pure P2P model. However, many solutions take a hybrid approach to centralize some features. For example, the list of authorized nodes may be synchronized from a central server rather than distributed by the P2P agents themselves.\"}),/*#__PURE__*/e(\"h1\",{children:\"The difference between Mesh and Traditional Hub and Spoke\"}),/*#__PURE__*/t(\"p\",{children:[\"Mesh VPNs attempt to address some of the weaknesses inherent to the traditional hub and spoke \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN topologies\"})}),\". Originally created as an affordable, internet-based solution to wide-area networking, VPN was designed to connect a few trusted networks. It was only later that VPN\u2019s features extended to providing remote access. Even then, the remote users were a small subset of the company\u2019s employees.\"]}),/*#__PURE__*/e(\"h2\",{children:\"Hub and Spoke VPN topologies\"}),/*#__PURE__*/e(\"p\",{children:\"A hub and spoke topology was a logical design decision. A VPN gateway provided a central point for remote offices and users to access the central, protected network. However, in today\u2019s distributed network environment, this approach creates significant challenges.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"VPN gateway visibility:\"}),\" The VPN gateway must have a public IP address to be discoverable by remote clients. But that visibility also makes the gateway discoverable by anybody \u2014 including cybercriminals.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Full network access:\"}),\" VPN gateways treat any authenticated client as a trusted network. The user and device get full access to the protected network. Should hackers compromise a device, they are free to roam wherever they want.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network performance:\"}),\" The hub and spoke model forces all traffic from the spokes through the VPN gateway. This includes any traffic between users and cloud-based resources. As a result, throughput and latency often suffer.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Flexibility and scalability:\"}),\" All traffic must be encrypted and decrypted as it passes through the gateway. If demand for remote access increases suddenly, the performance of a company\u2019s existing VPN appliances or servers may not be enough to handle the increased workload. The time and resources needed to upgrade VPN capacity make the technology less responsive to dynamic business needs.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Distributed VPN topologies\"}),/*#__PURE__*/e(\"p\",{children:\"Mesh VPNs eliminate the centralized structure of traditional VPN solutions in favor of a P2P approach. This distributed topology offers several improvements:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Hidden nodes:\"}),\" The list of node addresses is not published outside the mesh VPN so the attack surface is smaller.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Access control:\"}),\" Administrators can determine what a node can see and connect to within the mesh VPN.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"User experience:\"}),\" Direct connections can follow the most performant route to improve user experience.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Network performance:\"}),\" Since traffic is not concentrated through a gateway, traffic on the company\u2019s network is reduced.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"However, mesh VPNs do not fix every weakness in the \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN model\"})}),\" \u2014 and they create new issues that companies must address.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Node addresses:\"}),\" Some mesh VPN solutions require each node to have a unique IP address across all networks. Readdressing every node has knock-on effects throughout the organization. The network infrastructure, system settings, and workflows must be updated. Users must change their bookmarks and learn how to use the new addresses.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Scalability:\"}),\" Companies are used to having VPN clients running on every user device. Mesh VPNs also need agents running on every device hosting a resource. That includes every on-prem server and cloud VM. As a result, mesh VPNs increase administrative overhead.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Complexity:\"}),\" The complexity of mesh VPN solutions can require higher levels of expertise to manage. Some solutions, for example, require policies to be written in JSON rather than being set in simple user interfaces.\"]})})]}),/*#__PURE__*/e(\"h2\",{children:\"Hybrid VPN topologies\"}),/*#__PURE__*/e(\"p\",{children:\"Companies searching for an alternative to a traditional hub and spoke VPN are not limited to distributed mesh solutions. VPN\u2019s original site-to-site capability, for example, can alleviate the pressure on the company\u2019s central hub. VPN gateways at regional offices provide local network access while site-to-site VPN connections handle the traffic passing between offices. This approach becomes challenging to manage and expensive as the number of site-to-site connections increase.\"}),/*#__PURE__*/e(\"p\",{children:\"Dynamic multipoint VPN (DMVPN) blends the hub-and-spoke and mesh topologies. The network still has a central VPN gateway that forms the hub for incoming connections. When traffic needs to pass from one node to another, the DMVPN gateway dynamically configures a direct, peer-to-peer connection. DMVPNs are complex enterprise solutions requiring expertise to deploy and manage.\"}),/*#__PURE__*/e(\"h1\",{children:\"VPN considerations vs. Zero Trust secure access\"}),/*#__PURE__*/t(\"p\",{children:[\"Whether it is the traditional hub-and-spoke model, the distributed mesh model, or something in between, \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"VPN technologies\"})}),\" are no longer the best solutions for modern businesses. Resources are distributed across on-premises systems, co-located servers, private clouds, and X-as-a-Service platforms. Work-from-home policies and a growing reliance on contractors and other third parties mean remote access is no longer limited to a handful of executives and field engineers.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/zero-trust-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\"})}),\" is a modern alternative to VPN that provides more efficient and performant access to resources while improving a company\u2019s security posture. Central to Zero Trust is the concept that any network has probably been breached. In that light, every connection attempt \u2014 regardless of the user, device, or network \u2014 may be an attack. \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Authentication\"})}),\" and \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/access-control-models\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"role-based authorization\"})}),\" is needed before any connection request is granted. And with access control rules based on \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/principle-of-least-privilege\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"principles of least privilege\"})}),\", users may only access the specific resources they need to do their jobs.\"]}),/*#__PURE__*/e(\"h1\",{children:\"How Twingate enhances security beyond access control\"}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust solution\"})}),\" is designed from the ground up as an enterprise product. From established businesses to rapidly-growing startups, we understand our customers\u2019 challenges and designed a solution that meets their needs.\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Deployment:\"}),\" Twingate coexists with your network infrastructure. You do not need to add hardware or reconfigure systems. This lets you roll out \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust\"})}),\" gradually without disrupting business operations.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Manageability:\"}),\" Mesh VPNs need to have software running on every device may work for smaller networks but becomes impractical in dynamic enterprise environments. Twingate\u2019s lightweight Connector software can be installed on each network segment or VPC host.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Security stack integration:\"}),\" Twingate integrates with the \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/docs/identity-providers\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"major identity providers\"})}),\" and \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/docs/two-factor-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"two-factor authentication\"})}),\" solutions you already use. Better yet, we extend 2FA to protect services such as SSH.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Device posture:\"}),\" Twingate lets you set \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/authorization-vs-authentication\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"authorization policies\"})}),\" based on \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/device-trust-in-a-zero-trust-world\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"device posture\"})}),\". Operating system version, antivirus status, and other factors can limit the degree of resource access any device receives.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Indexed activity logs:\"}),\" Twingate makes it easier to identify usage patterns and detect potential attacks by indexing all activity logs to user and device identities.\"]})})]}),/*#__PURE__*/e(\"h1\",{children:\"Secure distributed networks with Twingate\"}),/*#__PURE__*/t(\"p\",{children:[\"Mesh VPNs are an attempt to mitigate the weaknesses of \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/blog/business-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"traditional VPN technologies\"})}),\" by replacing hub-and-spoke with distributed, peer-to-peer topologies. They address some of VPN\u2019s security weaknesses and eliminate the VPN gateways that undermine network performance. However, mesh VPNs introduce other issues that make them less suitable for modern businesses.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Twingate\u2019s \",/*#__PURE__*/e(n,{href:\"https://www.twingate.com/zero-trust\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Zero Trust-based approach\"})}),\" to secure access is designed for the way enterprises work today. Able to protect resources wherever they are located, easy to deploy, and simple to manage, Twingate reduces the friction businesses experience on the path to Zero Trust Network Access.\"]}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(n,{href:\"https://www.twingate.com/demo?utm_source=blog&utm_medium=blog&utm_campaign=mesh-vpn\",motionChild:!0,nodeId:\"wtyR92LHZ\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(o.a,{children:\"Contact us\"})}),\" today to learn more about Twingate\u2019s distributed network architecture.\"]})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText7\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText6\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText8\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "motion", "richText1", "richText2", "richText3", "richText4", "richText5", "richText6", "richText7", "richText8", "__FramerMetadata__"]
}
