<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>SiteVPN Dispatch</title>
<link>https://sitevpn.com/blog/</link>
<description>Practical, vendor-neutral guides for building a Site VPN with WireGuard, a Linux VPS, cross-platform clients, private websites, and self-hosted web applications.</description>
<language>en-us</language>
<lastBuildDate>Thu, 22 Oct 2026 12:00:00 -0700</lastBuildDate>
<atom:link href="https://sitevpn.com/rss.xml" rel="self" type="application/rss+xml"/>
<generator>SiteVPN.com static publisher</generator>
<item>
<title>SiteVPN.com</title>
<link>https://sitevpn.com/</link>
<guid isPermaLink="true">https://sitevpn.com/</guid>
<pubDate>Thu, 22 Oct 2026 08:00:00 -0700</pubDate>
<category>SiteVPN.com</category>
<description>Practical, vendor-neutral guides for building a Site VPN with WireGuard, a Linux VPS, cross-platform clients, private websites, and self-hosted web applications.</description>
<content:encoded><![CDATA[<p>Practical, vendor-neutral guides for building a Site VPN with WireGuard, a Linux VPS, cross-platform clients, private websites, and self-hosted web applications.</p><p><a href="https://sitevpn.com/">Read this SiteVPN.com guide.</a></p>]]></content:encoded>
</item>
<item>
<title>Site VPN Architecture</title>
<link>https://sitevpn.com/site-vpn/</link>
<guid isPermaLink="true">https://sitevpn.com/site-vpn/</guid>
<pubDate>Thu, 22 Oct 2026 08:00:00 -0700</pubDate>
<category>SiteVPN.com</category>
<description>A reference architecture for encrypted device access, private routing, DNS, TLS, and closed web origins.</description>
<content:encoded><![CDATA[<p>A reference architecture for encrypted device access, private routing, DNS, TLS, and closed web origins.</p><p><a href="https://sitevpn.com/site-vpn/">Read this SiteVPN.com guide.</a></p>]]></content:encoded>
</item>
<item>
<title>WireGuard Site VPN Blueprint</title>
<link>https://sitevpn.com/wireguard/</link>
<guid isPermaLink="true">https://sitevpn.com/wireguard/</guid>
<pubDate>Thu, 22 Oct 2026 08:00:00 -0700</pubDate>
<category>SiteVPN.com</category>
<description>A practical blueprint for a WireGuard gateway on a Linux VPS with unique peers and narrow routes.</description>
<content:encoded><![CDATA[<p>A practical blueprint for a WireGuard gateway on a Linux VPS with unique peers and narrow routes.</p><p><a href="https://sitevpn.com/wireguard/">Read this SiteVPN.com guide.</a></p>]]></content:encoded>
</item>
<item>
<title>Cross-Platform Site VPN Clients</title>
<link>https://sitevpn.com/platforms/</link>
<guid isPermaLink="true">https://sitevpn.com/platforms/</guid>
<pubDate>Thu, 22 Oct 2026 08:00:00 -0700</pubDate>
<category>SiteVPN.com</category>
<description>Onboarding and operating guidance for iOS, Android, Windows, macOS, and Linux.</description>
<content:encoded><![CDATA[<p>Onboarding and operating guidance for iOS, Android, Windows, macOS, and Linux.</p><p><a href="https://sitevpn.com/platforms/">Read this SiteVPN.com guide.</a></p>]]></content:encoded>
</item>
<item>
<title>Private Web Applications</title>
<link>https://sitevpn.com/private-web/</link>
<guid isPermaLink="true">https://sitevpn.com/private-web/</guid>
<pubDate>Thu, 22 Oct 2026 08:00:00 -0700</pubDate>
<category>SiteVPN.com</category>
<description>Private static sites, LAMP and PHP administration, AI chat, forms, webhooks, and payment operations.</description>
<content:encoded><![CDATA[<p>Private static sites, LAMP and PHP administration, AI chat, forms, webhooks, and payment operations.</p><p><a href="https://sitevpn.com/private-web/">Read this SiteVPN.com guide.</a></p>]]></content:encoded>
</item>
<item>
<title>Site VPN Alternatives</title>
<link>https://sitevpn.com/alternatives/</link>
<guid isPermaLink="true">https://sitevpn.com/alternatives/</guid>
<pubDate>Thu, 22 Oct 2026 08:00:00 -0700</pubDate>
<category>SiteVPN.com</category>
<description>A comparison of WireGuard, OpenVPN, managed mesh networks, application tunnels, and reverse proxies.</description>
<content:encoded><![CDATA[<p>A comparison of WireGuard, OpenVPN, managed mesh networks, application tunnels, and reverse proxies.</p><p><a href="https://sitevpn.com/alternatives/">Read this SiteVPN.com guide.</a></p>]]></content:encoded>
</item>
<item>
<title>Site VPN vs Cloudflare Tunnel for Private Websites</title>
<link>https://sitevpn.com/blog/site-vpn-vs-cloudflare-tunnel-private-websites/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/site-vpn-vs-cloudflare-tunnel-private-websites/</guid>
<pubDate>Wed, 30 Sep 2026 09:00:00 -0700</pubDate>
<category>Comparisons</category>
<description>Compare a device-level Site VPN, an outbound application tunnel, and a traditional reverse proxy for private website access.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/site-vpn-vs-cloudflare-tunnel-private-websites-sitevpn.png" width="1200" height="1200" alt="Site VPN vs Cloudflare Tunnel for Private Websites"></p><p class="article-intro">A private website can be reached through several architectures that look similar from the browser but differ substantially underneath. A Site VPN enrolls the device and routes selected network destinations through an encrypted interface. An application tunnel runs a connector beside the origin and creates outbound connections to a provider edge, where identity and proxy policy can be enforced. A traditional public reverse proxy accepts inbound traffic at an exposed address and protects the origin with authentication, firewalling, and web controls.</p><p class="article-intro">None of these patterns is universally best. The choice depends on whether users need only a browser or broader network access, whether the organization wants a third-party edge in the path, what protocols must be carried, how identity is managed, and how the service should behave during provider or gateway outages. This guide treats Cloudflare Tunnel as a well-known example of the application-tunnel pattern while keeping the decision criteria applicable to other services and self-hosted alternatives.</p><h2 id="understand-where-the-trust-boundary-sits">Understand where the trust boundary sits</h2><p>With a Site VPN, the primary network trust boundary is the gateway and its peer configuration. An enrolled device receives routes to private addresses, and the origin can stay off the public web. The browser connects directly to the private service or reverse proxy over the tunnel. Application authentication may still enforce user roles, but network reachability is tied to a device key or managed client.</p><p>With an application tunnel, the origin connector initiates outbound sessions to a provider edge. The browser connects to the provider, and access policy at that edge decides whether to proxy the request through the established tunnel. The <a href="https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/" rel="noopener noreferrer">Cloudflare Tunnel documentation</a> describes this outbound-connector model. It avoids a publicly routable origin address, but the provider edge becomes part of the request path and policy system.</p><h2 id="compare-device-enrollment-with-browser-identity">Compare device enrollment with browser identity</h2><p>A Site VPN is useful when authorized devices need several private resources: a website, SSH, a database, monitoring, or internal APIs. Enrolling the device once can provide narrow routes to those destinations. This is convenient for administrators and automation, but it gives the device a network foothold. Firewall segmentation and application authentication must limit what the peer can do after connection.</p><p>An identity-aware application tunnel can work from an ordinary browser after the user signs in through an approved identity provider. That is attractive for contractors, customer portals, and users who should reach one web application without joining a private network. Policy can be user- and application-specific. The tradeoff is dependence on browser flows, identity availability, provider configuration, and support for the application’s protocol and connection behavior.</p><h2 id="look-at-protocol-scope-not-only-web-pages">Look at protocol scope, not only web pages</h2><p>A VPN carries IP traffic selected by routes. It can support HTTP, HTTPS, SSH, database protocols, remote administration, and custom services, subject to firewall rules. This breadth is powerful for operations but increases the importance of network segmentation. A private static site may need only TCP 443, while a development environment may need several ports. Advertise only what the user or service requires.</p><p>Application tunnels are often strongest for HTTP services and selected supported protocols. They can attach web-specific controls such as single sign-on, request logging, web application firewall rules, and browser isolation. Some products also support SSH or private network routing through agents, but the client and policy model may then resemble a broader zero-trust network. Define the required protocols before choosing; do not force a database or UDP service through a browser-centric design merely to standardize on one vendor.</p><h2 id="evaluate-origin-exposure-and-failure-modes">Evaluate origin exposure and failure modes</h2><p>Both patterns can keep the origin from accepting public inbound traffic. A Site VPN gateway still needs a reachable VPN endpoint, typically one UDP port, while the website listens privately. An outbound tunnel connector may require only egress to the provider. A public reverse proxy, by contrast, accepts internet traffic and must be hardened against scanning, denial of service, authentication attacks, and web exploits, even when it forwards only to a private origin.</p><p>Failure behavior differs. If a Site VPN gateway is down, enrolled devices lose the private route. If a provider edge, identity service, or connector path fails, an application tunnel may be unavailable even though the origin is healthy. Redundancy can reduce both risks, but it adds coordination. Decide whether users need an emergency access path and protect it from becoming a permanent bypass. A direct public fallback URL can silently erase the original security goal.</p><h2 id="account-for-metadata-logging-and-jurisdiction">Account for metadata, logging, and jurisdiction</h2><p>A self-hosted Site VPN keeps gateway and application logs in infrastructure the operator chooses. Internet providers can still observe connections to the gateway, and the gateway can observe client addresses and traffic metadata. The web application sees the private client address or a translated gateway address depending on routing. Logging is under direct control, which is useful only if access, retention, and backup security are managed well.</p><p>An application-tunnel provider processes connection and request metadata at its edge and may terminate TLS depending on configuration. That can enable useful authentication, filtering, and observability, while introducing contractual, jurisdictional, retention, and vendor-access questions. Review current service documentation and agreements for the specific plan and region. Sensitive uses such as internal payment dashboards, Bitcoin or Solana transaction review, and customer data administration deserve a written data-flow assessment rather than an assumption that “tunneled” means no intermediary can see metadata.</p><h2 id="compare-operations-and-total-dependency">Compare operations and total dependency</h2><p>Direct WireGuard requires key inventory, gateway patching, route design, DNS, client support, monitoring, and recovery. The software can be free, but operator time and VPS costs remain. A managed tunnel can reduce gateway exposure and simplify browser access, while adding a connector, provider account, policy configuration, and external service dependency. A traditional reverse proxy demands public-edge hardening and usually the most direct control.</p><p>Vendor dependence is not automatically bad; it is a risk to measure. Export policy and configuration where possible, document DNS changes, and know how to move the origin. Self-hosted systems also create dependencies on a small number of administrators and custom scripts. Ask which failure is easier to recover from: a provider account problem, a lost WireGuard configuration, a failed VPS, or an identity outage. The answer may differ across organizations.</p><h2 id="use-the-right-pattern-for-common-private-site-scenarios">Use the right pattern for common private-site scenarios</h2><p>Choose a Site VPN for administrators who need a private web panel plus server and network tools, for a small team with managed devices, or for services that use non-HTTP protocols. Choose an identity-aware application tunnel for a browser-only portal, a rotating contractor group, or an application that benefits from centralized single sign-on without device enrollment. Choose a public reverse proxy when the site is intended for the public and the challenge is origin protection rather than private access.</p><p>Hybrid designs are common. An application tunnel can expose a client portal while a Site VPN protects administration. A public static site can call a narrowly exposed payment or form endpoint while the Bitcoin Pay, Solana Pay, accounting, and reconciliation dashboards remain private. WireGuard can connect servers, and an identity-aware proxy can control human browser access. Draw each resource and audience rather than selecting one product for the entire organization.</p><h2 id="run-a-proof-of-concept-with-negative-tests">Run a proof of concept with negative tests</h2><p>Build the same low-risk test application through each candidate path. Measure setup effort, device or browser onboarding, connection from restricted networks, DNS behavior, certificate handling, latency, logs, revocation, and recovery. Then test what should not work: an unapproved device, a disabled user, direct origin access, an alternate hostname, an IPv6 path, a stale session, and a failed identity provider or gateway. Negative tests reveal which boundary is actually enforcing policy.</p><p>Document who owns DNS, certificates, connector updates, VPN keys, identity groups, and incident response. Calculate ongoing work rather than only the first hour of setup. The proof of concept should end with a decision record: selected architecture, rejected alternatives, assumptions, review date, and exit plan. Private access changes as teams, providers, and applications evolve, so the decision should be revisited rather than treated as permanent.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>A Site VPN is a strong fit for device-based, multi-protocol private access under direct infrastructure control. Cloudflare Tunnel and similar application-tunnel services are strong fits for browser-oriented access with an external edge and identity policy. A public reverse proxy fits resources that are meant to be reachable by everyone.</p><p>Choose by audience, protocol, trust boundary, data flow, and failure mode. Many secure systems use more than one pattern, keeping public content public, private administration private, and each connector limited to the exact resource it serves.</p></div>]]></content:encoded>
</item>
<item>
<title>Protect Contact Form Admin and Webhooks with a Site VPN</title>
<link>https://sitevpn.com/blog/private-contact-form-admin-webhook-vpn/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/private-contact-form-admin-webhook-vpn/</guid>
<pubDate>Wed, 24 Jun 2026 09:00:00 -0700</pubDate>
<category>Private Web Apps</category>
<description>Keep a public website contact form usable while moving its inbox, administration, exports, and internal webhooks onto a private VPN path.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/private-contact-form-admin-webhook-vpn-sitevpn.png" width="1200" height="1200" alt="Protect Contact Form Admin and Webhooks with a Site VPN"></p><p class="article-intro">A public contact form and a private Site VPN are not contradictory. The visitor-facing form can remain on a public static website while the message store, review dashboard, export tools, and operational webhooks stay on a private network. The key is to split the system into a narrowly exposed submission endpoint and a separate administration surface. That design limits what an anonymous internet user can reach without making the contact channel unavailable.</p><p class="article-intro">The public endpoint still needs normal web security. It accepts untrusted input, can be automated by bots, and may receive personal information. The VPN protects the internal side after submission; it does not sanitize the message or prove the sender is genuine. A careful design validates input, rate-limits abuse, minimizes stored data, separates notifications from records, and makes staff use named accounts over the private path.</p><h2 id="split-public-submission-from-private-administration">Split public submission from private administration</h2><p>Use one public endpoint whose only job is to accept a constrained message and place it into a queue or data store. Do not expose list, search, export, delete, assignment, or configuration operations on the same public route. The administration application should bind to a WireGuard address or private reverse proxy and use a private hostname. Even if both components share code, deploy them with different routes, credentials, and permissions so a mistake in the public handler does not automatically grant access to the inbox.</p><p>For a static website, the form can submit to a small serverless function, a lightweight API, or a self-hosted endpoint. The choice changes operations, but the boundary remains the same. The public component needs only permission to create a message record or enqueue an event. It should not have read access to previous messages or credentials for the administration database. The private dashboard can consume from the queue or use a separate database account with the permissions staff need.</p><h2 id="collect-less-information-by-design">Collect less information by design</h2><p>Ask only for fields that support the response process. A name, reply address, subject category, and message may be enough. Avoid collecting identity numbers, payment details, passwords, medical information, or large attachments through a general contact form. Explain how the information will be used and provide a safer channel for topics the form should not receive. Data minimization reduces both privacy risk and the impact of a compromised inbox.</p><p>Set length limits and accepted character rules based on actual needs, but do not destroy legitimate international names or messages. Normalize and validate email addresses without treating validation as proof of ownership. If attachments are necessary, restrict type and size, scan them, store them outside the web root, and serve them only through an authorized private download path. Keep original filenames as metadata rather than filesystem paths.</p><h2 id="validate-encode-and-isolate-untrusted-content">Validate, encode, and isolate untrusted content</h2><p>Validate every field on the server even if the browser performs client-side checks. Reject unexpected fields, oversized bodies, malformed encodings, and content types the endpoint does not support. Store message text as data, not HTML. When staff view a submission, output-encode it for the page context so a sender cannot inject script into the private dashboard. A VPN does not protect an administrator from a stored cross-site scripting payload submitted through the public form.</p><p>Do not build shell commands, database queries, email headers, filenames, or template directives by concatenating form values. Use parameterized queries and safe APIs. Run the public endpoint with a minimal service account and no access to deployment keys. Place message processing in a queue if antivirus scanning, enrichment, or notifications could be slow. This prevents an attacker from tying up web workers with expensive inputs and makes each processing stage easier to constrain.</p><h2 id="protect-private-actions-from-browser-origin-attacks">Protect private actions from browser-origin attacks</h2><p>The private dashboard still runs in a browser that may have public tabs open. A malicious public page can attempt cross-site requests to private addresses, especially when an administrator is already authenticated. Use anti-CSRF protections on every state-changing action, verify origin or fetch metadata where appropriate, and use secure same-site cookies. The <a href="https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html" rel="noopener noreferrer">OWASP CSRF Prevention Cheat Sheet</a> explains why tokens and request validation remain necessary even for applications that are not broadly discoverable.</p><p>Require reauthentication or explicit confirmation for bulk export, permanent deletion, forwarding rules, and connector changes. Use a restrictive Content Security Policy to reduce script injection impact and avoid third-party scripts on the administration page. The private network reduces unsolicited connections, but the browser can bridge public and private contexts. Design the admin application as a sensitive web application, not as a trusted intranet page from an earlier era.</p><h2 id="control-spam-and-automated-abuse-at-the-public-edge">Control spam and automated abuse at the public edge</h2><p>Rate-limit by a combination of network, session, and behavioral signals. A single IP limit can block offices or mobile carriers while distributed bots bypass it. Add a hidden honeypot field, minimum completion time, duplicate detection, and progressive throttling before requiring an interactive challenge. Keep accessibility in mind and provide a clear alternate contact method. The objective is to raise the cost of abuse without making a simple inquiry difficult for a real person.</p><p>Do not send an email for every raw submission before validation and rate limiting. Attackers can use notification systems to flood staff or target third-party addresses through reflected fields. Queue notifications after acceptance, use fixed recipient addresses, and encode user content safely. A notification should contain a brief summary and a link to the private dashboard, not the entire sensitive message in an email that may be widely retained or forwarded.</p><h2 id="keep-webhooks-narrow-and-authenticated">Keep webhooks narrow and authenticated</h2><p>A form may trigger a CRM, ticketing system, chat notification, or automation workflow. Prefer outbound calls from a controlled worker to exposing a general internal webhook receiver. When an inbound webhook is necessary, give each sender a unique endpoint or secret, verify signatures and timestamps, reject replays, and allow only the required message schema. Do not place a powerful automation console on the public internet merely because one vendor needs to deliver events.</p><p>Internal webhooks can remain reachable only over the Site VPN or a service-to-service private network. Use separate credentials from human VPN peers and restrict the source address and destination port. Rotate secrets and log delivery identifiers rather than full message bodies. A failed webhook should retry through a bounded queue; it should not cause the public submission to fail after the visitor has already sent valid data.</p><h2 id="design-retention-access-and-deletion">Design retention, access, and deletion</h2><p>Contact messages often contain personal information even when the form does not request it. Define how long messages remain in the active inbox, backups, exports, and external systems. Give staff roles that reflect their work: a responder may read and reply, while only a manager can export or change routing. Use named accounts and multifactor authentication for the private dashboard. Review access when teams change and remove old VPN peers as part of the same offboarding process.</p><p>Make deletion operationally real. Deleting a record from the dashboard may not remove it from a search index, notification email, attachment store, backup, or CRM. Document the systems involved and the limits of backup deletion. Avoid routine spreadsheet exports, because copies quickly escape central access controls. When an export is required, watermark or label it, encrypt it, and set a destruction date.</p><h2 id="test-the-complete-message-lifecycle">Test the complete message lifecycle</h2><p>Test valid and invalid submissions, international text, long messages, duplicate requests, attachments, rate limits, and notification failure. Submit script and markup strings and confirm the private dashboard displays them as harmless text. Attempt unauthorized list and export operations from the public endpoint. Disconnect the VPN and verify the administration hostname, database, attachment store, and internal webhooks are unreachable.</p><p>Test incident actions as well: disable the public endpoint while keeping a status message available, revoke an administrator peer, rotate a webhook secret, restore the message store, and identify which external systems received a record. Monitor queue depth, rejected requests, notification errors, and unusual export volume. A private dashboard is useful only if the public edge and downstream workflow remain observable.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>A Site VPN can protect the sensitive half of a website contact form without hiding the form itself. Expose one narrow submission action, then keep review, exports, attachments, and internal automation on a private path with named users and least-privilege service accounts.</p><p>Treat every message as untrusted, retain only what the response process needs, and test browser-origin attacks against the private dashboard. The network boundary reduces exposure; careful data flow prevents the public endpoint from carrying that exposure inward.</p></div>]]></content:encoded>
</item>
<item>
<title>Run a Private AI Chatbot or Team Chat Over a Site VPN</title>
<link>https://sitevpn.com/blog/private-ai-chatbot-team-chat-over-vpn/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/private-ai-chatbot-team-chat-over-vpn/</guid>
<pubDate>Thu, 19 Feb 2026 09:00:00 -0700</pubDate>
<category>Private Web Apps</category>
<description>A Site VPN can hide an internal chat interface from the public internet, but application identity, data handling, and AI-specific controls still matter.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/private-ai-chatbot-team-chat-over-vpn-sitevpn.png" width="1200" height="1200" alt="Run a Private AI Chatbot or Team Chat Over a Site VPN"></p><p class="article-intro">An internal chatbot, support assistant, search interface, or team chat server is a natural Site VPN use case. The browser interface can remain entirely private, reachable only from enrolled devices, while the service connects to local models, a hosted model API, internal documents, or collaboration databases. Removing the public login page reduces scanning and opportunistic abuse, and it makes experimental tools easier to restrict to a small group during evaluation.</p><p class="article-intro">Network privacy is only the outer boundary. A connected user can still submit malicious instructions, upload sensitive files, copy output, or trigger tools with excessive permissions. A hosted model provider may still receive prompts, and logs may retain conversations. The design must therefore separate network access, user identity, model trust, data classification, tool authorization, and retention. A VPN answers who can reach the interface; it does not decide what the assistant is allowed to know or do.</p><h2 id="choose-the-processing-boundary-first">Choose the processing boundary first</h2><p>Map every component that receives message content: the browser, reverse proxy, chat application, database, retrieval service, embedding model, language model, tool server, observability platform, and backup system. A “private chatbot” hosted behind a VPN may still send every prompt to an external API. That can be acceptable when contracts, regional processing, retention, and data classification permit it, but it should be an explicit decision rather than an assumption created by the private URL.</p><p>For highly sensitive use cases, run the model and retrieval stack on infrastructure you control and restrict egress. For lower-risk use cases, a hosted model may provide better quality and operations. Hybrid designs can classify prompts and route only approved content externally. Whatever the model location, display a clear notice about permitted data and give users a way to report unsafe output. Do not rely on a long policy document that users must remember while chatting.</p><h2 id="make-the-web-interface-private-by-default">Make the web interface private by default</h2><p>Bind the chat service to loopback or a WireGuard address and place a reverse proxy on the private interface. Use private DNS and HTTPS. The gateway firewall should expose only the VPN port publicly; the chat application, vector database, model runtime, and administration ports should not listen on the public interface. If a separate model server sits on another host, route only the required address and port between service subnets rather than giving every user direct network access to it.</p><p>Keep development interfaces separate from production. Notebook servers, model dashboards, debug endpoints, and API documentation can expose secrets or powerful actions. Put them on a different private hostname and restrict their VPN routes or proxy policy to administrators. A single broad “AI network” makes it easy for an ordinary chat user to discover an internal management service. Segment by role and function even when all traffic is encrypted.</p><h2 id="use-named-users-in-addition-to-device-peers">Use named users in addition to device peers</h2><p>A unique WireGuard key identifies an enrolled device, but a shared laptop or compromised account can still misuse the application. Add named user authentication and role-based authorization. Separate ordinary chat, document ingestion, prompt-template editing, connector management, model configuration, and audit viewing. Require stronger reauthentication for changes that affect data sources or tool permissions. Record high-impact actions with a user identity and device context.</p><p>Avoid one shared “team” account. It prevents reliable offboarding and makes abuse investigation difficult. Use an identity system the organization already maintains when possible, but keep the application functional if the identity service is temporarily unavailable only according to a deliberate policy. Break-glass access should be rare, monitored, and stored outside the chat system. Removing a person should disable both their application identity and any dedicated VPN peers.</p><h2 id="treat-prompt-injection-as-an-application-threat">Treat prompt injection as an application threat</h2><p>A VPN does not make user input trustworthy. Prompt injection can be entered directly by a user or indirectly through a document, webpage, email, image text, or data connector processed by the model. The <a href="https://cheatsheetseries.owasp.org/cheatsheets/LLM_Prompt_Injection_Prevention_Cheat_Sheet.html" rel="noopener noreferrer">OWASP LLM Prompt Injection Prevention Cheat Sheet</a> describes the risk of instructions embedded in untrusted content and recommends layered controls. Design the system as though retrieved data may actively attempt to alter model behavior.</p><p>Separate system instructions from user and retrieved content in the application structure, but do not assume formatting alone creates a security boundary. Validate tool arguments, constrain output formats, use allowlists, and require confirmation for consequential actions. Test with adversarial documents and messages. A model that summarizes internal text may be low impact; a model that can send email, change DNS, query production databases, or execute Python has a much larger blast radius.</p><h2 id="give-tools-the-minimum-authority">Give tools the minimum authority</h2><p>Run each connector under a service identity with the smallest permissions needed. A documentation assistant may need read-only access to one collection, not the entire file platform. A support bot may draft a response but should not send it automatically. A Python execution tool should run in an isolated environment with resource limits, no default secrets, controlled network egress, and disposable storage. Never pass broad administrator credentials into a model context.</p><p>Use deterministic policy outside the model. The application should decide which tool is available to which user, validate parameters, and enforce approval steps. Do not ask the model to police itself with a sentence such as “never perform dangerous actions.” For payment, infrastructure, or account changes, show the user the exact proposed action and require a separate confirmation. Log the request, validated parameters, result, and approver without storing more sensitive content than necessary.</p><h2 id="protect-documents-embeddings-and-conversation-history">Protect documents, embeddings, and conversation history</h2><p>Retrieval systems create additional copies of source content: parsed text, chunks, embeddings, metadata, caches, and indexes. Apply the source document’s access policy to every derivative. If two teams have different permissions, do not place their content in one index and rely only on the model to omit restricted answers. Filter retrieval by authenticated user and source ACL before content enters the prompt. Test for cross-tenant leakage with realistic queries.</p><p>Decide how long conversations are retained and whether users can delete them. Training, quality review, and debugging are different purposes and may need separate consent and access. Encrypt storage, restrict administrator access, and avoid placing API keys or credentials in chat history. Backups and exported transcripts need the same protection as the live database. If the system supports file upload, scan files, limit type and size, and remove them according to a documented schedule.</p><h2 id="control-model-and-dependency-changes">Control model and dependency changes</h2><p>Model behavior can change after an API version update, a local model replacement, a system prompt edit, or a retrieval pipeline change. Treat those changes like application releases. Maintain a representative evaluation set covering safety, data boundaries, tool use, refusal behavior, latency, and output quality. Record the model identifier and configuration used for each release so unexpected behavior can be reproduced.</p><p>Patch the operating system, Python environment, web framework, model server, and dependencies. Pin packages where appropriate and scan them before deployment. A private network reduces exposure but does not protect against a compromised package or malicious model artifact. Verify model and container sources, limit build credentials, and separate development secrets from production. The Site VPN should not be the only control protecting a powerful Python service from supply-chain risk.</p><h2 id="monitor-the-service-without-turning-logs-into-a-data-leak">Monitor the service without turning logs into a data leak</h2><p>Operational logs need request identifiers, latency, errors, model version, tool calls, and security events. Full prompts and outputs are often the most sensitive data in the system. Default to redaction or limited capture, and grant access only to people with a defined review purpose. If sample conversations are retained for quality, select and sanitize them through a controlled workflow rather than collecting every exchange indefinitely.</p><p>Alert on unusual connector use, repeated attempts to override system behavior, bulk document access, large exports, new administrator actions, and access from unexpected peers. Monitor the VPN and application together so a newly enrolled device generating high-volume retrieval is visible. Prepare an incident process that can revoke a peer, disable a user, rotate model and connector credentials, suspend tools, and preserve necessary evidence without keeping the risky service online.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>A Site VPN is a strong way to keep an internal chatbot or team chat interface off the public internet. It reduces exposure and creates a controlled network path, but it does not solve prompt injection, data leakage, excessive tool permissions, or conversation retention.</p><p>Map the full processing boundary, authenticate users, segment administrative services, constrain tools with deterministic policy, and treat model changes as releases. Private access is the first layer of a trustworthy AI application, not the final one.</p></div>]]></content:encoded>
</item>
<item>
<title>Protect a LAMP or PHP Admin Site with a Site VPN</title>
<link>https://sitevpn.com/blog/protect-lamp-php-admin-site-with-vpn/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/protect-lamp-php-admin-site-with-vpn/</guid>
<pubDate>Thu, 06 Nov 2025 09:00:00 -0700</pubDate>
<category>Private Web Apps</category>
<description>Use a Site VPN to reduce exposure of a LAMP or PHP administration surface while preserving secure application and server practices.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/protect-lamp-php-admin-site-with-vpn-sitevpn.png" width="1200" height="1200" alt="Protect a LAMP or PHP Admin Site with a Site VPN"></p><p class="article-intro">A PHP administration panel can have a much higher impact than the public website it controls. It may edit content, read customer records, manage payments, change configuration, upload files, or run maintenance actions. Moving that panel behind a Site VPN removes the public login surface and limits who can even establish a connection. That is a meaningful reduction in exposure, especially for legacy tools that were never designed to absorb constant internet scanning.</p><p class="article-intro">The VPN must not become an excuse to leave the LAMP stack unpatched or to disable application authentication. An authorized laptop can be compromised, keys can be copied, and a routing rule can be broader than intended. The sound design combines network restriction with a hardened Linux host, a carefully bound Apache virtual host, updated PHP, least-privilege database access, secure sessions, and tested backups. Each layer should still make sense if another layer fails.</p><h2 id="separate-the-public-site-from-the-private-admin-origin">Separate the public site from the private admin origin</h2><p>Use distinct hostnames and virtual hosts, such as <code>www.example.com</code> for public content and <code>admin.private.example.com</code> for the administration application. Ideally the admin virtual host listens only on the WireGuard address or on loopback behind a reverse proxy bound to that address. Avoid one virtual host that exposes different behavior based only on a hidden path. Paths are easy to discover, and a web-server or proxy mistake can make the private area public.</p><p>If the public and private applications share code or a database, document that dependency and restrict filesystem permissions. The public web process should not be able to modify administration code or read deployment secrets merely because both live under <code>/var/www</code>. Separate Unix users, PHP-FPM pools, document roots, and configuration files where practical. Network separation reduces inbound reachability; process and file separation limits what happens after a web vulnerability.</p><h2 id="bind-apache-and-the-reverse-proxy-deliberately">Bind Apache and the reverse proxy deliberately</h2><p>Inspect every listening socket after configuration. Apache can listen on a specific WireGuard address and port, while a front-end proxy terminates TLS and forwards to a loopback PHP application. Another design lets Apache terminate TLS directly on the private interface. Whichever pattern you choose, the public interface should not accept the admin hostname or present the admin content. Add a default virtual host that rejects unknown hostnames rather than serving the first configured site.</p><p>Do not rely on DNS as the access control. An attacker can send any Host header to a public IP. Likewise, do not rely only on a provider security group while Apache listens on all IPv4 and IPv6 addresses. Provider and host firewalls should both allow the private service only from the WireGuard interface or subnet. Test the public IPv4 address, public IPv6 address, alternate ports, and direct origin path after every proxy or firewall change.</p><h2 id="keep-the-web-stack-hardened-behind-the-tunnel">Keep the web stack hardened behind the tunnel</h2><p>The <a href="https://httpd.apache.org/docs/current/misc/security_tips.html" rel="noopener noreferrer">Apache HTTP Server security tips</a> emphasize minimal privileges, input validation, patching, and careful configuration. Those recommendations remain relevant on a private network. Disable unused modules, directory listing, server-status access, example applications, and unnecessary methods. Run the web server and PHP workers as unprivileged accounts, and give them write access only to directories that genuinely require uploads, cache files, or generated content.</p><p>Keep the operating system, Apache, PHP runtime, framework, libraries, and administration application on supported versions. A VPN reduces opportunistic scanning but does not prevent exploitation by an infected authorized device or an internal attacker. Subscribe to security notices for the stack, maintain a staging environment, and schedule updates before end-of-life dates. Record the active PHP modules and extensions so an emergency rebuild does not quietly enable more functionality than the original system.</p><h2 id="design-php-fpm-and-filesystem-permissions-for-containment">Design PHP-FPM and filesystem permissions for containment</h2><p>A separate PHP-FPM pool for the private admin application can use its own Unix user, socket, resource limits, environment allowlist, and logging. Keep secrets outside the document root and pass only required values to the process. Disable dangerous legacy behavior rather than assuming the VPN makes it safe. Upload directories should not execute PHP, and generated filenames should not be trusted. Validate content type, size, and extension, then store uploads with non-user-controlled names.</p><p>Use filesystem ownership that supports deployment without making the web process the owner of application code. A deployment user or CI job can write versioned releases; the runtime account reads them. Writable directories should be few and obvious. Backups must preserve both data and configuration but should not be placed under a web-accessible directory. Periodically search the document root for archives, editor swap files, environment files, database dumps, and debug output.</p><h2 id="limit-database-access-to-what-the-admin-application-needs">Limit database access to what the admin application needs</h2><p>The database should listen on loopback or a private network, not the public internet. Give the administration application a dedicated database account with permissions tied to its functions. Avoid using a database superuser in application configuration. Read-only reporting pages can use a read-only account, while migration tasks can run under a separate, short-lived credential. This limits the impact of SQL injection or a leaked configuration file.</p><p>Encrypt connections when the database crosses a host boundary, even inside the VPN. Rotate credentials through a documented process and restart or reload services safely. Log database authentication failures and high-impact changes, but avoid recording sensitive values. Test restoration to a clean environment; a backup that has never been restored is only an assumption. Keep recovery credentials offline from the application server so a single compromise does not erase production and its backups together.</p><h2 id="retain-strong-application-authentication-and-session-controls">Retain strong application authentication and session controls</h2><p>Every administrator should have a named account. Use multifactor authentication when supported, rate-limit failed logins even on the private network, and remove shared default accounts. Sessions should use secure, HTTP-only cookies with an appropriate same-site policy, short idle timeouts, and reauthentication for destructive actions. Regenerate session identifiers after login and privilege changes. A VPN key identifies a device, while the application account identifies the person and role performing an action.</p><p>Protect state-changing requests against cross-site request forgery, validate authorization on every action, and encode output to prevent cross-site scripting. The browser can reach public and private sites at the same time; a malicious public page may attempt to trigger requests to a private address. Network privacy does not remove browser-origin threats. Use a restrictive Content Security Policy where the application permits it, and keep third-party JavaScript out of sensitive admin pages unless it is essential and governed.</p><h2 id="log-enough-to-investigate-without-collecting-everything">Log enough to investigate without collecting everything</h2><p>Combine VPN peer records, reverse-proxy access logs, application authentication events, and high-impact audit actions. Timestamps and device identity should be consistent so an investigator can trace a request from tunnel to account. Avoid logging passwords, session tokens, form secrets, full payment data, or sensitive query strings. Restrict log access and retention; administration logs can reveal user records and internal structure even when the application is secure.</p><p>Alert on events that matter: repeated failed logins, a new peer accessing the admin site, unexpected geographic or network changes at the gateway, privilege modifications, bulk exports, configuration changes, and service exposure on a public interface. Availability monitoring should run over the same private path users depend on. A public health check that reaches the admin origin defeats the intended boundary.</p><h2 id="test-failure-and-recovery-scenarios">Test failure and recovery scenarios</h2><p>From a device without the VPN, verify that the private hostname does not resolve or connect. Test direct public IP access and IPv6. From an enrolled device, verify TLS, login, authorization, file upload restrictions, and logout. Revoke the test peer and confirm the tunnel and application session no longer provide access according to policy. Simulate a lost admin password and a failed DNS resolver without opening the panel publicly as a workaround.</p><p>Restore the application, database, VPN configuration, certificates, and private DNS into an isolated environment. Document the order of operations and the credentials required. Keep a console or provider recovery path for the VPN gateway, but protect it with strong authentication. Recovery should not depend on the private site that is being recovered. A disciplined restore exercise exposes hidden dependencies before a real incident does.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>A Site VPN is an effective outer boundary for a LAMP or PHP administration site because it removes a sensitive web surface from general reach. The strongest design still treats the application, server, database, and browser as systems that can fail independently.</p><p>Separate public and private origins, bind services explicitly, patch the full stack, retain named accounts and secure sessions, and rehearse recovery. The tunnel narrows the doorway; least privilege and application security determine what happens after a device enters.</p></div>]]></content:encoded>
</item>
<item>
<title>How to Put a Private Static Website Behind a VPN</title>
<link>https://sitevpn.com/blog/private-static-website-behind-vpn/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/private-static-website-behind-vpn/</guid>
<pubDate>Tue, 22 Jul 2025 09:00:00 -0700</pubDate>
<category>Private Web Apps</category>
<description>Protect documentation, prototypes, client portals, and internal static sites with a private VPN route and a deliberately closed origin.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/private-static-website-behind-vpn-sitevpn.png" width="1200" height="1200" alt="How to Put a Private Static Website Behind a VPN"></p><p class="article-intro">A static website is often described as simple and low risk because it has no database or server-side application code. That simplicity is valuable, but it does not make every static site suitable for public hosting. Internal documentation, design prototypes, customer deliverables, build reports, incident runbooks, and pre-release product pages can contain sensitive information even when they are only HTML, CSS, JavaScript, and images. A Site VPN lets authorized devices reach that content while the origin remains unavailable to general internet traffic.</p><p class="article-intro">The safest pattern is not “publish it normally and hide the URL.” It is a private network path, a web server bound to a private interface, HTTPS, and a deployment pipeline that does not accidentally copy confidential files to a public bucket or CDN. This guide explains how to make those boundaries explicit and how to avoid browser caching, DNS, and build-process surprises that can outlive the VPN session.</p><h2 id="decide-whether-the-content-truly-belongs-behind-a-vpn">Decide whether the content truly belongs behind a VPN</h2><p>A VPN is appropriate when the audience is limited and devices can be enrolled. Examples include an employee handbook, a customer-specific project portal, a staging build, or an offline-style knowledge base for a field team. It is less appropriate for a public marketing site that merely needs an administrative area protected. In that case, keep the public pages public and move the management interface to a separate private hostname or network. Mixing audiences on one origin increases the chance of a routing or caching mistake.</p><p>Classify the material before deployment. Identify whether it contains personal data, credentials, internal hostnames, source maps, API endpoints, financial information, or unreleased product details. A static generator can include files that were never linked from a page, and directory indexes or predictable filenames can expose them. The VPN reduces who can connect, but the build should still contain only what the authorized audience needs. Remove secrets entirely; do not treat private network access as permission to embed passwords or long-lived tokens in JavaScript.</p><h2 id="use-a-private-origin-not-an-obscure-public-url">Use a private origin, not an obscure public URL</h2><p>Place the generated site on a server that listens only on a WireGuard address, a loopback address behind a reverse proxy bound to that interface, or a private network reachable from the VPN gateway. Confirm the process is not listening on the VPS public address or IPv6 wildcard. Cloud firewalls are useful, but host-level binding and firewall rules provide a second boundary. Test the public address directly, with the expected hostname and with an alternate host header, to make sure the private content does not appear.</p><p>A directory path such as <code>public.example.com/secret-project/</code> is not a network boundary. Search engines, referrer headers, browser history sync, access logs, and shared links can reveal it. HTTP basic authentication alone can be useful as an additional control, but it still exposes the server and login surface to the internet. The Site VPN should determine whether a packet can reach the origin; application or web-server authentication can then determine which authorized user may view a particular collection.</p><h2 id="keep-remote-access-infrastructure-hardened">Keep remote-access infrastructure hardened</h2><p>A private site inherits the security of its gateway. Patch the operating system and VPN software, restrict management access, use unique device keys, and remove inactive peers. CISA’s <a href="https://www.cisa.gov/resources-tools/resources/guide-securing-remote-access-software" rel="noopener noreferrer">Guide to Securing Remote Access Software</a> emphasizes inventory, secure configuration, logging, and monitoring around remote access. Apply those principles even to a small documentation site: know which service is exposed, who administers it, and how a compromised or departed device is revoked.</p><p>Do not let a single VPN peer grant access to every service on the server. Use a dedicated private subnet, firewall by interface and destination port, and run the web server with minimal privileges. If the same VPS hosts SSH, databases, or other applications, separate them with firewall rules or containers and avoid publishing broad routes to clients. The static site may be harmless, but a route to its host can become an unintended path to more sensitive services.</p><h2 id="plan-private-dns-and-https-together">Plan private DNS and HTTPS together</h2><p>Give the site a stable hostname such as <code>docs.private.example.com</code>. A private resolver can return the WireGuard address only to connected clients, while public DNS returns no record. Another pattern uses a public DNS record containing a private address; this does not expose the content, but it reveals naming and addressing and may behave differently on networks that filter private answers. Pick one pattern, document it, and ensure all supported devices resolve the same way.</p><p>Use HTTPS even though WireGuard already encrypts the network path. TLS gives the browser an independent identity check, protects against mistakes inside the private network, and preserves secure-context features. DNS-based certificate validation can issue a publicly trusted certificate without opening the origin. A private certificate authority can work for managed devices but requires trust distribution. Avoid self-signed warnings in normal operation; users trained to ignore warnings cannot reliably identify a real interception or wrong destination.</p><h2 id="design-the-deployment-pipeline-to-prevent-public-leakage">Design the deployment pipeline to prevent public leakage</h2><p>Separate public and private build targets. Use different output directories, storage destinations, deployment credentials, and ideally different jobs. A single “deploy” script with an environment flag can be convenient but dangerous if the default points to a public bucket. Make the private destination explicit and require a review for changes to hosting configuration. Scan generated output for secret patterns, source maps, environment files, and content marked confidential before uploading.</p><p>Store the source repository according to its sensitivity. Private hosting does not help if the repository is public or if build artifacts are attached to a public release. Limit CI logs because static generators may print file paths, environment values, or deployment URLs. Use short-lived deployment credentials and restrict them to the private origin. Record the build commit and deployment time in a non-sensitive footer or manifest so administrators can verify which version they are viewing.</p><h2 id="control-browser-caches-and-service-workers">Control browser caches and service workers</h2><p>Static sites are designed to cache well, but confidential content on a shared or lost device can remain after the VPN disconnects. Set cache headers according to the threat model. Highly sensitive pages may use <code>Cache-Control: no-store</code>; less sensitive documentation may allow private caching with a short lifetime. Remember that images, PDFs, and downloadable archives need their own headers. Browser history, screenshots, printouts, and downloads are outside the VPN and require policy or device controls.</p><p>Be especially careful with service workers and offline features. A service worker can intentionally store the whole site and continue serving it after the network route disappears. That may be valuable for field work, but it changes the security model from “available only through the VPN” to “available to anyone who can use this browser profile.” If offline access is not required, do not register a service worker. If it is required, use managed devices, local encryption, clear revocation expectations, and an explicit content-expiration strategy.</p><h2 id="add-application-identity-only-when-the-use-case-needs-it">Add application identity only when the use case needs it</h2><p>For a small team, unique VPN peers plus device login may be sufficient to view low-risk internal documentation. For client portals, regulated content, or shared devices, add named user authentication at the reverse proxy or application layer. This produces user-level audit events and allows access to change without replacing a device profile. Keep the login service private as well, and use multifactor authentication when the consequence of account compromise is significant.</p><p>Do not add a complex content management system merely to obtain logins if the content can remain static. A reverse proxy can enforce identity before serving files, or the build can create separate sites on distinct private hostnames with different network policies. Simpler publishing reduces patching and database risk. The goal is the minimum system that provides the required audience control, auditability, and editing workflow.</p><h2 id="test-both-access-and-non-access">Test both access and non-access</h2><p>From an enrolled device, connect the tunnel, resolve the hostname, verify the certificate, load representative pages and assets, and confirm downloads use the intended cache policy. Then disconnect and repeat. Test from a device that has never been enrolled, from the VPS public address, over IPv6, and through alternate ports. Inspect storage or CDN dashboards to ensure the private build is not present in a public location. Search the public site repository and sitemap for private URLs.</p><p>Revocation testing matters too. Remove a pilot peer and verify it can no longer handshake or load cached protected content beyond the chosen policy. Rotate the site certificate and confirm clients recover. Rebuild the origin from backup to prove the deployment is reproducible. A private static site should be boring to operate: a known artifact goes to a known private destination, reachable only through a documented path.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>A static site behind a Site VPN can deliver private documentation and web content with a small attack surface, but only when the origin, DNS, TLS, build pipeline, and browser caching rules all reinforce the same boundary.</p><p>Keep secrets out of the build, bind the server to a private interface, test from an unapproved network, and decide deliberately whether offline caching is allowed. The absence of a database simplifies the system; it does not remove the need for access design.</p></div>]]></content:encoded>
</item>
<item>
<title>Tailscale Alternative: When to Self-Host WireGuard</title>
<link>https://sitevpn.com/blog/tailscale-alternative-self-host-wireguard/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/tailscale-alternative-self-host-wireguard/</guid>
<pubDate>Tue, 11 Mar 2025 09:00:00 -0700</pubDate>
<category>Comparisons</category>
<description>Understand what a managed mesh control plane provides before deciding whether a self-hosted WireGuard Site VPN is the better fit.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/tailscale-alternative-self-host-wireguard-sitevpn.png" width="1200" height="1200" alt="Tailscale Alternative: When to Self-Host WireGuard"></p><p class="article-intro">People searching for a Tailscale alternative often begin with a simple observation: both Tailscale and a manual WireGuard deployment use encrypted tunnels, so why not run WireGuard directly? The answer depends on what you count as the product. WireGuard supplies a secure data plane, but a convenient multi-device network also needs peer discovery, key distribution, identity, policy, NAT traversal, relay fallback, device inventory, DNS, updates, and administrative workflows. A managed service packages much of that work; self-hosting moves it to you.</p><p class="article-intro">For a small Site VPN with one gateway and a handful of known devices, direct WireGuard can be wonderfully clear. For a global mesh with changing users, laptops behind difficult NAT, multiple subnet routers, and identity-driven policy, replacing a control plane is a software and operations project. This guide separates those cases so “alternative” means an intentional architecture choice rather than a feature-by-feature imitation attempted without resources.</p><h2 id="separate-the-data-plane-from-the-control-plane">Separate the data plane from the control plane</h2><p>The data plane carries application packets between devices. WireGuard encrypts those packets and authenticates peers through public keys. The control plane tells devices which peers exist, which keys and addresses they use, what policy applies, and how to find each other. A direct hub-and-spoke WireGuard Site VPN can keep the control plane extremely small: one administrator edits a gateway configuration and delivers one profile to each device. That simplicity is real because the topology and audience are limited.</p><p>Tailscale describes its architecture in <a href="https://tailscale.com/blog/how-tailscale-works" rel="noopener noreferrer">How it works</a>, including WireGuard-based tunnels and the coordination required to connect nodes. The important lesson for an alternative is architectural, not promotional: encrypted packets are only one layer of a usable network. Before replacing a managed system, list which coordination, identity, and connectivity functions your deployment currently receives and decide who will own each one.</p><h2 id="direct-wireguard-is-strongest-in-a-stable-hub-and-spoke-design">Direct WireGuard is strongest in a stable hub-and-spoke design</h2><p>A Site VPN usually has a natural hub: the VPS or gateway beside the private website. Every client knows one public endpoint, and the gateway knows each client public key. There is no need for arbitrary peer-to-peer discovery, and a relay fallback is unnecessary because clients initiate outbound UDP to a stable server. In this shape, direct WireGuard avoids a separate account system and keeps the packet path easy to inspect. The configuration can be reviewed as ordinary infrastructure code.</p><p>The model becomes harder when gateways multiply, devices need direct connections to each other, or users roam among networks that block UDP. Each new peer relationship creates configuration and distribution work. Administrators must avoid overlapping addresses, stale keys, and broad routes. A hub can also become a performance bottleneck or single failure point. Self-hosting remains possible, but the appeal of a coordination layer grows with topology rather than with raw user count alone.</p><h2 id="nat-traversal-is-easy-to-underestimate">NAT traversal is easy to underestimate</h2><p>A public VPS accepts inbound packets at a known address, so most clients can reach it through ordinary outbound NAT. A mesh is different: two laptops may both sit behind routers that do not accept unsolicited traffic, and their public mappings may change. Coordination systems exchange endpoint observations and attempt direct paths; when that fails, they can relay encrypted traffic. Recreating this reliably across home routers, mobile carriers, enterprise firewalls, IPv4, and IPv6 requires more than opening a port.</p><p>If your private website is the only destination, avoid solving a mesh problem you do not have. Use a well-connected gateway and monitor it. If direct peer-to-peer access is a requirement, decide whether you will operate traversal and relay infrastructure or accept dependence on a provider that does. A self-hosted relay can improve control, but it adds global availability, abuse prevention, upgrades, bandwidth, and monitoring to the service catalog.</p><h2 id="identity-and-policy-require-a-source-of-truth">Identity and policy require a source of truth</h2><p>Manual WireGuard configurations identify keys, not people. A spreadsheet or repository can map a key to an owner for a small group. At larger scale, administrators want access to follow employment status, team membership, device posture, and application role. That means integrating with an identity provider, defining policy, handling authentication sessions, auditing changes, and deciding how quickly revocation reaches every node. A control plane turns those business events into network state.</p><p>Self-hosting can still meet that need, but it is no longer “just WireGuard.” You may adopt an open-source coordination server, write provisioning automation, or keep the VPN narrow while placing an identity-aware proxy in front of selected web applications. Choose the smallest system that expresses the required policy. For a Site VPN, it is often cleaner to grant network reachability to a modest group and let the application enforce fine-grained roles than to encode every permission as a network rule.</p><h2 id="compare-costs-honestly-including-operator-time">Compare costs honestly, including operator time</h2><p>WireGuard software is free and open source, but the deployment consumes a VPS, DNS, monitoring, backup storage, network transfer, and staff attention. Managed services charge money or impose plan limits because they operate coordination, relays, user interfaces, updates, and support. A fair cost comparison includes the hours required to enroll a device, debug hotel Wi-Fi, rotate keys, recover a failed gateway, and maintain documentation. The cheapest invoice can produce the most expensive interruption.</p><p>Direct self-hosting is financially attractive when the topology is small, the operator already manages Linux infrastructure, and requirements are stable. A managed network can be less expensive when it prevents recurring support work or enables identity and policy features that would otherwise be custom-built. Do not assume “free Site VPN” means no recurring cost, and do not assume a subscription automatically removes operational responsibility. Clients, applications, and access reviews still need owners.</p><h2 id="privacy-and-control-are-design-choices-not-slogans">Privacy and control are design choices, not slogans</h2><p>Self-hosting keeps coordination records and gateway logs under your administrative control, but it also concentrates responsibility. You must decide what to log, protect credentials, patch systems, secure backups, and respond to compromise. A managed service may see account metadata or coordination information while encrypted application traffic travels directly between peers when possible. Review current documentation and contracts for the specific service rather than relying on a generic claim that “cloud” or “self-hosted” is always more private.</p><p>Minimize data in either model. Use descriptive device identifiers without embedding unnecessary personal information, keep retention periods short enough for the operational purpose, and restrict who can view network metadata. The private website itself may log URLs, accounts, and actions that are more sensitive than tunnel handshakes. Include application telemetry in the privacy assessment instead of focusing only on the VPN layer.</p><h2 id="use-a-decision-matrix-tied-to-the-site-vpn-use-case">Use a decision matrix tied to the Site VPN use case</h2><p>Choose direct WireGuard when there is one or a few stable gateways, clients can reach a public UDP endpoint, peer count is manageable, routes are simple, and administrators are comfortable owning Linux and key lifecycle. Choose a managed coordination service when users and devices change frequently, mesh connectivity matters, identity-based policy is required, NAT traversal and relay fallback are valuable, or a polished multi-platform support experience outweighs infrastructure control.</p><p>A hybrid is also valid. A managed mesh can provide device connectivity while a private reverse proxy and application authentication protect the site. Direct WireGuard can serve production administration while a managed network supports development devices. An identity-aware tunnel can publish one web application while WireGuard carries SSH and database traffic. Architecture should follow resource boundaries; there is no prize for forcing every private service through one tool.</p><h2 id="migrate-in-small-reversible-steps">Migrate in small, reversible steps</h2><p>To move from a managed mesh to direct WireGuard, create a new gateway and private subnet, enroll a pilot group, and expose a noncritical copy of the site. Test from home, office, mobile, and restricted networks. Confirm DNS, TLS, routing, logging, and revocation. Document support procedures before moving production. Keep the previous path available until every active device and automation job has been identified and migrated.</p><p>To move toward a managed service, start with a separate test network and connect one application through a subnet router or node. Map existing keys and users to new identities, reproduce least-privilege rules, and verify that offboarding works. Avoid changing application authentication and network access simultaneously. The safest migration preserves a known rollback path and makes each layer’s behavior observable.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>A self-hosted WireGuard Site VPN is a compelling Tailscale alternative when the problem is narrow: known devices need a private route to a stable website gateway. It is less compelling when the real requirement is a dynamic global mesh with identity, policy, traversal, and support tooling.</p><p>Count the control plane before comparing products. The best choice is the one your team can operate, audit, revoke, and recover—not the one with the shortest initial configuration or the smallest monthly invoice.</p></div>]]></content:encoded>
</item>
<item>
<title>WireGuard vs OpenVPN for Private Website Access</title>
<link>https://sitevpn.com/blog/wireguard-vs-openvpn-private-website-access/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/wireguard-vs-openvpn-private-website-access/</guid>
<pubDate>Tue, 03 Dec 2024 09:00:00 -0700</pubDate>
<category>Comparisons</category>
<description>Compare WireGuard and OpenVPN through the needs of a private website: routing, identity, firewall compatibility, operations, and client support.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/wireguard-vs-openvpn-private-website-access-sitevpn.png" width="1200" height="1200" alt="WireGuard vs OpenVPN for Private Website Access"></p><p class="article-intro">WireGuard and OpenVPN can both protect access to a private website, but they ask operators to solve different problems. WireGuard offers a compact peer model built around public keys, addresses, and allowed routes. OpenVPN offers a mature, highly configurable system that can use certificates, usernames, plugins, multiple transports, and extensive server directives. A fair comparison should not reduce the choice to “new versus old” or a single speed test. The better protocol is the one whose failure modes and lifecycle your team can operate safely.</p><p class="article-intro">For a small Site VPN, the decision usually turns on five questions: how peers are identified, how easily clients connect from restricted networks, how much configuration flexibility is required, what existing infrastructure must be preserved, and who will manage revocation. The web service itself still needs TLS and application authentication. The VPN protocol controls the private path; it does not decide whether an administrator is allowed to delete data after reaching the login page.</p><h2 id="start-with-the-two-configuration-models">Start with the two configuration models</h2><p>WireGuard treats each participant as a peer with a public key. The configuration associates that key with addresses the peer may send from or receive through. There is no built-in certificate authority, username prompt, or protocol negotiation. This small model is easy to read and automate for dozens of devices, but the operator must build the inventory, enrollment, expiration review, and identity mapping around it. A key proves possession of the corresponding secret; the human or device identity comes from your records and provisioning process.</p><p>OpenVPN commonly uses a public key infrastructure in which a certificate authority signs client and server certificates. It can also layer usernames, one-time passwords, plugins, and external authentication systems onto the tunnel. That flexibility can fit organizations with established certificate issuance and identity workflows. It also creates more moving parts: certificate profiles, revocation lists, cipher and TLS settings, server-pushed options, and authentication dependencies. A small deployment may value WireGuard’s visible simplicity, while a larger legacy environment may value OpenVPN’s integration points.</p><h2 id="transport-behavior-and-restricted-networks">Transport behavior and restricted networks</h2><p>WireGuard uses UDP. Its low-overhead design works well on normal internet connections and supports roaming when a client’s public address changes. Some tightly controlled networks block or degrade UDP, which can make a WireGuard tunnel difficult to establish without another encapsulation layer or alternate access path. That is an environmental limitation, not proof that the cryptography has failed. Test from the hotels, guest networks, mobile carriers, and enterprise egress controls your users actually encounter.</p><p>OpenVPN can run over UDP or TCP and can be placed on ports commonly allowed through firewalls. TCP transport can be useful when UDP is unavailable, although tunneling TCP application traffic inside a TCP VPN can produce poor behavior under packet loss because both layers retransmit and manage congestion. OpenVPN also has more options for proxies and transport tuning. If reliable access from highly restricted networks is the dominant requirement, that flexibility may outweigh a more complex configuration.</p><h2 id="cryptography-and-configuration-surface">Cryptography and configuration surface</h2><p>WireGuard deliberately limits cryptographic choices. Operators do not select a long menu of ciphers and handshake combinations, which reduces configuration ambiguity and the risk of leaving outdated options enabled. Updates still matter, and key protection remains essential, but the protocol avoids many negotiation decisions. This is attractive when the team wants a secure baseline without becoming a specialist in cipher-suite compatibility.</p><p>OpenVPN exposes a broader set of cryptographic and TLS controls. The <a href="https://openvpn.net/community-docs/community-articles/openvpn-2-6-manual.html" rel="noopener noreferrer">OpenVPN 2.6 manual</a> shows the depth of its transport, certificate, data-channel, routing, scripting, and management options. That breadth is valuable when a deployment must match an existing PKI, hardware token, compliance profile, or unusual network. It also means old examples found online may carry obsolete directives. Use current documentation, remove compatibility settings you do not need, and test upgrades before applying them to every client.</p><h2 id="routing-a-private-website">Routing a private website</h2><p>Both protocols can route a single private host, a dedicated service subnet, or all client traffic. For a Site VPN, the route should usually be narrow. WireGuard expresses destination choices in each peer’s <code>AllowedIPs</code>, while OpenVPN servers commonly push routes to clients or place them in client-specific configuration. In either case, document the intended route and verify the operating system installed it. A successful handshake without the correct route produces a tunnel that looks healthy but cannot reach the site.</p><p>Return routing is protocol-independent. If the private website lives behind the VPN gateway, the origin must know how to send responses to the client subnet or the gateway must translate addresses. The web server should listen only on the private interface or a loopback address behind a private reverse proxy. Test alternate public addresses and ports. A correctly configured VPN does not compensate for a web service that is still bound to every interface and exposed by another firewall rule.</p><h2 id="revocation-and-identity-operations">Revocation and identity operations</h2><p>Revoking a WireGuard device usually means removing its public key from the gateway and any relevant peers. The action is direct and takes effect when the configuration is reloaded. The challenge is knowing which key belongs to which device and whether it appears on more than one gateway. A disciplined peer inventory and configuration management process are therefore central. Unique keys per device and descriptive comments prevent a small text configuration from becoming an anonymous list of base64 strings.</p><p>OpenVPN certificate deployments can revoke a client certificate through a certificate revocation list, while username or external identity integrations can disable an account centrally. This can align with existing personnel lifecycle processes. However, certificate expiration, CRL distribution, account state, cached credentials, and secondary factors all need monitoring. Neither protocol automatically solves offboarding. The stronger choice is the one your organization can connect to a reliable source of identity and audit consistently.</p><h2 id="performance-battery-and-user-experience">Performance, battery, and user experience</h2><p>WireGuard is often selected for a small codebase, low overhead, quick reconnection, and good performance on modern systems. Those traits can improve mobile roaming and reduce the operational temptation to disable the VPN because it feels slow. Actual results depend on CPU, kernel or userspace implementation, MTU, path quality, routing, and the location of the gateway. Measure the private web transaction that matters rather than relying only on synthetic throughput.</p><p>OpenVPN can perform well when configured appropriately, but its larger feature set and userspace processing may require more tuning on limited hardware. It also has mature clients and management patterns across many environments. User experience includes more than speed: installation trust, profile import, authentication prompts, reconnect behavior, and the ability to diagnose failures all matter. A slightly slower tunnel with dependable corporate support may be a better system than a faster tunnel no one can maintain.</p><h2 id="migration-without-a-risky-cutover">Migration without a risky cutover</h2><p>A team moving from OpenVPN to WireGuard does not need a single overnight switch. Run both protocols on separate ports and private subnets, place the same test service behind them, and migrate a small group first. Compare DNS behavior, routes, logs, connection success from restricted networks, and support burden. Preserve OpenVPN for users or locations that need its transport flexibility until an alternative is proven. Remove the old service only after every active client and automation path has an owner.</p><p>Moving in the other direction may make sense when a Site VPN needs certificate-based enterprise integration, TCP transport, proxy support, or an existing OpenVPN operations team. Keep application URLs stable while changing the network path, and avoid changing DNS, certificates, and authentication at the same time. A staged migration makes failures attributable. The goal is not to declare a protocol winner; it is to deliver private access that can be explained, monitored, and revoked.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>WireGuard is a strong default for a focused Site VPN when simple peer configuration, narrow routes, and modern cross-platform clients fit the environment. OpenVPN remains useful when transport flexibility, mature PKI integration, or established operational tooling is more important.</p><p>Choose based on lifecycle and network constraints, not branding. Whichever protocol carries the packets, keep the website on HTTPS, retain application authentication, maintain a device inventory, and test that the origin is not reachable outside the intended private path.</p></div>]]></content:encoded>
</item>
<item>
<title>Connect iOS, Android, Windows, macOS, and Linux to a Site VPN</title>
<link>https://sitevpn.com/blog/site-vpn-ios-android-windows-macos-linux/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/site-vpn-ios-android-windows-macos-linux/</guid>
<pubDate>Wed, 18 Sep 2024 09:00:00 -0700</pubDate>
<category>Deployment</category>
<description>A platform-by-platform onboarding plan for reliable Site VPN access across phones, tablets, desktops, and Linux systems.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/site-vpn-ios-android-windows-macos-linux-sitevpn.png" width="1200" height="1200" alt="Connect iOS, Android, Windows, macOS, and Linux to a Site VPN"></p><p class="article-intro">A Site VPN succeeds only when ordinary users can connect from the devices they already use. A configuration that works perfectly on an administrator’s Linux laptop may fail in practice if a phone sleeps, a Windows route persists after disconnect, macOS chooses another DNS resolver, or an Android user imports the wrong profile. Cross-platform deployment is therefore an operations problem as much as a protocol problem: every profile needs an owner, a clear name, a narrow route, and a repeatable test.</p><p class="article-intro">WireGuard is available across major operating systems, but the user interface and platform networking rules differ. Treat the cryptographic settings as shared design and the connection behavior as platform-specific. This guide focuses on the common decisions that should remain consistent—peer identity, addresses, routes, DNS, endpoint, and revocation—then explains where onboarding and troubleshooting change on iOS, Android, Windows, macOS, and Linux.</p><h2 id="create-one-peer-per-device">Create one peer per device</h2><p>Do not copy the same client private key onto a phone, laptop, and desktop. A unique peer lets the operator revoke one lost device without interrupting the others, assign precise routes, and understand which device produced a connection. Give every peer a descriptive inventory name such as <code>alex-iphone-2026</code> rather than <code>client3</code>. Record the owner, platform, assigned address, public key, creation date, and review date. The private key should stay on the device whenever the client supports local generation.</p><p>A profile should also identify the environment. A user may have production, staging, home-lab, and support tunnels installed at the same time. Use visible names that distinguish them and avoid relying on nearly identical QR codes. Keep the route set small: a private service address or subnet is easier to reason about than a default route. When full-tunnel access is truly required, label that profile explicitly so the user understands that general internet traffic will take a different path.</p><h2 id="start-from-supported-clients-not-random-installers">Start from supported clients, not random installers</h2><p>Use an operating-system package source, official app store listing, or a deployment system your organization controls. The <a href="https://www.wireguard.com/install/" rel="noopener noreferrer">WireGuard installation guide</a> links the project’s supported options for common platforms. Confirm the publisher and package identity before distributing instructions, particularly on mobile stores where similarly named applications can appear. For managed fleets, pin an approved package and document the update channel rather than asking each user to search.</p><p>Installation is only the first step. Create a short acceptance test that works everywhere: connect the tunnel, open the private hostname, confirm the expected certificate and page identity, verify an unapproved public address cannot reach the service, disconnect, and confirm the private hostname stops working. This sequence tests routing, DNS, TLS, and access boundaries together. A green “connected” switch proves only that the local client believes the interface is active.</p><h2 id="ios-and-ipados-design-for-roaming-and-simple-choices">iOS and iPadOS: design for roaming and simple choices</h2><p>Mobile users move between Wi-Fi and cellular networks, suspend apps, and lock the screen. Test that the tunnel re-establishes after those changes and that the private site does not appear to hang with a stale route. On-demand behavior can reduce friction, but rules should be understandable: for example, connect whenever a particular private hostname is requested or whenever the device is off a trusted network. Avoid configurations that unexpectedly send all personal traffic through a work gateway unless that is an explicit policy.</p><p>QR import is convenient for a single user standing beside an administrator, but it should be treated as a secret transfer. Do not place QR codes in a shared ticket, slide deck, or photo library. Delete temporary images after import and lock the source device. In managed environments, use device management to deliver settings and remove them when access ends. Give users one visible troubleshooting action—toggle the tunnel off and on—plus a clear support path if the endpoint or DNS answer has changed.</p><h2 id="android-account-for-vendor-power-controls">Android: account for vendor power controls</h2><p>Android supports robust VPN behavior, but device manufacturers can apply different battery and background restrictions. A tunnel that disappears after the screen turns off may need an approved always-on configuration, an exemption from aggressive power management, or a client update. Test on representative devices rather than assuming one Android handset describes the whole fleet. Keep the profile route-specific unless policy requires all traffic, and decide whether the user may bypass the VPN when it is unavailable.</p><p>Import methods vary by client, but the same secret-handling rule applies: the configuration contains a private key. Store exported files only long enough to transfer them, use an encrypted channel, and remove copies from downloads, chat history, and cloud photo backups. If the device is lost, revoke the peer immediately instead of waiting to see whether screen lock is sufficient. Reissue a new key and address for the replacement device so the inventory remains accurate.</p><h2 id="windows-and-macos-watch-routes-dns-and-multiple-adapters">Windows and macOS: watch routes, DNS, and multiple adapters</h2><p>Desktop systems often have Ethernet, Wi-Fi, virtual machines, endpoint security software, and other VPN clients installed simultaneously. That makes routing conflicts more likely. On Windows, inspect the active route table and interface metrics when a private address goes to the wrong adapter. On macOS, verify which resolver is answering the private name and whether another network extension is competing for traffic. Test sleep and wake, docking, switching Wi-Fi networks, and connecting a second VPN.</p><p>For shared workstations, decide whether a tunnel is tied to a user session or the device. A device-level tunnel can make a private service available before sign-in, while a user-level tunnel better reflects individual authorization. Do not let the presence of a network tunnel replace application identity. Administrative websites should still use named accounts and strong authentication, because desktop access can be delegated, screens can be unlocked, and malware can act from an authorized device.</p><h2 id="linux-make-automation-observable">Linux: make automation observable</h2><p>Linux clients may be desktops, servers, CI runners, routers, containers, or small single-board computers. The same configuration can be started by a desktop application, <code>wg-quick</code>, a network manager, systemd-networkd, or another orchestration layer. Choose one owner for the interface. Two tools attempting to install routes or DNS settings can create intermittent failures that vanish when the machine is rebooted. Document how the interface starts, where its configuration lives, and which service reports failure.</p><p>For unattended systems, avoid an unlimited, permanent peer with broad network access. Restrict routes and firewall rules to the exact destination and protocol the automation needs. Monitor recent handshake time and data transfer, but do not mistake traffic volume for successful application work. Add an HTTP health check over the private path and alert on repeated failures. When a server is rebuilt, create a new peer instead of restoring a private key from an old image without review.</p><h2 id="make-dns-behavior-predictable-on-every-platform">Make DNS behavior predictable on every platform</h2><p>A profile can specify a DNS server, but operating systems decide how that resolver interacts with existing networks. Full replacement is simple but may send unrelated queries to the Site VPN resolver. Split DNS is more precise: only names under a private domain go to the private resolver. The exact implementation varies, so test the same hostname from each supported platform. Record both the expected answer while connected and the expected failure or public answer while disconnected.</p><p>Avoid names that collide with home router search domains or multicast naming conventions. Use a domain you control, or a clearly delegated internal namespace backed by managed resolution. Keep certificate names aligned with DNS. If a user must enter an IP address because DNS is unreliable, the operational design is incomplete. Fix resolution rather than training people to bypass certificate warnings or memorize addresses.</p><h2 id="support-revocation-and-offboarding-are-part-of-onboarding">Support, revocation, and offboarding are part of onboarding</h2><p>Give users a one-page guide with the profile name, the private hostname, the connect and disconnect action, and three checks: network available, tunnel active, correct site identity. Keep diagnostic steps non-destructive. Asking users to reinstall immediately can destroy useful state and create duplicate peers. Support staff should be able to check whether the public endpoint is reachable, whether a recent handshake exists, whether the peer address is unique, and whether DNS returns the intended private address.</p><p>Offboarding should be a routine change, not an emergency. Remove the peer from the gateway, update the inventory, and verify the old configuration no longer handshakes. Managed devices should also have the profile removed. Review inactive peers periodically and investigate devices that have not connected within the expected interval. A small collection of well-owned peers is safer and easier to operate than a growing list of keys whose devices and users are unknown.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>Cross-platform Site VPN access is reliable when the shared network design stays consistent and platform behavior is tested rather than assumed. Unique device keys, narrow routes, predictable DNS, and a simple acceptance test prevent most onboarding confusion.</p><p>Treat profile delivery and removal as security-sensitive operations. A polished connection button is useful, but the real measure of success is whether administrators can identify, support, and revoke every device that can reach the private site.</p></div>]]></content:encoded>
</item>
<item>
<title>Build a WireGuard Site VPN on a Linux VPS</title>
<link>https://sitevpn.com/blog/build-wireguard-site-vpn-linux-vps/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/build-wireguard-site-vpn-linux-vps/</guid>
<pubDate>Wed, 29 May 2024 09:00:00 -0700</pubDate>
<category>Deployment</category>
<description>A careful, repeatable blueprint for placing a private website behind a WireGuard gateway on a small Linux VPS.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/build-wireguard-site-vpn-linux-vps-sitevpn.png" width="1200" height="1200" alt="Build a WireGuard Site VPN on a Linux VPS"></p><p class="article-intro">A Linux VPS is a practical place to anchor a small Site VPN. It has a stable public address, runs continuously, and can route traffic to a private web server on the same machine or to another origin reachable through a second tunnel or private network. WireGuard fits this job because its configuration is compact: each peer has a key, an address, and a set of permitted routes. The difficult part is rarely creating the interface. The real work is choosing a clean address plan, narrowing firewall rules, and maintaining keys after the first successful connection.</p><p class="article-intro">This guide presents a vendor-neutral blueprint rather than a copy-and-paste appliance. Commands use a Debian or Ubuntu style package manager, but the architecture applies to other Linux distributions. Replace example addresses, interface names, and ports with values from your own plan. Test from a console session that will remain available if networking changes go wrong, and make a provider snapshot or backup before altering firewall or forwarding rules.</p><h2 id="design-the-network-before-installing-packages">Design the network before installing packages</h2><p>Choose one private subnet for WireGuard peers and keep it separate from the VPS provider’s private network, your home LAN, and common office ranges. An example is <code>10.73.40.0/24</code>, with <code>10.73.40.1</code> assigned to the gateway and one address per client. Reserve addresses in a small inventory so a peer name, public key, owner, and assigned address remain linked. Do not reuse an old address until you have confirmed the previous peer is revoked everywhere.</p><p>Decide where the protected website will listen. The simplest arrangement is a web server on the same VPS bound to <code>10.73.40.1</code> or to loopback behind a reverse proxy that listens on the WireGuard address. A separate origin can use another private route, but then the gateway needs forwarding in both directions and the origin needs a return path. Draw the packet path now; if you cannot explain the return route, the first browser request may arrive while every response disappears.</p><h2 id="install-wireguard-and-create-keys-safely">Install WireGuard and create keys safely</h2><p>Install the distribution package, confirm the kernel or userspace implementation is available, and create a restrictive directory for key material. Generate a private key on each device whenever possible so the secret never travels through email or chat. The server needs its own private key and the public key derived from it. Keep private keys out of shell history, configuration repositories, backups that lack encryption, and support tickets. Public keys are identifiers and can be recorded in the peer inventory.</p><p>The official <a href="https://www.wireguard.com/quickstart/" rel="noopener noreferrer">WireGuard Quick Start</a> documents the core tools and the relationship between interfaces, keys, peers, endpoints, and allowed IPs. Read it before adding automation. Helper scripts can save time, but an operator should still know which configuration creates the interface, which rule identifies a peer, and which route is installed. That knowledge is essential when a client works from one network but not another.</p><pre><code>sudo apt update
sudo apt install wireguard
sudo install -d -m 700 /etc/wireguard/keys
umask 077
wg genkey | sudo tee /etc/wireguard/keys/server.key | wg pubkey | sudo tee /etc/wireguard/keys/server.pub</code></pre><h2 id="create-a-narrow-server-configuration">Create a narrow server configuration</h2><p>A basic server interface needs a private address, a UDP listen port, and the server private key. Each client appears as a peer with its public key and exactly the address or routes that peer is allowed to use. On the server, a phone assigned <code>10.73.40.10</code> should normally have <code>AllowedIPs = 10.73.40.10/32</code>, not the whole VPN subnet. WireGuard uses this field both as a routing selector and as a source-address authorization rule, so broad entries can produce confusing or unsafe behavior.</p><p>Use <code>wg-quick</code> for a straightforward deployment, but keep firewall policy outside the configuration once the system grows. Embedding many opaque pre-up and post-down commands makes recovery harder. Start the interface, inspect it with <code>wg show</code>, and confirm the UDP socket is listening. Enable the service at boot only after a manual start and stop complete successfully. Keep a second terminal open while testing so a firewall mistake does not become a locked server.</p><pre><code>[Interface]
Address = 10.73.40.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

