Secure Guest Access to a Zensical Server Using Tailscale
Overview
Assume the Zensical documentation server is running on a Debian OVH server and is normally reachable only through Tailscale. There are four practical ways to provide guest access, ranging from fully private Tailscale access to ordinary browser-only access.
The main tradeoff is between security/control and guest convenience.
| Method | Guest installs software? | Publicly reachable? | Guest-specific access? | Best use |
|---|---|---|---|---|
| Tailscale device sharing | Yes | No | Yes | Known trusted guest |
| Tailscale Funnel | No | Yes | No, by default | Quick temporary sharing |
| Tailcat | Yes, Tailcat CLI | No conventional public exposure | Capability/key based | Technical temporary access |
| Reverse proxy + authentication | No | Yes | Yes | Browser-only controlled access |
1. Full Tailscale installation with device sharing
In this approach, the guest installs Tailscale and signs into their own Tailscale account. You share only the Debian OVH machine hosting Zensical rather than inviting the guest into your entire tailnet.
Tailscale says a shared machine is visible only to the specific recipient and does not expose the rest of your tailnet. Shared devices are also quarantined so they cannot initiate arbitrary connections back into the recipient's network. Access can be further constrained through policy. Tailscale
Advantages
- Strongest isolation of the four approaches.
- Zensical never needs to be exposed to the public Internet.
- Access is associated with a specific Tailscale identity.
- Easy to revoke access.
- Traffic remains within Tailscale's encrypted networking model.
- Can restrict the guest to only the Zensical server and potentially only port
8000. - No need to configure public DNS, TLS certificates or router/firewall port forwarding.
- Excellent choice for repeated access by a colleague or collaborator.
The connection is essentially:
text
Guest computer
|
| Tailscale encrypted network
|
v
OVH Debian server
100.101.112.116:8000
|
v
Zensical
Disadvantages
- The guest must install Tailscale.
- The guest needs a Tailscale identity/account.
- Slightly more onboarding than simply sending a web link.
- Device sharing gives access to the machine rather than inherently limiting the guest to one web application, so policy should be used if strict port-level isolation matters.
Best suited for
Known collaborators who will access the documentation more than once and who don't object to installing Tailscale.
Security: Excellent
Guest convenience: Good
Administration: Easy
2. Tailscale Funnel
Funnel publishes a service running on a Tailscale machine to the Internet through an HTTPS *.ts.net address. The visitor does not need Tailscale installed. Tailscale
For example, Zensical might continue to run internally on:
text
localhost:8000
while Funnel presents something similar to:
text
https://docs-server.example-tailnet.ts.net
The topology becomes:
text
Guest browser
|
| HTTPS / Internet
v
Tailscale Funnel
|
| encrypted proxy
v
OVH Debian
|
v
Zensical :8000
Funnel terminates HTTPS and can reverse-proxy traffic to the local Zensical service. Tailscale currently restricts Funnel's public listening ports to 443, 8443, and 10000; the backend application can still run on another local port such as 8000. Tailscale
Advantages
- Guest requires only a browser.
- No Tailscale installation.
- No Tailscale account required for the visitor.
- Very quick to turn on and off.
- Automatically provides HTTPS.
- Does not expose the OVH server's public IP directly to the guest.
- Excellent for short demonstrations or temporary document review.
Disadvantages
The biggest issue is authorization.
A standard Funnel URL is reachable by anyone who has or discovers the URL. Funnel itself is exposing the service to the public Internet rather than authenticating a particular guest. Tailscale explicitly distinguishes this from device sharing. Tailscale
Other disadvantages include:
- Not identity-specific by itself.
- URL possession becomes an important part of your security.
- Less appropriate for confidential material without an additional authentication layer.
- Funnel currently has bandwidth limitations.
- Requires Funnel, MagicDNS and HTTPS support to be enabled for the tailnet. Tailscale
- Funnel remains a beta feature according to current Tailscale documentation. Tailscale
Best suited for
Short-lived sharing of non-sensitive documentation, demos, test sites or material you would not be concerned about someone accessing if the URL leaked.
Security: Moderate
Guest convenience: Excellent
Administration: Very easy
3. Tailcat
Tailcat takes a substantially different approach.
It uses pieces of Tailscale's open-source data plane—WireGuard encryption, NAT traversal and DERP fallback—but does not require the normal Tailscale control plane or a conventional tailnet membership.
Tailscale describes it as roughly analogous to netcat transported over Tailscale's networking technology. Tailscale
A conceptual deployment would be:
text
Guest PC
|
| Tailcat client
|
| WireGuard / NAT traversal / DERP
v
Tailcat listener
OVH Debian server
|
v
Zensical :8000
Advantages
- No need to add the guest to your tailnet.
- Does not require exposing Zensical as an ordinary public web service.
- Uses WireGuard-based encrypted transport.
- Good for short-lived, point-to-point access.
- Particularly attractive for technically sophisticated users.
- Avoids much of the account/control-plane overhead of a normal Tailscale deployment.
- Can be useful for temporary SSH, TCP services, development servers and similar scenarios.
Disadvantages
- The guest still has to install or run Tailcat.
- It is predominantly a command-line-oriented tool rather than an end-user browser-access product.
- Less convenient for nontechnical guests.
- You lose much of what makes normal Tailscale administration attractive:
- central user identity
- normal tailnet ACL management
- device administration
- conventional sharing controls
- richer auditing and lifecycle management.
- Access credentials/connection information must be treated as secrets.
- Tailcat is much newer than the established Tailscale client and sharing model. Tailscale introduced it publicly in August 2026. Tailscale
Best suited for
Developers, administrators and technically comfortable users who need temporary encrypted access without becoming members of your tailnet.
It is probably not the best option for someone whose requirement is simply:
"Send me a link so I can read your documentation."
Security: Very good when configured correctly
Guest convenience: Fair to poor
Administration: Moderate
4. Browser-only access through an authenticated reverse proxy
This is the most interesting alternative when the requirement is:
The guest should install nothing, but access should still require authentication.
Instead of exposing the Zensical development server directly, you put a web server such as Caddy or nginx in front of it.
For example:
text
Internet
|
| HTTPS
v
Caddy / nginx
|
| authentication
v
Zensical
localhost:8000
The guest might visit:
text
https://docs.example.com
and be prompted for credentials.
Zensical itself can remain bound only to:
text
127.0.0.1:8000
which means it isn't directly reachable from the Internet at all.
The proxy becomes the only Internet-facing component.
Simple username/password version
Both nginx and Caddy support HTTP Basic Authentication. nginx provides its auth_basic mechanism, while Caddy provides basic_auth; Caddy requires passwords to be stored as hashes rather than plaintext. Nginx
A guest experience could therefore be:
```text Guest opens:
https://docs.example.com
↓
Username: guest1 Password: **
↓
Zensical documentation ```
Advantages
- No software installation for the guest.
- No Tailscale account required.
- Works on essentially any normal browser.
- Access can be revoked by disabling the user's credentials.
- Can provide HTTPS and normal domain names.
- Can support multiple independent guest accounts.
- Easy to place additional security controls in front of Zensical.
- Caddy in particular makes reverse proxying quite concise. It has first-class
reverse_proxy,basic_auth, andforward_authcapabilities. Caddy Web Server
Disadvantages
- The proxy is publicly reachable.
- You now have a public Internet service to maintain and patch.
- Requires more setup than Funnel.
- Usually requires DNS configuration.
- Firewall configuration must be correct.
- Password management becomes admin responsibility.
- Basic Authentication should never be used over unencrypted HTTP; it needs HTTPS. Caddy explicitly warns about this. Caddy Web Server
- Brute-force protection, logging and account lifecycle deserve consideration if the service becomes permanent.
More sophisticated authentication
The proxy doesn't have to use simple usernames and passwords.
You can put an authentication service in front of Zensical and provide:
- one-time codes
- OAuth
- Google/Microsoft sign-in
- passkeys
- multi-factor authentication
- identity-provider integration.
Caddy, for example, supports a forward_auth mechanism designed to hand authentication to an external identity gateway before proxying the request to the application. Caddy Web Server
That leads to an architecture such as:
text
Guest browser
|
| HTTPS
v
Caddy
|
+----> Authentication service
| |
| approved
| |
<------------+
|
v
Zensical
127.0.0.1:8000
Best suited for
People who should receive controlled access but who cannot or do not want to install Tailscale.
For a long-lived externally accessible documentation system, this can be preferable to Funnel.
Security: Very good if configured properly
Guest convenience: Excellent
Administration: Moderate to high
Overall comparison
| Characteristic | Device Sharing | Funnel | Tailcat | Authenticated Proxy |
|---|---|---|---|---|
| Guest installs software | Yes | No | Yes | No |
| Guest needs Tailscale account | Yes | No | No | No |
| Internet-public endpoint | No | Yes | Generally no | Yes |
| HTTPS | Via private network / optional web TLS | Automatic | Transport encrypted | Yes, should be mandatory |
| Individual identity | Excellent | None inherently | Key/capability oriented | Excellent |
| Easy revocation | Excellent | Turn Funnel off | Revoke/change secret/key | Excellent |
| Port/service restriction | Excellent | One exposed service | Excellent | Excellent |
| Suitable for nontechnical guest | Good | Excellent | Poor | Excellent |
| Suitable for sensitive documents | Excellent | Poor alone | Good/very good | Very good |
| Initial setup | Easy | Very easy | Moderate | Moderate |
| Long-term administration | Easy | Easy | Moderate | Moderate/high |
Recommendation for your OVH/Zensical environment
It's probably better to treat these deployment options as four levels of access, rather than competing solutions.
For regular collaborators, continue using ordinary Tailscale. Zensical can remain completely private:
text
Windows
↓
Tailscale
↓
100.101.112.116:8000
↓
Zensical
For a known collaborator, use Tailscale device sharing. This gives the strongest combination of identity, privacy and easy revocation without putting the service on the public Internet. Tailscale
For a quick demonstration, use Funnel. It can be turned on, with an HTTPS URL sent to the user allowing them to view the material, after which Funnel can be turned off, releasing the connection. This should be reserved for material that isn't highly sensitive because the Funnel endpoint itself isn't guest-authenticated. Tailscale
For technical short-term connections, Tailcat is interesting and worth documenting, but shouldn't be deployed as the normal way people consume the documentation. Its strength is lightweight encrypted point-to-point connectivity rather than frictionless browser publishing. Tailscale
For nontechnical guests who need secure browser-only access, the best option is Caddy + authentication. In fact, for our documentation server, Caddy rather than nginx should be implemented because a small Zensical installation can be configured with comparatively little machinery:
text
Regular user
|
Tailscale
|
v
+----------------+
| OVH Debian |
| |
Internet ---------->| Caddy |
guest | | |
| authentication|
| | |
| v |
| Zensical |
| localhost:8000 |
+----------------+
That would let us retain private Tailscale access for collaborators while selectively offering an authenticated HTTPS entrance to outside guests.
For the documentation server we're building, consider the following priority sequencing:
1. Tailscale device sharing — preferred whenever the guest will install Tailscale.
2. Caddy + authentication — preferred browser-only solution for controlled access.
3. Funnel — excellent for quick, disposable sharing.
4. Tailcat — excellent technology, but more appropriate for technical point-to-point access than ordinary documentation readers.
The above options (or a subset) would give us a surprisingly flexible documentation platform: the same Zensical instance can remain private by default while supporting several different sharing models depending upon who needs access.