Public VPS Ingress
Purpose
The public VPS is the internet-facing entry point for applications hosted on the Bytek home network.
The VPS prevents individual home services from being exposed directly through the Bell router. Public HTTPS traffic reaches the VPS first, then travels through an encrypted WireGuard tunnel to the home network.
The VPS provides:
- A stable public IPv4 entry point.
- Public TCP port 443.
- An encrypted path to the home network.
- Separation between the public internet and private service backends.
- A recovery console independent of the home network.
- A controlled point for public firewalling.
Service Information
| Setting | Value |
|---|---|
| Public IPv4 address | 38.29.213.101 |
| Primary purpose | Public HTTPS ingress |
| Public application port | TCP 443 |
| Home-network transport | WireGuard |
| Administration | SSH key authentication |
| SSH port | Confirm current hardened SSH port |
| Operating system | Confirm current Linux distribution |
| Hosting provider | Confirm current VPS provider |
| Public DNS provider | WHC cPanel |
| Monitoring | Uptime Kuma |
Architecture Role
The VPS does not host the main Bytek applications.
The VPS forwards approved traffic to the home network.
The primary traffic path is:
- A client opens a public application hostname.
- WHC DNS resolves the hostname to
38.29.213.101. - The client establishes HTTPS to the VPS on TCP port 443.
- The VPS forwards the permitted connection through WireGuard.
- The home WireGuard gateway receives the traffic.
- The gateway forwards the request to Traefik at
192.168.2.182. - Traefik selects the correct application backend.
The VPS must not have direct access to all home-LAN services unless a specific rule requires it.
Public Hostnames
The following public DNS records point to the VPS:
| Service | Hostname | Public Destination |
|---|---|---|
| Nextcloud | cloud.bytek.ca |
38.29.213.101 |
| BookStack | docs.bytek.ca |
38.29.213.101 |
| Authentik | portal.bytek.ca |
38.29.213.101 |
| Vikunja | projects.bytek.ca |
38.29.213.101 |
| Traefik dashboard | proxy.bytek.ca |
38.29.213.101 |
| Uptime Kuma | status.bytek.ca |
38.29.213.101 |
The public hostname pve.bytek.ca must not point to the VPS.
Proxmox remains available only through the LAN or a trusted remote-access method.
Public HTTPS Flow
External HTTPS requests follow this sequence:
- WHC public DNS returns
38.29.213.101. - The incoming connection reaches the VPS on TCP port 443.
- VPS firewall rules verify that the connection targets an approved public entry point.
- The VPS forwards the traffic through the WireGuard tunnel.
- The home WireGuard gateway forwards the connection to Traefik.
- Traefik terminates HTTPS or processes the forwarded connection according to the configured design.
- Traefik routes the request by hostname.
The VPS does not need separate public ports for every HTTPS application because Traefik distinguishes applications by hostname.
WireGuard Connection
The VPS maintains a WireGuard peer relationship with the home WireGuard gateway.
The tunnel is used for:
- Public HTTPS ingress.
- Approved management traffic where explicitly configured.
- Connectivity testing between the VPS and home gateway.
- Delivery of traffic to Traefik.
The existing VPS tunnel must remain separate from any future laptop or phone VPN.
Do not reuse:
- The same WireGuard client keys.
- The same peer address.
- The same interface configuration.
- The same subnet for road-warrior clients without deliberate routing design.
WireGuard Health
Review the tunnel using:
sudo wg show
Verify:
- The home peer is listed.
- A recent handshake exists.
- Transfer counters are increasing.
- The expected tunnel addresses appear.
- Allowed IPs contain only intended routes.
- The endpoint and keepalive settings match the deployment.
A recent handshake confirms peer connectivity but does not prove that application forwarding works.
Test the complete application path separately.
VPS Firewall Policy
The VPS firewall should allow only required public and administrative traffic.
Required Public Access
- TCP 443 for hosted HTTPS applications.
- The required WireGuard UDP port.
- The hardened SSH management port.
Traffic That Must Remain Private
Do not expose the following home ports through the VPS:
| Service | Port |
|---|---|
| Proxmox VE | TCP 8006 |
| Pi-hole DNS administration | Private management port |
| Nextcloud AIO management | TCP 8080 |
| Nextcloud AIO backend | TCP 11000 |
| Uptime Kuma backend | TCP 3001 |
| Authentik backend | TCP 9000 |
| Vikunja backend | TCP 3456 |
| BookStack backend | TCP 6875 |
| Docker API | Any Docker API listener |
| Home service SSH | TCP 22 |
New public ports must be documented before being added.
SSH Administration
VPS management uses SSH key authentication.
Recommended SSH controls include:
- Disable password authentication.
- Disable direct root login where the administration model permits.
- Restrict accepted users.
- Use an Ed25519 key.
- Store the private key securely.
- Use Fail2ban or equivalent rate limiting.
- Keep the VPS provider console available for recovery.
- Restrict SSH using the VPS firewall where practical.
Confirm the current SSH listener using:
ss -lntp
Confirm SSH service health using:
systemctl is-active ssh
Expected result:
active
Do not place the private SSH key in BookStack.
Public DNS Management
Public DNS records are managed through WHC cPanel.
When adding a new public application:
- Create an A record for the new hostname.
- Point the record to
38.29.213.101. - Use a short TTL during the initial deployment.
- Create the matching Pi-hole split-DNS record.
- Create the Traefik router and service.
- Confirm the application backend is reachable from Traefik.
- Confirm certificate issuance.
- Test internally.
- Test externally using cellular data or another external network.
- Add Uptime Kuma monitoring.
- Update BookStack documentation.
Do not point public DNS directly to:
- A private home address.
- The application VM.
- Traefik’s private IP.
- Proxmox.
- Nextcloud AIO management.
Public Application Onboarding Checklist
Before exposing a new application through the VPS, confirm:
- The application works directly on its private backend.
- The application VM has a reserved IP.
- The Proxmox firewall allows Traefik to reach the backend.
- The public WHC record points to
38.29.213.101. - Pi-hole points the hostname to
192.168.2.182. - A Traefik route exists.
- The Traefik backend uses the correct current IP.
- A valid HTTPS certificate is issued.
- Authentik is configured if the application requires SSO.
- The application does not expose an administrative backend unintentionally.
- Uptime Kuma monitors the routed service.
- The VM is covered by the Proxmox backup job.
Service Validation
Confirm the VPS Public Address
Verify that public DNS resolves application hostnames to:
38.29.213.101
Confirm the WireGuard Tunnel
Use:
sudo wg show
Expected:
- Recent handshake.
- Increasing transfer counters.
Confirm Public Port 443
Use:
ss -lntp
Confirm that the intended ingress service or forwarding mechanism is listening on TCP port 443.
Confirm Routing to the Home Network
Test the intended WireGuard peer or private tunnel address.
A successful tunnel ping confirms network reachability but not application-level routing.
Confirm an Application Through the VPS
From an external connection, open a public application such as:
The request should reach Authentik without exposing the private backend port.
External Testing
External testing must use a network outside the home LAN.
Suitable test methods include:
- A phone with Wi-Fi disabled.
- A laptop connected through a mobile hotspot.
- A remote trusted network.
- A public external monitoring service.
Testing from the home LAN may use Pi-hole split DNS and therefore bypass the VPS.
To validate public ingress, confirm the client resolves the hostname to 38.29.213.101.
Monitoring
Recommended Uptime Kuma monitors include:
| Monitor | Target |
|---|---|
| VPS host | Public VPS address |
| Public HTTPS | TCP 443 on the VPS |
| WireGuard peer | Home tunnel peer |
| Authentik external route | portal.bytek.ca |
| Nextcloud external route | cloud.bytek.ca |
| BookStack external route | docs.bytek.ca |
| Vikunja external route | projects.bytek.ca |
Monitoring should distinguish:
- VPS host availability.
- Public port availability.
- WireGuard tunnel availability.
- Traefik routing.
- Application health.
A successful ping does not prove HTTPS or WireGuard forwarding is functioning.
Logging
Review logs for:
- SSH authentication failures.
- Firewall drops.
- WireGuard handshake loss.
- Forwarding failures.
- Unexpected public-port listeners.
- Repeated scans or brute-force attempts.
- Kernel networking errors.
Useful sources may include:
- System journal.
- SSH journal.
- Firewall logs.
- WireGuard status.
- Reverse-proxy or forwarding logs, depending on the VPS design.
Do not copy active tokens, private keys, or full authentication headers into BookStack.
Failure Impact
- External access to hosted applications fails.
- Internal LAN access should continue through Pi-hole and Traefik.
- Proxmox remains available internally.
- Nextcloud AIO management remains available internally.
- Pi-hole remains available internally.
- Authentik may remain available internally.
- Existing local application sessions may continue.
The VPS is therefore critical for external access but not for normal LAN access.
Common Failure Scenarios
Public DNS Resolves Incorrectly
Symptoms:
- External clients connect to the wrong host.
- Certificate issuance fails.
- Application is unreachable externally.
Check:
- WHC A record.
- Public resolver results.
- Record TTL.
- Accidental AAAA record.
WireGuard Handshake Is Missing
Symptoms:
- VPS is reachable.
- Public TCP 443 may be open.
- Home applications are unavailable through the VPS.
Check:
- Home internet connection.
- Home WireGuard gateway.
- Peer keys.
- Endpoint.
- Allowed IPs.
- UDP firewall rules.
- Persistent keepalive.
Tunnel Works but Application Fails
Symptoms:
- WireGuard handshake exists.
- Traffic counters increase.
- Public hostname returns timeout or gateway error.
Check:
- Forwarding rules.
- NAT rules.
- Traefik IP address.
- Traefik firewall.
- Application backend.
- Hostname routing.
- Certificate state.
Internal Access Works but External Access Fails
This usually indicates a problem with:
- WHC public DNS.
- VPS.
- WireGuard.
- Home gateway forwarding.
- Public firewalling.
Internal split DNS bypasses those components.
External Access Works but Internal Access Fails
This usually indicates a problem with:
- Pi-hole.
- Split-DNS records.
- Client DNS settings.
- Browser DNS over HTTPS.
- LAN firewall rules.
Recovery Procedure
If all public applications become unavailable:
- Confirm the VPS is running through the hosting-provider console.
- Confirm the public IP is still
38.29.213.101. - Confirm SSH access.
- Confirm the WireGuard interface.
- Confirm the latest home-peer handshake.
- Confirm transfer counters.
- Confirm IP forwarding and firewall rules.
- Confirm TCP 443 is listening.
- Confirm the home WireGuard gateway is running.
- Confirm Traefik is running.
- Test one application directly from Traefik.
- Test the public hostname from an external network.
- Review logs before changing configuration.
- Use the VPS provider console.
- Verify the SSH service.
- Verify the VPS firewall.
- Verify disk space.
- Verify the network interface.
- Restore SSH configuration from a known-good backup if required.
Backup and Recovery Data
Preserve the following VPS information:
- WireGuard configuration.
- WireGuard public and private keys.
- Firewall rules.
- SSH configuration.
- Authorized SSH keys.
- Network forwarding rules.
- NAT rules.
- Service configuration.
- Provider account and console access.
- Public IP information.
- Recovery procedure.
Private keys must remain in a password manager or encrypted backup.
BookStack should record the location of secrets, not the secret values.
Security Review Checklist
- Only approved public ports are open.
- SSH password authentication is disabled.
- SSH private keys are protected.
- Root SSH behavior matches the hardening policy.
- WireGuard keys are unique.
- WireGuard Allowed IPs are narrow.
- Public TCP 443 reaches only the intended ingress path.
- Proxmox TCP 8006 is not exposed.
- Application backend ports are not exposed.
- The Docker API is not exposed.
- Firewall and authentication logs are reviewed.
- Provider console access works.
- Recovery credentials are stored securely.
Document Control
- Owner: Bryan Gagne-Plante
- Public address:
38.29.213.101 - Primary role: Public HTTPS ingress
- Home transport: WireGuard
- Public DNS provider: WHC cPanel
- Last verified: YYYY-MM-DD
- Last external-access test: YYYY-MM-DD
- Last WireGuard recovery test: YYYY-MM-DD
- SSH recovery tested: Yes / No
- Known limitations: External application access depends on one VPS and one WireGuard tunnel