[Peer]
# admin-laptop
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.73.40.10/32</code></pre><h2 id="open-one-port-and-close-everything-else-by-default">Open one port and close everything else by default</h2><p>The public firewall needs the selected UDP port for WireGuard and only the management ports you intentionally expose. The private web service should accept traffic on the WireGuard interface or private address, not on every interface. If the reverse proxy listens on <code>0.0.0.0</code>, a cloud firewall rule may hide the mistake today, but a future rule change can publish the service. Bind explicitly and verify with a socket listing tool. Defense in depth means the host and provider firewall agree.</p><p>Forwarding is required only when the gateway routes to a different host or network. Enable IPv4 or IPv6 forwarding deliberately, add rules that allow the required source and destination, and reject unrelated forwarding. Network address translation can simplify return routing for a small origin network, but it hides client addresses from the destination and can complicate logs. A routed design preserves addresses but requires the origin to know how to return traffic to the WireGuard subnet. Choose one model and document it.</p><h2 id="build-a-client-profile-for-the-protected-site">Build a client profile for the protected site</h2><p>The client interface receives its unique private address and the client private key. Its peer entry contains the server public key, public endpoint, and the destination routes that should use the tunnel. For a Site VPN, those routes might be only <code>10.73.40.1/32</code> or a dedicated service subnet. Avoid <code>0.0.0.0/0</code> unless the design intentionally sends all internet traffic through the VPS. A narrow route reduces bandwidth, avoids changing the user’s general egress location, and limits the effect of a gateway outage.</p><p>Mobile networks and home routers may remove idle UDP mappings. A modest persistent keepalive can help a peer that must remain reachable behind NAT, but it is not required for every device and consumes a small amount of battery and network activity. Import the profile through a secure, controlled method, label it clearly, and delete temporary QR codes or files. Confirm the device clock is accurate, then test handshake time, packet counters, DNS resolution, and the private website.</p><pre><code>[Interface]
Address = 10.73.40.10/32
PrivateKey = CLIENT_PRIVATE_KEY

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = vpn.example.net:51820
AllowedIPs = 10.73.40.1/32
PersistentKeepalive = 25</code></pre><h2 id="add-dns-and-tls-without-exposing-the-origin">Add DNS and TLS without exposing the origin</h2><p>A memorable hostname makes the private site easier to use. You can run a DNS resolver reachable over the tunnel, distribute a static host mapping on managed devices, or use a public DNS record that points to a private address when that disclosure is acceptable. Keep the answer consistent across clients. If the same hostname serves a public landing page and a private application, use split DNS carefully and make the two destinations visually distinct so users know which environment they are operating.</p><p>Serve HTTPS inside the VPN. For a domain you control, DNS-based certificate validation can issue a publicly trusted certificate without opening the web origin. A private certificate authority is another option for managed devices, but trust installation and revocation become part of operations. Configure the reverse proxy to listen on the WireGuard address, send security headers, and reject unknown hostnames. Test that the public VPS address and alternate ports do not reveal the protected application.</p><h2 id="operate-the-vpn-as-a-maintained-service">Operate the VPN as a maintained service</h2><p>Record the purpose, owner, and expiration review date for every peer. Remove peers when a device is replaced, a contractor leaves, or access is no longer required. Patch the operating system and WireGuard packages, monitor disk space and service health, and review authentication and web logs for unexpected activity. Back up configurations and the address inventory securely, but remember that a backup containing private keys can grant access. Protect it accordingly.</p><p>Practice recovery. Know how to rebuild the interface from a clean VPS, restore DNS, and move the public endpoint if the server is unavailable. Test configuration changes with a new peer before rotating all devices. When the number of peers grows beyond what a text file and manual process can safely support, add an auditable provisioning workflow or move to a control plane designed for identity, policy, and device lifecycle. Simplicity is a benefit only while the operator can still understand the whole system.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>A Linux VPS and WireGuard can create a focused, dependable Site VPN with very little software. The secure result comes from narrow routes, explicit listening addresses, disciplined key handling, and a documented return path—not from the tunnel interface alone.</p><p>Build the smallest working design, test that the protected site is unreachable without the tunnel, and rehearse peer revocation. Those checks provide a stronger foundation than adding more components before the basic path is understood.</p></div>]]></content:encoded>
</item>
<item>
<title>What Is a Site VPN? A Practical Architecture Guide</title>
<link>https://sitevpn.com/blog/what-is-a-site-vpn/</link>
<guid isPermaLink="true">https://sitevpn.com/blog/what-is-a-site-vpn/</guid>
<pubDate>Wed, 14 Feb 2024 09:00:00 -0700</pubDate>
<category>Fundamentals</category>
<description>A Site VPN creates a private path to a website or web application so authorized devices can reach it without making the service broadly public.</description>
<content:encoded><![CDATA[<p><img src="https://sitevpn.com/assets/images/blog/what-is-a-site-vpn-sitevpn.png" width="1200" height="1200" alt="What Is a Site VPN? A Practical Architecture Guide"></p><p class="article-intro">A Site VPN is a private network path built for a specific website, dashboard, API, or group of web tools. Instead of publishing every service to the open internet and relying only on a login page, the operator limits network reachability first. An approved phone, laptop, server, or router joins an encrypted network; only then can it connect to the private web address. The public site can remain public, while administrative surfaces, staging environments, team tools, and sensitive dashboards stay on a separate private path.</p><p class="article-intro">The phrase is not a formal protocol name. It is a useful architecture label: combine a VPN such as WireGuard with private addressing, controlled routes, name resolution, and a web server or reverse proxy. The result is narrower than a consumer “change my IP address” VPN and more concrete than a generic remote-access plan. A Site VPN answers one operational question: which devices should be able to reach this site, and how do we make that path dependable without exposing the origin to everyone?</p><h2 id="the-basic-traffic-path">The basic traffic path</h2><p>Picture four parts. First is the client device: a phone, laptop, workstation, branch router, or automated server. Second is the encrypted tunnel interface, which gives that device a private address. Third is routing, which decides that requests for a private subnet or private hostname should travel through the tunnel. Fourth is the service edge: usually a reverse proxy or web server listening on the private interface. A request travels from the client, through the encrypted tunnel, to the private service, then returns along the same route.</p><p>This design can be hub-and-spoke, where every client connects to one VPN gateway, or mesh-like, where peers can form direct paths. Hub-and-spoke is usually easier for a small website because logs, firewall rules, DNS, and key revocation have a central point. A mesh can reduce latency and avoid a single gateway, but it introduces more policy and peer-discovery work. The right shape depends less on fashion than on the number of sites, devices, administrators, and network boundaries you must manage.</p><h2 id="how-a-site-vpn-differs-from-a-consumer-vpn">How a Site VPN differs from a consumer VPN</h2><p>A consumer VPN commonly sends general internet traffic through a provider-operated exit server. Its goals may include protecting traffic on untrusted networks, changing the visible egress location, or reducing what a local network can observe. A Site VPN usually does the opposite: it routes only selected private destinations through a network you control. Normal browsing can continue over the device’s ordinary connection while requests for an internal hostname or subnet use the tunnel. This is split tunneling by design, not an accidental omission.</p><p>The trust model is also different. With a consumer service, the customer delegates operation of the gateway and often DNS to a provider. With a self-hosted Site VPN, the operator controls keys, routes, logs, updates, and the destination server. That control is valuable, but it creates responsibility. A free WireGuard package does not make the whole system free: a VPS, domain, backups, monitoring, and staff time still have costs. “Free Site VPN” is realistic as a software choice, not as a promise of zero operational expense.</p><h2 id="network-access-is-one-layer-not-the-whole-security-model">Network access is one layer, not the whole security model</h2><p>A private route reduces exposure, but it should not become a magic trust boundary. A lost phone, copied key, compromised laptop, or misconfigured peer can still reach whatever the tunnel permits. Keep application authentication for administrative tools, use short and specific routes, separate environments, and remove old peers promptly. For higher-risk systems, add device posture, multifactor authentication, or an identity-aware proxy rather than granting a broad private subnet to every user.</p><p>This resource-focused approach is consistent with the direction described in <a href="https://csrc.nist.gov/pubs/sp/800/207/final" rel="noopener noreferrer">NIST Special Publication 800-207</a>: protect resources and make access decisions explicitly instead of assuming that network location alone proves trust. A Site VPN can be one strong enforcement layer inside that model. It should establish an encrypted path and a limited reachability boundary, while the application still verifies who is acting and whether that action is allowed.</p><h2 id="private-dns-tls-and-routing-must-agree">Private DNS, TLS, and routing must agree</h2><p>Many broken deployments are not encryption failures; they are naming and routing disagreements. Decide whether users will open a private IP address, a public-looking hostname that resolves privately, or an internal-only name. A friendly hostname is easier to remember and makes certificate management clearer. Split-horizon DNS can return a private address to connected devices while public resolvers return no record or a different public site. Whichever pattern you choose, document where the answer comes from and what happens when the tunnel is disconnected.</p><p>TLS is still useful inside a VPN. It protects the browser-to-service session independently, preserves normal browser security expectations, and helps prevent a routing mistake from turning into plaintext access. The certificate strategy depends on the name: publicly trusted certificates work well when you control a domain and can complete validation without exposing the service; a private certificate authority can fit managed devices but requires trust distribution. Avoid teaching users to click through certificate warnings, because that normalizes behavior that is unsafe outside the private network.</p><h2 id="choose-the-smallest-useful-route">Choose the smallest useful route</h2><p>A tunnel can carry all traffic, an entire private network, or just one host route. For a Site VPN, start with the smallest route that supports the actual use case. A single private address or a dedicated service subnet limits accidental access and makes troubleshooting easier. If users also need databases, SSH, file shares, or multiple internal applications, add those routes deliberately. Do not advertise a large private range merely because it is convenient in the first configuration file.</p><p>Routing must also account for overlap. Home networks, hotels, and offices frequently use the same common private ranges. If your VPN service uses an address that overlaps the client’s local network, traffic may go to the wrong interface. Choose a less common private range, reserve it in an address plan, and test from multiple networks. For mobile devices, consider roaming between Wi-Fi and cellular. A good Site VPN reconnects cleanly, keeps DNS behavior predictable, and does not strand the user with a route that exists after the tunnel has failed.</p><h2 id="a-planning-checklist-before-installation">A planning checklist before installation</h2><p>Write down the protected service, its owner, the people or systems that need it, and the consequence of unintended access. Then choose a gateway location, private address range, DNS pattern, protocol, and client onboarding method. Decide how keys are created, delivered, rotated, and revoked. Specify which logs are necessary for operations and security, how long they are retained, and who can see them. Define patching, backup, and recovery procedures for both the VPN gateway and the web origin.</p><p>Finally, test the negative cases. The private hostname should not expose the protected service from an unapproved device. A revoked peer should stop working. The origin should not be reachable through an overlooked public address or alternate port. A client should recover after sleep, network changes, and temporary packet loss. Administrators should know how to regain access if DNS fails without opening the service to the world. These tests turn a diagram into an operating system that can be trusted over time.</p><div class="conclusion"><h2 id="conclusion">Conclusion</h2><p>A Site VPN is best understood as a narrow, encrypted access layer for web resources that should not be universally reachable. It combines a tunnel, a route, a name, and a service policy; none of those pieces can be designed in isolation.</p><p>Start with one protected site and a small group of devices. Keep application authentication, use precise routes, document key ownership, and test revocation. From there, the same pattern can grow into private static sites, LAMP administration, team chat, AI tools, payment dashboards, and other web services without turning every origin into a public target.</p></div>]]></content:encoded>
</item>
</channel>
</rss>
