{
  "checked_on": "2026-11-07",
  "basis": "Source-based client workflows; no StealthVPN deployment, connectivity or security test performed.",
  "sources": {
    "wg-ui": {
      "title": "WireGuard Windows client source",
      "url": "https://git.zx2c4.com/wireguard-windows/tree/ui/tunnelspage.go",
      "checked_on": "2026-11-09"
    },
    "wg-install": {
      "title": "WireGuard official installation options",
      "url": "https://www.wireguard.com/install/",
      "checked_on": "2026-11-09"
    },
    "wg-routes": {
      "title": "wg-quick routing and configuration reference",
      "url": "https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8",
      "checked_on": "2026-11-09"
    },
    "wg-start": {
      "title": "WireGuard quick start and peer configuration",
      "url": "https://www.wireguard.com/quickstart/",
      "checked_on": "2026-11-09"
    },
    "wg-windows": {
      "title": "IPFire project: WireGuard Windows workflow",
      "url": "https://www.ipfire.org/docs/configuration/services/wireguard/windows",
      "checked_on": "2026-11-09"
    },
    "ovpn-gui": {
      "title": "OpenVPN Community: using OpenVPN GUI",
      "url": "https://community.openvpn.net/Pages/OpenVPN-GUI-New",
      "checked_on": "2026-11-09"
    },
    "ovpn-readme": {
      "title": "OpenVPN GUI official README",
      "url": "https://github.com/OpenVPN/openvpn-gui#readme",
      "checked_on": "2026-11-09"
    },
    "ss-android": {
      "title": "strongSwan Android client documentation",
      "url": "https://docs.strongswan.org/docs/latest/os/androidVpnClient.html",
      "checked_on": "2026-11-09"
    },
    "ss-profiles": {
      "title": "strongSwan profile import and credential fields",
      "url": "https://docs.strongswan.org/docs/latest/os/androidVpnClientProfiles.html",
      "checked_on": "2026-11-09"
    },
    "ss-store": {
      "title": "strongSwan Project: official Android listing and screenshots",
      "url": "https://play.google.com/store/apps/details?id=org.strongswan.android",
      "checked_on": "2026-11-07"
    },
    "se-adapter": {
      "title": "SoftEther manual: virtual network adapters",
      "url": "https://www.softether.org/4-docs/1-manual/4._SoftEther_VPN_Client_Manual/4.3_Virtual_Network_Adapter",
      "checked_on": "2026-11-09"
    },
    "se-settings": {
      "title": "SoftEther manual: connection and certificate settings",
      "url": "https://www.softether.org/4-docs/1-manual/4._SoftEther_VPN_Client_Manual/4.4_Making_Connection_to_VPN_Server",
      "checked_on": "2026-11-09"
    },
    "se-connect": {
      "title": "SoftEther manual: connecting, status and disconnecting",
      "url": "https://www.softether.org/4-docs/1-manual/4/4.5_Connect_to_VPN_Server",
      "checked_on": "2026-11-09"
    },
    "se-screens": {
      "title": "SoftEther project: Windows client screenshots",
      "url": "https://www.softether.org/3-screens/2.vpnclient",
      "checked_on": "2026-11-07"
    },
    "proton-mac": {
      "title": "Proton: macOS app and macOS 15 extension approval",
      "url": "https://protonvpn.com/support/protonvpn-mac-vpn-application",
      "checked_on": "2026-11-07"
    },
    "proton-mac-trouble": {
      "title": "Proton: macOS connection troubleshooting",
      "url": "https://protonvpn.com/support/common-macos-issues-protonvpn",
      "checked_on": "2026-11-07"
    },
    "proton-ios-manual": {
      "title": "Proton: manual WireGuard on iPhone and iPad",
      "url": "https://protonvpn.com/support/wireguard-manual-ios",
      "checked_on": "2026-11-07"
    },
    "proton-tv": {
      "title": "Proton: Android TV setup and troubleshooting",
      "url": "https://protonvpn.com/support/android-tv",
      "checked_on": "2026-11-07"
    },
    "gl-wireguard": {
      "title": "GL.iNet: manual WireGuard client setup (firmware 4.7+)",
      "url": "https://docs.gl-inet.com/router/en/4/interface_guide/wireguard_client/#set-up-wireguard-client-manually-for-other-providers",
      "checked_on": "2026-11-07"
    },
    "gl-dashboard": {
      "title": "GL.iNet: VPN Dashboard for firmware 4.8",
      "url": "https://docs.gl-inet.com/router/en/4/interface_guide/vpn_dashboard_v4.8/",
      "checked_on": "2026-11-07"
    },
    "gl-killswitch": {
      "title": "GL.iNet: different kill switches in firmware 4.7 and 4.8",
      "url": "https://docs.gl-inet.com/router/en/4/faq/block_non_vpn_traffic/",
      "checked_on": "2026-11-07"
    },
    "netflix-vpn": {
      "title": "Netflix: watching with a VPN",
      "url": "https://help.netflix.com/en/node/114701",
      "checked_on": "2026-11-07"
    },
    "ovpn-install": {
      "title": "OpenVPN Community Windows installers",
      "url": "https://openvpn.net/community/",
      "checked_on": "2026-11-09"
    },
    "se-client": {
      "title": "SoftEther manual: choosing Client Manager",
      "url": "https://www.softether.org/4-docs/1-manual/4._SoftEther_VPN_Client_Manual/4.2_Using_the_VPN_Client",
      "checked_on": "2026-11-09"
    },
    "proton-windows": {
      "title": "Proton: official WireGuard client on Windows",
      "url": "https://protonvpn.com/support/wireguard-manual-windows",
      "checked_on": "2026-11-09"
    }
  },
  "images": {
    "openvpn-import.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ovpn-gui"
      ],
      "width": 766,
      "height": 124,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "OpenVPN Community screenshot: Import menu with Import file selected.",
      "original_url": "https://community.openvpn.net/Pages/OpenVPN-GUI-New/import-menu1.png"
    },
    "openvpn-connect.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ovpn-gui"
      ],
      "width": 361,
      "height": 284,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "OpenVPN Community screenshot: profile submenu with Connect, Disconnect and View Log actions.",
      "original_url": "https://community.openvpn.net/Pages/OpenVPN-GUI-New/main-2-connect.png"
    },
    "openvpn-log.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ovpn-gui"
      ],
      "width": 360,
      "height": 283,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "OpenVPN Community screenshot: View Log in the profile submenu.",
      "original_url": "https://community.openvpn.net/Pages/OpenVPN-GUI-New/main-2-view-log.png"
    },
    "strongswan-1.webp": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ss-store"
      ],
      "width": 280,
      "height": 592,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "strongSwan Project screenshot: Android profile list with no active VPN.",
      "original_url": "https://play-lh.googleusercontent.com/CFISDtNuJe627ir_TJvkQtGN2JRXsmsB-NkGAGFfOaxa1hj7CCqfeVWDgGyp0EHI_z_tTXGgTL8LVz3v2PRU=w1052-h592-rw"
    },
    "strongswan-2.webp": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ss-store"
      ],
      "width": 280,
      "height": 592,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "strongSwan Project screenshot: example Home profile connected, with a Disconnect button.",
      "original_url": "https://play-lh.googleusercontent.com/VJf6CKS0trVqo-tp-UNVO-des8mjIbE3uEsdemj_ZiBUImTha7l5UKu1b9BTVeXGO5VbF6i-OjRxUU6zqdVhKw=w1052-h592-rw"
    },
    "strongswan-3.webp": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ss-store"
      ],
      "width": 280,
      "height": 592,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "strongSwan Project screenshot: profile editor with server, VPN type, username and CA certificate selection.",
      "original_url": "https://play-lh.googleusercontent.com/9iByfWCPS1zMfLne4jZcjcwc7ZjN6Cr4Y3x6IotZ8Elp3AG37OSYJca93LyPi_nlILEs2RR3r4IIWrwl7ezMHZc=w1052-h592-rw"
    },
    "softether-manager.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "se-screens"
      ],
      "width": 550,
      "height": 311,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "SoftEther project screenshot: Client Manager with connection settings and virtual adapters.",
      "original_url": "https://www.softether.org/@api/deki/files/524/=0-00-4-2-1.png?size=webview"
    },
    "softether-connection.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "se-settings"
      ],
      "width": 550,
      "height": 413,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "SoftEther project screenshot: connection properties for server, port, Virtual Hub, authentication and adapter.",
      "original_url": "https://www.softether.org/@api/deki/files/248/=4-4-1.png?size=webview"
    },
    "softether-certificate-options.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "se-settings"
      ],
      "width": 369,
      "height": 127,
      "credit": "Publisher-supplied example. App version not stated; the interface may differ today.",
      "alt": "SoftEther project screenshot: Always Verify Server Certificate and trusted or individual certificate controls.",
      "original_url": "https://www.softether.org/@api/deki/files/253/=4-4-6.png?size=webview"
    },
    "wireguard-windows-example.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "wg-windows"
      ],
      "width": 828,
      "height": 648,
      "credit": "Unmodified IPFire documentation screenshot, published September 2024. German UI on Windows 11; exact WireGuard build not stated. Addresses and public keys are publisher examples.",
      "alt": "IPFire documentation screenshot of WireGuard on Windows: a saved tunnel, DNS, peer routes, endpoint and Activate control; German interface.",
      "original_url": "https://www.ipfire.org/docs/configuration/services/wireguard/windows/Wireguard-win11.png?s=2048&revision=2024-09-21+16%3A58%3A07.335771",
      "checked_on": "2026-11-09",
      "rights": "Project documentation image used as an attributed instructional reference; not a StealthVPN screen capture."
    },
    "openvpn-tray.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ovpn-gui"
      ],
      "width": 217,
      "height": 72,
      "credit": "Unmodified project-documentation example; exact client build not stated. Use your own settings.",
      "alt": "OpenVPN project screenshot pointing out the Windows notification-area arrow for hidden tray icons.",
      "original_url": "https://community.openvpn.net/Pages/OpenVPN-GUI-New/show-hidden-icons.png",
      "checked_on": "2026-11-09",
      "rights": "Project documentation image used as an attributed instructional reference; not a StealthVPN screen capture."
    },
    "openvpn-import-success.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ovpn-gui"
      ],
      "width": 180,
      "height": 143,
      "credit": "Unmodified project-documentation example; exact client build not stated. Use your own settings.",
      "alt": "OpenVPN project screenshot of the successful profile-import confirmation.",
      "original_url": "https://community.openvpn.net/Pages/OpenVPN-GUI-New/import-success.png",
      "checked_on": "2026-11-09",
      "rights": "Project documentation image used as an attributed instructional reference; not a StealthVPN screen capture."
    },
    "openvpn-credentials.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "ovpn-gui"
      ],
      "width": 578,
      "height": 376,
      "credit": "Historical OpenVPN documentation screenshot; the window shows GUI 11.10.0.0 / OpenVPN 2.4.6. Current styling may differ; this illustrates the credential prompt.",
      "alt": "OpenVPN project screenshot of a blank username/password prompt with an unchecked Save password box.",
      "original_url": "https://community.openvpn.net/Pages/OpenVPN-GUI-New/userpass.png",
      "checked_on": "2026-11-09",
      "rights": "Project documentation image used as an attributed instructional reference; not a StealthVPN screen capture."
    },
    "softether-create-adapter.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "se-adapter"
      ],
      "width": 455,
      "height": 212,
      "credit": "Historical SoftEther manual screenshot on Windows 8. It illustrates the adapter dialog; follow current client and OS requirements.",
      "alt": "SoftEther project screenshot of the Create New Virtual Network Adapter dialog with an example adapter name.",
      "original_url": "https://www.softether.org/@api/deki/files/242/=4-3-2.png?size=webview",
      "checked_on": "2026-11-09",
      "rights": "Project documentation image used as an attributed instructional reference; not a StealthVPN screen capture."
    },
    "proton-mac-install.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-mac"
      ],
      "width": 1024,
      "height": 628,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "Open the downloaded app in Finder",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_1024,h_628,c_scale/f_png/v1793274622/wp-vpn/macos-install-2/macos-install-2.png?_i=AA"
    },
    "proton-mac-extension.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-mac"
      ],
      "width": 1024,
      "height": 858,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated. Shows the macOS 15 extension dialog.",
      "alt": "macOS 15 (Sequoia) enable WireGuard extension",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_1024,h_858,c_scale/f_png/v1732613200/wp-vpn/macos-network-extension/macos-network-extension.png?_i=AA"
    },
    "proton-mac-connected.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-mac"
      ],
      "width": 1200,
      "height": 677,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "You are connected!",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_1200,h_677,c_scale/f_png/v1721664296/wp-vpn/use-macos-9/use-macos-9.png?_i=AA"
    },
    "wireguard-ios-add.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-ios-manual"
      ],
      "width": 400,
      "height": 711,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "Add a tunnel",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_400,h_711,c_scale/f_png/v1721664359/wp-vpn/wg-ios-1/wg-ios-1.png?_i=AA"
    },
    "wireguard-ios-import.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-ios-manual"
      ],
      "width": 400,
      "height": 424,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "Create from file or archive",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_400,h_424,c_scale/f_png/v1721664349/wp-vpn/wg-ios-2/wg-ios-2.png?_i=AA"
    },
    "wireguard-ios-active.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-ios-manual"
      ],
      "width": 401,
      "height": 148,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "Start the VPN connection",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_401,h_148,c_scale/f_png/v1721664356/wp-vpn/wg-ios-4/wg-ios-4.png?_i=AA"
    },
    "proton-tv-home.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-tv"
      ],
      "width": 1024,
      "height": 575,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "Connect to Proton VPN on Android TV 1",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_1024,h_575,c_scale/f_png/v1761297910/wp-vpn/image-19_12703ef063/image-19_12703ef063.png?_i=AA"
    },
    "proton-tv-signin.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-tv"
      ],
      "width": 1024,
      "height": 569,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated. The pictured QR is the publisher’s example; use only the code on your own TV.",
      "alt": "Select Trouble signing in?",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_1024,h_569,c_scale/f_png/v1782217834/wp-vpn/atv-qr-5/atv-qr-5.png?_i=AA"
    },
    "gl-wireguard-global.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "gl-dashboard"
      ],
      "width": 593,
      "height": 350,
      "credit": "GL.iNet router documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "vpn mode",
      "asset_url": "https://static.gl-inet.com/docs/router/en/4/interface_guide/vpn_dashboard/4.8/global_mode.png"
    },
    "gl-wireguard-connected.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "gl-dashboard"
      ],
      "width": 945,
      "height": 599,
      "credit": "GL.iNet router documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "connected global mode",
      "asset_url": "https://static.gl-inet.com/docs/router/en/4/interface_guide/vpn_dashboard/4.8/connected-global-mode.png"
    },
    "softether-connecting.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "se-settings"
      ],
      "width": 392,
      "height": 138,
      "credit": "SoftEther project manual; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "SoftEther connection progress dialog",
      "asset_url": "https://www.softether.org/@api/deki/files/257/=4-4-10.png?size=webview"
    },
    "softether-disconnect.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "se-settings"
      ],
      "width": 464,
      "height": 200,
      "credit": "SoftEther project manual; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "SoftEther disconnect confirmation",
      "asset_url": "https://www.softether.org/@api/deki/files/261/=4-4-14.png?size=webview"
    },
    "wireguard-windows-1.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-windows"
      ],
      "width": 655,
      "height": 511,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "Import Tunnel(s) from File",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_655,h_511,c_scale/f_png/v1721664421/wp-vpn/windows-wg-1/windows-wg-1.png?_i=AA"
    },
    "wireguard-windows-2.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-windows"
      ],
      "width": 655,
      "height": 510,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "Activate the VPN tunnel",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_655,h_510,c_scale/f_png/v1721664426/wp-vpn/windows-wg-2/windows-wg-2.png?_i=AA"
    },
    "wireguard-windows-3.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-windows"
      ],
      "width": 655,
      "height": 510,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated.",
      "alt": "Official WireGuard Windows client showing active state, Deactivate, last handshake and transfer counters.",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_655,h_510,c_scale/f_png/v1721664431/wp-vpn/windows-wg-3/windows-wg-3.png?_i=AA"
    },
    "wireguard-download-page.png": {
      "kind": "Documentation screenshot",
      "source_ids": [
        "wg-install"
      ],
      "width": 1280,
      "height": 820,
      "alt": "Installation - WireGuard — official documentation page.",
      "credit": "StealthVPN browser capture of the official documentation, 9 November 2026. Shows the website, not an installed application or completed connection.",
      "asset_url": "https://www.wireguard.com/install/"
    },
    "openvpn-download-page.png": {
      "kind": "Documentation screenshot",
      "source_ids": [
        "ovpn-install"
      ],
      "width": 1280,
      "height": 820,
      "alt": "Download OpenVPN Community Edition (Open Source) | OpenVPN — official documentation page.",
      "credit": "StealthVPN browser capture of the official documentation, 9 November 2026. Shows the website, not an installed application or completed connection.",
      "asset_url": "https://openvpn.net/community/"
    },
    "strongswan-docs-page.png": {
      "kind": "Documentation screenshot",
      "source_ids": [
        "ss-android"
      ],
      "width": 1280,
      "height": 820,
      "alt": "strongSwan VPN Client for Android :: strongSwan Documentation — official documentation page.",
      "credit": "StealthVPN browser capture of the official documentation, 9 November 2026. Shows the website, not an installed application or completed connection.",
      "asset_url": "https://docs.strongswan.org/docs/latest/os/androidVpnClient.html"
    },
    "proton-tv-select-server.png": {
      "kind": "Publisher screenshot",
      "source_ids": [
        "proton-tv"
      ],
      "width": 1000,
      "height": 562,
      "credit": "Proton support documentation; unmodified publisher screenshot. Published example, not our connection. Exact application build is not stated. This panel shows the controls before connection.",
      "alt": "Proton Android TV server panel with Connect and Favorite controls; not yet connected.",
      "asset_url": "https://res.cloudinary.com/dbulfrlrz/images/w_1000,h_562,c_scale/f_png/v1721665543/wp-vpn/adroidtv3/adroidtv3.png?_i=AA"
    }
  },
  "guides": {
    "wireguard": {
      "name": "WireGuard",
      "title": "Connect with WireGuard on Windows",
      "platform": "Windows client",
      "thumbnail": "wireguard-windows-example.png",
      "scope": "Connect an existing, authorized gateway. Server deployment is separate.",
      "before": [
        "Install the official Windows client.",
        "Obtain a trusted .conf profile and confirm the gateway, routes and DNS with its operator."
      ],
      "steps": [
        {
          "title": "Install the official Windows client",
          "text": "Start with the client for your operating system.",
          "actions": [
            "Open the official installation page linked below and choose Windows.",
            "Run the installer with the required permission, then open WireGuard."
          ],
          "image": "wireguard-download-page.png",
          "look_for": "The WireGuard client opens; installing it alone has not created a tunnel.",
          "source_ids": [
            "wg-install"
          ]
        },
        {
          "title": "Import your device’s configuration",
          "text": "Have the profile ready before creating the connection.",
          "actions": [
            "Choose Import tunnel(s) from file and select your issued .conf file.",
            "Select the imported tunnel in the list; keep its keys private."
          ],
          "image": "wireguard-windows-1.png",
          "look_for": "The expected tunnel name appears in the left-hand list.",
          "source_ids": [
            "wg-ui",
            "wg-windows",
            "proton-windows"
          ]
        },
        {
          "title": "Match the profile to your task",
          "text": "Check the gateway and routing scope before activation.",
          "actions": [
            "Compare Endpoint, AllowedIPs and DNS with the operator’s instructions.",
            "In the German screenshot, Endpoint is Endpunkt and AllowedIPs is Erlaubte IPs."
          ],
          "image": "wireguard-windows-example.png",
          "look_for": "Use your own values. The pictured private subnet is an example, not an internet-wide route.",
          "source_ids": [
            "wg-windows",
            "wg-routes"
          ]
        },
        {
          "title": "Understand the route you approved",
          "text": "An endpoint and a destination route answer different questions. The English publisher example shows two IPv4 default-route halves; that is not the private-subnet example above or proof that IPv6 is covered.",
          "actions": [
            "Confirm whether this profile reaches a private subnet or routes internet traffic.",
            "Ask the operator about any unexpected route or resolver before changing it."
          ],
          "image": "wireguard-windows-2.png",
          "look_for": "The intended destinations are covered by the profile’s allowed routes.",
          "source_ids": [
            "wg-routes",
            "wg-start",
            "proton-windows"
          ]
        },
        {
          "title": "Activate the selected tunnel",
          "text": "Choose Activate for the profile you reviewed.",
          "actions": [
            "Select its name, then choose Activate; the English screenshot shows the control before connection.",
            "Approve only the expected permission request for the installed client."
          ],
          "image": "wireguard-windows-2.png",
          "look_for": "The tunnel shows an active local state; the next step checks the peer.",
          "source_ids": [
            "wg-ui",
            "wg-windows",
            "proton-windows"
          ]
        },
        {
          "title": "Check the handshake and your destination",
          "text": "Generate traffic before judging whether the peer responds.",
          "actions": [
            "Open the private resource or permitted destination.",
            "Check for a recent handshake and increasing transfer counters after traffic."
          ],
          "image": "wireguard-windows-3.png",
          "look_for": "The resource works over the intended route; an active switch alone is insufficient.",
          "source_ids": [
            "wg-start",
            "wg-routes",
            "proton-windows"
          ]
        },
        {
          "title": "Deactivate when you are finished",
          "text": "Stop this session from the same client.",
          "actions": [
            "Select Deactivate for the tunnel you connected.",
            "Recheck the resource and any automatic connection setting you enabled."
          ],
          "image": "wireguard-windows-3.png",
          "look_for": "The tunnel is off and traffic behaves as you expected.",
          "source_ids": [
            "wg-ui",
            "wg-start",
            "proton-windows"
          ]
        }
      ],
      "after": "Try the private resource you intended to reach. If the profile routes internet traffic, check the resulting exit and DNS as well. These checks are not an anonymity guarantee.",
      "trouble": "If activation succeeds but traffic fails, recheck the operator’s peer registration, endpoint reachability and allowed routes before changing settings.",
      "version_scope": "Official WireGuard Windows workflow. Proton’s English screenshots and IPFire’s German Windows 11 screenshot are published reference examples; exact client builds are not stated. The IPFire image is from September 2024. Your own gateway and routes may differ.",
      "troubleshooting": [
        {
          "symptom": "Tunnel activates but nothing loads",
          "check": "Generate traffic to the authorized destination, then inspect the peer handshake. Confirm the endpoint, peer registration and AllowedIPs with the operator; an active switch is not a working remote connection."
        },
        {
          "symptom": "Only the private service works",
          "check": "Ask whether the profile is intentionally split routed. A private subnet in AllowedIPs does not mean all internet traffic uses the peer."
        },
        {
          "symptom": "Someone needs a log or picture",
          "check": "Remove private keys and credentials before sharing it. Replace an exposed device key with the operator; hiding the message afterward does not revoke a key."
        }
      ],
      "rollback": "Choose Deactivate for this tunnel. Recheck the intended route afterward. If you enabled on-demand or automatic connection elsewhere, review that setting before assuming the tunnel will stay off.",
      "completion": [
        "The named peer has a recent handshake after traffic is sent.",
        "The intended private resource or permitted internet destination works.",
        "The routes match the operator’s intended scope.",
        "You can deactivate the tunnel and explain what then uses the ordinary connection."
      ],
      "checked_on": "2026-11-09",
      "outcome": "Import your device’s configuration, connect to its peer, check the intended route, and disconnect.",
      "setup_inputs": [
        {
          "label": "Configuration",
          "value": "A .conf file issued for this device by your gateway operator."
        },
        {
          "label": "Destination",
          "value": "The private resource or permitted internet route you want to use."
        },
        {
          "label": "Expected settings",
          "value": "Endpoint, AllowedIPs and DNS supplied by the operator."
        }
      ]
    },
    "openvpn": {
      "name": "OpenVPN Community",
      "title": "Import and use a profile in OpenVPN GUI",
      "platform": "Windows 10 / 11 · OpenVPN GUI",
      "thumbnail": "openvpn-connect.png",
      "scope": "Use the Community GUI with an existing server profile. OpenVPN Connect and Access Server have different interfaces.",
      "before": [
        "Install the official Community package with OpenVPN GUI.",
        "Get your .ovpn profile, required certificates and credentials from the server operator."
      ],
      "steps": [
        {
          "title": "Install Community GUI for Windows",
          "text": "Use the Windows Community package for your computer.",
          "actions": [
            "Choose the correct Windows architecture on the official Community page.",
            "Install OpenVPN GUI and open it; OpenVPN Connect is a separate app."
          ],
          "image": "openvpn-download-page.png",
          "look_for": "OpenVPN GUI is available from Windows.",
          "source_ids": [
            "ovpn-install",
            "ovpn-readme"
          ]
        },
        {
          "title": "Find the notification-area controls",
          "text": "GUI connections are controlled from its tray menu.",
          "actions": [
            "Open OpenVPN GUI from the Start menu.",
            "Check the notification area, including the hidden-icons arrow."
          ],
          "image": "openvpn-tray.png",
          "look_for": "The OpenVPN GUI icon is available to open its menu.",
          "source_ids": [
            "ovpn-gui",
            "ovpn-readme"
          ]
        },
        {
          "title": "Import the .ovpn profile",
          "text": "Use the configuration supplied for your connection.",
          "actions": [
            "Choose Import, then Import file, and select the .ovpn file.",
            "Keep any accompanying certificate files where your operator instructed."
          ],
          "image": "openvpn-import.png",
          "look_for": "The import completes; each profile needs a distinct name.",
          "source_ids": [
            "ovpn-gui"
          ]
        },
        {
          "title": "Confirm the profile was added",
          "text": "Check the result before trying to connect.",
          "actions": [
            "Read the import confirmation, then reopen the tray menu.",
            "Find the intended profile; multiple profiles appear in separate submenus."
          ],
          "image": "openvpn-import-success.png",
          "look_for": "The expected profile is selectable in the tray menu.",
          "source_ids": [
            "ovpn-gui"
          ]
        },
        {
          "title": "Connect and supply required credentials",
          "text": "Use Connect for that profile.",
          "actions": [
            "Choose Connect and enter VPN credentials if the configuration asks.",
            "Provide a second factor if required; review any password-saving choice."
          ],
          "image": "openvpn-credentials.png",
          "look_for": "A credential prompt may appear; a certificate-only profile can follow a different path.",
          "source_ids": [
            "ovpn-gui",
            "ovpn-readme"
          ]
        },
        {
          "title": "Inspect the connection log",
          "text": "Read the result rather than relying on icon color.",
          "actions": [
            "Use View Log for this profile.",
            "Resolve authentication or certificate errors with the operator."
          ],
          "image": "openvpn-log.png",
          "look_for": "No unresolved authentication error remains; keep certificate checks enabled.",
          "source_ids": [
            "ovpn-gui",
            "ovpn-readme"
          ]
        },
        {
          "title": "Try the destination you need",
          "text": "Check useful access over the intended route.",
          "actions": [
            "Open the private service or permitted internet destination.",
            "Confirm whether the profile is split routed or routes internet traffic."
          ],
          "look_for": "The intended resource loads; internet exit changes only if that route uses the VPN.",
          "source_ids": [
            "ovpn-readme"
          ]
        },
        {
          "title": "Disconnect the selected profile",
          "text": "End the session using the tray controls.",
          "actions": [
            "Open the profile menu and choose Disconnect.",
            "Review startup connection settings if you enabled them."
          ],
          "image": "openvpn-connect.png",
          "look_for": "This profile is disconnected and ordinary or blocked traffic behaves as intended.",
          "source_ids": [
            "ovpn-gui",
            "ovpn-readme"
          ]
        }
      ],
      "after": "Verify the resource and route you intended to use. Keep the profile and any embedded credentials private when asking for help.",
      "trouble": "For authentication or certificate failures, ask the operator to confirm the profile and credentials. Share a redacted log, not private keys or passwords.",
      "version_scope": "OpenVPN GUI on Windows 10/11; exact GUI build in the publisher screenshots is not stated. This is not the OpenVPN Connect app.",
      "troubleshooting": [
        {
          "symptom": "No profile in the tray menu",
          "check": "Check that the import completed and the file has the operator’s expected .ovpn profile. OpenVPN Connect uses a different interface."
        },
        {
          "symptom": "Authentication or certificate error",
          "check": "Read View Log, then confirm the credentials, certificate and device clock with the operator. Do not turn off certificate validation to make an error disappear."
        },
        {
          "symptom": "Connected but resource unavailable",
          "check": "Check the route and destination authorization with the operator. Send only a redacted log; imported files can contain private keys."
        }
      ],
      "rollback": "Use Disconnect for the selected profile in the notification-area menu. Turn off any automatic connection you enabled for that profile if you need it to remain off; retain a protected original configuration before replacing it.",
      "completion": [
        "The correct profile is connected and its log has no unresolved authentication error.",
        "The intended resource works over the expected route.",
        "You have not weakened server-certificate verification.",
        "You know the profile’s Disconnect action and automatic-connect setting."
      ],
      "checked_on": "2026-11-09",
      "outcome": "Install Community GUI, import the right profile, authenticate, check access, and disconnect.",
      "setup_inputs": [
        {
          "label": "Client",
          "value": "OpenVPN Community with OpenVPN GUI on Windows 10 or 11."
        },
        {
          "label": "Profile",
          "value": "Your .ovpn file and any separate certificate/key files supplied with it."
        },
        {
          "label": "Authentication",
          "value": "The VPN username/password, certificate or second factor your operator requires."
        }
      ]
    },
    "strongswan": {
      "name": "strongSwan",
      "title": "Create and use an Android IKEv2 profile",
      "platform": "Android · strongSwan VPN Client",
      "thumbnail": "strongswan-3.webp",
      "scope": "This is the Android client workflow, not a swanctl server configuration tutorial.",
      "before": [
        "Install the client from the project’s linked official distribution options.",
        "Obtain the server name, authentication method, credentials and required certificate information."
      ],
      "steps": [
        {
          "title": "Install the client and collect the settings",
          "text": "Use a distribution linked by the strongSwan project.",
          "actions": [
            "Install strongSwan VPN Client for Android.",
            "Ask for the gateway, VPN type, credentials and certificate instructions."
          ],
          "image": "strongswan-docs-page.png",
          "look_for": "You have the required settings or a trusted .sswan import.",
          "source_ids": [
            "ss-android",
            "ss-profiles"
          ]
        },
        {
          "title": "Create the VPN profile",
          "text": "Open Add VPN Profile for a manual configuration.",
          "actions": [
            "Enter the operator’s server and VPN type.",
            "Fill in the authentication fields appropriate to that type."
          ],
          "image": "strongswan-3.webp",
          "look_for": "The profile has your own server and account values.",
          "source_ids": [
            "ss-android",
            "ss-profiles",
            "ss-store"
          ]
        },
        {
          "title": "Check identity and certificate trust",
          "text": "The example server in a screenshot is not your gateway.",
          "actions": [
            "Match the server identity and CA information to the issued instructions.",
            "For certificate authentication, use the operator’s client-certificate procedure."
          ],
          "image": "strongswan-3.webp",
          "look_for": "The identity and trust choice match your gateway.",
          "source_ids": [
            "ss-android",
            "ss-profiles",
            "ss-store"
          ]
        },
        {
          "title": "Save and select the profile",
          "text": "Return to the saved profile list.",
          "actions": [
            "Save your changes.",
            "Tap the profile intended for this connection."
          ],
          "image": "strongswan-1.webp",
          "look_for": "You selected the named profile you just configured.",
          "source_ids": [
            "ss-android",
            "ss-store"
          ]
        },
        {
          "title": "Approve Android’s VPN request",
          "text": "Android may ask the app for VPN permission.",
          "actions": [
            "Check that the expected strongSwan app is requesting the connection.",
            "Approve it and return to the app; system wording varies by Android version."
          ],
          "look_for": "The system permission is granted and connection status appears.",
          "source_ids": [
            "ss-android"
          ]
        },
        {
          "title": "Check the status and destination",
          "text": "A VPN symbol does not describe every app’s routing.",
          "actions": [
            "Inspect status and open the intended resource.",
            "Review any per-app or split-tunnel choices in your profile."
          ],
          "image": "strongswan-2.webp",
          "look_for": "The intended app or destination uses the expected route.",
          "source_ids": [
            "ss-android",
            "ss-profiles",
            "ss-store"
          ]
        },
        {
          "title": "Disconnect and review always-on behavior",
          "text": "Stop deliberately, especially if blocking is enabled.",
          "actions": [
            "Use Disconnect in strongSwan.",
            "Review Android’s always-on/block-without-VPN settings before expecting ordinary traffic."
          ],
          "image": "strongswan-2.webp",
          "look_for": "Traffic either stays blocked or uses the ordinary network, as configured.",
          "source_ids": [
            "ss-android",
            "ss-store"
          ]
        }
      ],
      "after": "Consider leaving the password unsaved: the project’s listing states that passwords saved with profiles are stored as cleartext in the app database.",
      "trouble": "If server identity or certificate verification fails, confirm the expected certificate and server identity with the operator. Do not treat an arbitrary imported CA as proof of trust.",
      "version_scope": "strongSwan VPN Client on Android; exact Android and app builds in the publisher screenshots are not stated.",
      "troubleshooting": [
        {
          "symptom": "Authentication fails",
          "check": "Match the VPN type and identity fields to the operator’s instructions; an account login is not always the IKE identity."
        },
        {
          "symptom": "Certificate is rejected",
          "check": "Confirm the gateway name and trusted CA with the operator. Do not accept an unfamiliar certificate to clear the error."
        },
        {
          "symptom": "VPN symbol appears but resource fails",
          "check": "Check whether that resource is included in the profile’s routes and your account’s access. Inspect the client log without sharing keys or passwords."
        }
      ],
      "rollback": "Use Disconnect for the connection. If Android always-on or block-without-VPN was enabled, review it deliberately in Android VPN settings: stopping the tunnel may intentionally leave traffic blocked. Turning that protection off permits ordinary network traffic.",
      "completion": [
        "The intended profile establishes a connection without unresolved certificate warnings.",
        "The target resource and intended DNS work.",
        "You know whether Android is configured to block traffic without the VPN.",
        "You can disconnect and describe the resulting blocked or ordinary-network behavior."
      ],
      "checked_on": "2026-11-09",
      "outcome": "Create an Android IKEv2 profile, confirm identity, connect, check access, and stop deliberately.",
      "setup_inputs": [
        {
          "label": "Gateway",
          "value": "The server hostname and expected server identity."
        },
        {
          "label": "Authentication",
          "value": "The IKEv2 method and credentials or client certificate specified by the operator."
        },
        {
          "label": "Trust",
          "value": "The CA/certificate information or a trusted .sswan profile."
        }
      ]
    },
    "softether": {
      "name": "SoftEther VPN",
      "title": "Connect with SoftEther VPN Client Manager",
      "platform": "Windows · SoftEther VPN Client",
      "thumbnail": "softether-manager.png",
      "scope": "Connect to an authorized SoftEther server. This does not configure a VPN Gate relay, bridge or server deployment.",
      "before": [
        "Install the official VPN Client, rather than Server Manager.",
        "Obtain the server address, port, Virtual Hub, authentication details and certificate information."
      ],
      "steps": [
        {
          "title": "Open VPN Client Manager",
          "text": "Install and open the SoftEther VPN Client component.",
          "actions": [
            "Use the project download and choose VPN Client for your platform.",
            "Open VPN Client Manager; Server Manager is a different tool."
          ],
          "image": "softether-manager.png",
          "look_for": "Client Manager shows connection settings and virtual adapters.",
          "source_ids": [
            "se-client",
            "se-screens"
          ]
        },
        {
          "title": "Create a virtual adapter if needed",
          "text": "A connection uses a selected virtual network adapter.",
          "actions": [
            "Open Virtual Adapter and choose Create Virtual Network Adapter.",
            "Enter a name that is not already used and confirm creation."
          ],
          "image": "softether-create-adapter.png",
          "look_for": "The adapter appears in Client Manager; use your own name.",
          "source_ids": [
            "se-adapter"
          ]
        },
        {
          "title": "Add the server connection",
          "text": "Create a new connection setting.",
          "actions": [
            "Enter Host Name, Port Number and Virtual Hub Name from the operator.",
            "Give the connection a recognizable name."
          ],
          "image": "softether-connection.png",
          "look_for": "The remote server and hub match the issued instructions.",
          "source_ids": [
            "se-settings"
          ]
        },
        {
          "title": "Choose the adapter and authentication",
          "text": "Different accounts require different authentication methods.",
          "actions": [
            "Select the virtual adapter for this connection.",
            "Choose the instructed authentication type and supply your account details."
          ],
          "image": "softether-connection.png",
          "look_for": "The adapter and authentication fields are complete for your account.",
          "source_ids": [
            "se-settings",
            "se-adapter"
          ]
        },
        {
          "title": "Verify the server certificate",
          "text": "Confirm the identity before connecting.",
          "actions": [
            "Enable Always Verify Server Certificate.",
            "Set the expected CA or server certificate using independently confirmed information."
          ],
          "image": "softether-certificate-options.png",
          "look_for": "An unexplained certificate change is investigated before proceeding.",
          "source_ids": [
            "se-settings"
          ]
        },
        {
          "title": "Save and start the connection",
          "text": "Use the connection you just configured.",
          "actions": [
            "Save the setting and choose Connect.",
            "Read any connection or authentication error instead of hiding it."
          ],
          "image": "softether-connecting.png",
          "look_for": "The intended entry reports an established session.",
          "source_ids": [
            "se-connect",
            "se-settings"
          ]
        },
        {
          "title": "Check the adapter and useful access",
          "text": "The session must reach the destination you need.",
          "actions": [
            "Confirm the intended adapter and its address assignment.",
            "Try the authorized resource and follow the operator’s routing/DNS plan."
          ],
          "image": "softether-manager.png",
          "look_for": "The resource is reachable over the selected connection.",
          "source_ids": [
            "se-adapter",
            "se-connect",
            "se-screens"
          ]
        },
        {
          "title": "Disconnect without removing the adapter",
          "text": "End this session from Client Manager.",
          "actions": [
            "Select this connection and choose Disconnect.",
            "Review startup/reconnect settings; keep adapters used by other profiles."
          ],
          "image": "softether-disconnect.png",
          "look_for": "This session has stopped without disturbing unrelated connections.",
          "source_ids": [
            "se-connect",
            "se-settings"
          ]
        }
      ],
      "after": "Confirm the address assigned to the virtual adapter and access to the intended network. Follow the operator’s routing and DNS plan.",
      "trouble": "For a failed connection, read the status/error details and confirm the gateway, account and certificate rather than disabling encryption or identity verification.",
      "version_scope": "SoftEther VPN Client Manager on Windows; exact Windows and client builds in the publisher screenshots are not stated.",
      "troubleshooting": [
        {
          "symptom": "Cannot establish the session",
          "check": "Confirm server name, port, Virtual Hub and credentials with the gateway operator. These fields refer to different parts of the connection."
        },
        {
          "symptom": "Certificate warning",
          "check": "Verify the expected server certificate with the operator; retain verification rather than accepting an unexplained change."
        },
        {
          "symptom": "Connected but no useful access",
          "check": "Check the selected virtual adapter and the gateway’s routing, address assignment and permissions. A connected session alone does not establish internet routing."
        }
      ],
      "rollback": "Disconnect the specific connection in Client Manager. Review startup connection settings if you enabled them; avoid deleting a shared virtual adapter merely to stop one session.",
      "completion": [
        "The correct server and Virtual Hub session is connected.",
        "The server certificate is verified against the expected identity.",
        "The selected virtual adapter reaches the authorized resource.",
        "You can stop this session without disturbing unrelated connections."
      ],
      "checked_on": "2026-11-09",
      "outcome": "Create an adapter, configure and verify a server connection, check useful access, and disconnect.",
      "setup_inputs": [
        {
          "label": "Server",
          "value": "The operator’s hostname, port and Virtual Hub name."
        },
        {
          "label": "Account",
          "value": "The specified authentication method and your credentials or certificate."
        },
        {
          "label": "Trust & routing",
          "value": "Expected server certificate plus the adapter, address and DNS plan."
        }
      ]
    },
    "proton-macos": {
      "name": "Proton VPN on Mac",
      "title": "Set up Proton VPN on macOS 15",
      "platform": "macOS 15 (Sequoia) · Proton VPN app",
      "version_scope": "Extension steps follow Proton’s documented macOS 15 flow. The current download supports macOS 14+; earlier OS versions have different steps. Exact app build is not stated in the source.",
      "scope": "Install the official client, approve its network extension and make a first connection. This example uses a Proton account; Free and paid plans have different location and feature access.",
      "before": [
        "Check About This Mac: this extension path is for macOS 15, not every Mac release.",
        "Use the official Proton download matching your macOS version and your own account. Keep the existing network settings available for reference."
      ],
      "steps": [
        {
          "title": "Install the official application",
          "text": "Get the matching DMG from Proton’s official download page. Open it and drag Proton VPN into Applications, then launch and sign in. If macOS rejects it, check the download origin and current vendor guidance before changing security settings.",
          "look_for": "The installed app and account match the official publisher.",
          "source_ids": [
            "proton-mac"
          ],
          "image": "proton-mac-install.png"
        },
        {
          "title": "Approve the network extension",
          "text": "For the macOS 15 flow, open System Settings → General → Login Items & Extensions. Under Extensions, open Network Extensions and enable the ProtonVPN WireGuard extension. Approve the VPN configuration when the app requests it.",
          "look_for": "The expected Proton extension is enabled; do not approve an unrelated extension.",
          "source_ids": [
            "proton-mac"
          ],
          "image": "proton-mac-extension.png"
        },
        {
          "title": "Connect and check a normal task",
          "text": "Return to the app and use Quick Connect. Note the reported connection state and try a normal HTTPS site or your intended authorized task. Check the exit only if the task needs one; an exit change is not an anonymity test.",
          "look_for": "A useful connection plus a known way to stop it. Paid-only location or feature controls may not be available on Free.",
          "source_ids": [
            "proton-mac"
          ],
          "image": "proton-mac-connected.png"
        }
      ],
      "after": "Check the app state and actual use together. You have configured a client, not proved its security under every failure condition.",
      "trouble": "Start with the app’s connection information and the vendor’s macOS troubleshooting page.",
      "troubleshooting": [
        {
          "symptom": "Extension approval is missing or different",
          "check": "Check the macOS version first. Proton’s linked instructions explicitly use macOS 15; earlier releases have another approval path."
        },
        {
          "symptom": "App cannot connect",
          "check": "Check the vendor’s macOS troubleshooting flow and record the app/OS version. Avoid clearing app data as an unexplained first step; it may remove settings."
        },
        {
          "symptom": "Internet remains blocked after disconnecting",
          "check": "Review kill-switch and automatic-connect choices in the app. Decide whether traffic should remain blocked before changing them; disabling protection can permit direct traffic."
        }
      ],
      "rollback": "Choose Disconnect in the app. Review automatic connection and kill-switch settings deliberately before quitting it; ordinary internet access and blocking are different intended outcomes. Restore only settings you changed, using your earlier notes.",
      "completion": [
        "The correct extension and VPN configuration were approved.",
        "The app connects and your intended task works.",
        "You know the plan’s location and feature limits.",
        "You can disconnect and understand the chosen failure-blocking behavior."
      ],
      "related": [
        {
          "url": "/providers/protonvpn/#plan-features",
          "label": "Proton plan and platform scope"
        },
        {
          "url": "/guides/topics/privacy/",
          "label": "What a connection check cannot prove"
        }
      ],
      "path": "guides/setup/proton-macos",
      "thumbnail": "proton-mac-connected.png",
      "checked_on": "2026-11-09"
    },
    "wireguard-ios": {
      "name": "WireGuard on iPhone / iPad",
      "title": "Import a WireGuard profile on iPhone or iPad",
      "platform": "iOS / iPadOS · official WireGuard app",
      "version_scope": "Documented file-import flow for the official WireGuard iOS/iPadOS app. The screenshots are published by Proton; the source does not specify the exact app or OS build. Check the App Store requirements for your device.",
      "scope": "Use an existing .conf from a gateway you are authorized to access. Proton’s manual guide is the worked example; a workplace or private gateway may issue a different profile. The gateway and device peer must already exist.",
      "before": [
        "Install the official WireGuard app through the installation link on wireguard.com.",
        "Get a device-specific profile from your authorized gateway operator. Do not upload it to a conversion site or share its QR code: configuration can contain a private key."
      ],
      "steps": [
        {
          "title": "Obtain the device profile",
          "text": "For the Proton example, sign in on the official account site and use Downloads → WireGuard configuration. For another authorized gateway, obtain its profile from the operator instead. Keep the .conf private.",
          "look_for": "The profile is intended for this device and the gateway you expect.",
          "source_ids": [
            "proton-ios-manual",
            "wg-start"
          ],
          "image": "wireguard-ios-add.png"
        },
        {
          "title": "Import and authorize",
          "text": "Open WireGuard, choose Add a tunnel, then Create from file or archive. Select your .conf and approve the iOS/iPadOS VPN-configuration request for the intended app. A saved configuration does not mean the remote peer is reachable.",
          "look_for": "The correct named tunnel appears in the app.",
          "source_ids": [
            "proton-ios-manual"
          ],
          "image": "wireguard-ios-import.png"
        },
        {
          "title": "Activate and verify the intended route",
          "text": "Turn on the switch beside the imported tunnel. Try the destination the operator authorized. Internet exits and private-subnet profiles have different route goals; ask the operator if you do not know which this file uses.",
          "look_for": "Your intended destination works, not merely a local on switch.",
          "source_ids": [
            "proton-ios-manual",
            "wg-start",
            "wg-routes"
          ],
          "image": "wireguard-ios-active.png"
        }
      ],
      "after": "A successful visit to the intended resource is a useful functional check. It does not establish leak protection, failure behavior or parity with a managed provider app.",
      "trouble": "Match the profile, registered device key and route scope with the gateway operator.",
      "troubleshooting": [
        {
          "symptom": "Import fails",
          "check": "Confirm this is a WireGuard .conf for the intended device, not an OpenVPN profile or a screenshot of one."
        },
        {
          "symptom": "Tunnel turns on but resource fails",
          "check": "Confirm the gateway endpoint, registered peer and AllowedIPs with the operator. A default internet route and a private-network route are different."
        },
        {
          "symptom": "Tunnel returns after switching off",
          "check": "Review any on-demand or automatic connection settings you enabled. Do not assume a manual import has every feature of a provider’s own app."
        }
      ],
      "rollback": "Turn off this tunnel in WireGuard and review any on-demand setting you enabled. Verify the result before deleting the profile; retain a protected original if you still need access. Ask the operator to revoke and replace a key if it was exposed.",
      "completion": [
        "The imported profile belongs to this authorized device.",
        "The tunnel reaches the intended gateway and destination.",
        "You know which traffic the profile is intended to route.",
        "You can stop it and keep configuration material private."
      ],
      "related": [
        {
          "url": "/software/wireguard/",
          "label": "WireGuard scope and Windows walkthrough"
        },
        {
          "url": "/guides/vpn-home-network-access/",
          "label": "Private access versus a public VPN exit"
        }
      ],
      "path": "guides/setup/wireguard-ios",
      "thumbnail": "wireguard-ios-import.png",
      "checked_on": "2026-11-09"
    },
    "proton-android-tv": {
      "name": "Proton VPN on Android TV",
      "title": "Connect Proton VPN on Android TV",
      "platform": "Android TV / Google TV · Android 8+",
      "version_scope": "Proton’s current Android TV documentation requires Android 8 or later. Exact app build and TV firmware are not captured. This is not the Fire TV or Apple TV workflow, and an older Chromecast without Google TV cannot run this app.",
      "scope": "Install the official TV app and link your account. Free can run the app; Proton says streaming support requires a paid plan. A supported app does not guarantee a title, catalog or service will play through a VPN.",
      "before": [
        "Check that the device runs Android TV or Google TV with Android 8+.",
        "Have your own Proton account and a trusted second device for sign-in. Use the official TV app store listing; do not follow a code supplied by a stranger."
      ],
      "steps": [
        {
          "title": "Install on the TV itself",
          "text": "Find Proton VPN in the TV’s app store and open it. Confirm the supported OS before installation; a phone app, Fire TV guide or older Chromecast flow is not interchangeable with this one.",
          "look_for": "The official app opens on the intended TV device.",
          "source_ids": [
            "proton-tv"
          ],
          "image": "proton-tv-home.png"
        },
        {
          "title": "Link your own account",
          "text": "Use the app’s QR sign-in, or choose Trouble signing in? for the displayed code. On your trusted second device, type protonvpn.com/tv and enter the code shown on your own TV. Verify the address before signing in.",
          "look_for": "The account links to this TV. Never put a real code in a public screenshot.",
          "source_ids": [
            "proton-tv"
          ],
          "image": "proton-tv-signin.png"
        },
        {
          "title": "Connect, then try the permitted task",
          "text": "Choose an available connection for your plan. Confirm the app connects before trying the TV service. If a service rejects VPN use, follow its rules rather than treating installation as a promise of access. Find the Quick connect entry used to disconnect.",
          "look_for": "Connection state and actual playback are separate checks.",
          "source_ids": [
            "proton-tv",
            "netflix-vpn"
          ],
          "image": "proton-tv-select-server.png"
        }
      ],
      "after": "Check connection, intended use and disconnect separately. Netflix states VPN use has title restrictions and is unsupported for ad-supported viewing or live events; a paid VPN does not remove those limits.",
      "trouble": "First separate an account-link failure, a network failure and a streaming-service restriction.",
      "troubleshooting": [
        {
          "symptom": "No place to enter the TV code",
          "check": "Use protonvpn.com/tv on the second device, including /tv, rather than the main homepage."
        },
        {
          "symptom": "Ethernet drops when connecting",
          "check": "Proton documents an Android TV firmware issue. Check the TV’s firmware updates or try Wi-Fi; do not infer the VPN subscription is incompatible from this symptom alone."
        },
        {
          "symptom": "VPN connects but video does not play",
          "check": "Confirm your VPN plan and the streaming service’s VPN rules. Do not cycle countries to promise access; Netflix has plan and live-viewing restrictions."
        }
      ],
      "rollback": "Open Proton VPN on the TV and use Quick connect to select the currently connected country and disconnect. Turn off Auto-connect if you enabled it and want the TV to remain disconnected. Check the app state before resuming ordinary viewing.",
      "completion": [
        "The app matches the TV platform and supported OS.",
        "The account is linked using your own displayed code.",
        "You checked connection separately from playback and service rules.",
        "You can disconnect and know whether Auto-connect is enabled."
      ],
      "related": [
        {
          "url": "/guides/netflix-vpn-streaming/",
          "label": "Netflix restrictions and TV-specific artwork"
        },
        {
          "url": "/compare/?providers=protonvpn,surfshark",
          "label": "Compare providers, then select Android TV in the task menu"
        }
      ],
      "path": "guides/setup/proton-android-tv",
      "thumbnail": "proton-tv-home.png",
      "checked_on": "2026-11-09"
    },
    "glinet-wireguard": {
      "name": "WireGuard on GL.iNet",
      "title": "Set up a GL.iNet WireGuard client on firmware 4.8",
      "platform": "GL.iNet compatible router · firmware 4.8 VPN Dashboard",
      "version_scope": "This guide deliberately targets the 4.8 dashboard. Manual profile upload follows the vendor’s 4.7+ client instructions. Firmware 4.7 and earlier have a different kill-switch interface; later versions can differ. Confirm the exact model and installed firmware before using these controls.",
      "scope": "Import an authorized client profile and check the intended client-device routing. This does not flash firmware, build a server or certify a router. An ISP router’s VPN-server label does not establish WireGuard-client support.",
      "before": [
        "Confirm your GL.iNet model supports the intended firmware and WireGuard client. Do not upgrade or flash firmware merely to match this example.",
        "Keep local admin access and record the current mode/rules before editing. Obtain a device-specific .conf and arrange a maintenance window: router changes can affect every connected client."
      ],
      "steps": [
        {
          "title": "Import the authorized client profile",
          "text": "In the local admin panel open VPN → WireGuard Client. Choose Add Manually, name the group, upload the authorized .conf and apply. Keep credentials off screenshots and do not paste the profile into a public support message.",
          "look_for": "The intended group and profile are saved; uploading has not proved any traffic uses the tunnel.",
          "source_ids": [
            "gl-wireguard"
          ]
        },
        {
          "title": "Choose the routing and failure behavior",
          "text": "In the 4.8 VPN Dashboard, inspect Global versus Policy Mode before activating. Policy Mode can leave unmatched traffic on the ordinary WAN through All Other Traffic. The per-tunnel kill switch and unmatched-traffic setting are separate; decide what should be blocked rather than relying on a generic shield icon.",
          "look_for": "The selected devices, destinations and failure behavior match your task. Do not disable a protection just to make a page load.",
          "source_ids": [
            "gl-dashboard",
            "gl-killswitch"
          ],
          "image": "gl-wireguard-global.png"
        },
        {
          "title": "Activate and check a client device",
          "text": "Activate the intended tunnel from the dashboard. From a device connected behind this router, try the authorized destination and, for an internet-exit profile, the expected exit. Reading the admin page on the router alone is not a client-routing check.",
          "look_for": "The actual client uses the intended path. Keep local administration reachable before experimenting further.",
          "source_ids": [
            "gl-dashboard"
          ],
          "image": "gl-wireguard-connected.png"
        }
      ],
      "after": "Confirm the chosen client’s route and the dashboard state. Failure blocking needs its own controlled check; a connected icon does not prove the failure policy, IPv6 handling or every client’s path.",
      "trouble": "Separate profile problems from policy selection and intentional blocking before changing anything.",
      "troubleshooting": [
        {
          "symptom": "Router connects but a device bypasses it",
          "check": "Check that the device is actually behind this router and matches the Policy Mode rule. All Other Traffic can deliberately use WAN in firmware 4.8."
        },
        {
          "symptom": "Internet stops when the tunnel stops",
          "check": "This may be the chosen kill-switch behavior. Consult the 4.8 tunnel and unmatched-traffic settings before changing them; restoring direct traffic changes the privacy boundary."
        },
        {
          "symptom": "Controls do not match these screenshots",
          "check": "Check the firmware version. The 4.7 global Block Non-VPN Traffic control differs from 4.8. Use the matching vendor guide instead of guessing a similarly named setting."
        }
      ],
      "rollback": "Use the local admin panel to stop the specific tunnel and restore only the recorded mode/rules you changed. Keep intentional blocking if direct WAN traffic is unacceptable. If you choose to allow ordinary WAN traffic again, pause sensitive work first and verify the intended clients’ paths. Avoid factory reset or firmware changes as routine rollback.",
      "completion": [
        "The model and 4.8 firmware scope match this guide.",
        "The intended client device reaches its authorized destination.",
        "You can explain tunnel failure blocking separately from unmatched traffic.",
        "Local administration and a recorded rollback path remain available."
      ],
      "related": [
        {
          "url": "/software/wireguard/",
          "label": "WireGuard configuration and route basics"
        },
        {
          "url": "/guides/topics/devices/",
          "label": "App, manual profile and router support differ"
        }
      ],
      "path": "guides/setup/glinet-wireguard",
      "thumbnail": "gl-wireguard-connected.png",
      "checked_on": "2026-11-09"
    }
  }
}
