Remotely access and share your self-hosted services

4 min read 2 hours ago
Published on Sep 12, 2025 This response is partially generated with the help of AI. It may contain inaccuracies.

Table of Contents

Introduction

This tutorial will guide you through the process of remotely accessing and sharing your self-hosted services using Tailscale and Caddy. You will set up a secure method to share services like Immich, Audiobookshelf, and Jellyfin with friends and family. Tailscale provides a free personal account for up to 3 users and 100 devices, making it a great choice for personal projects.

Step 1: Deploy Your Services

Before you can share your services, you need to deploy them on your server. Here are some examples of self-hosted services:

  • Immich: A photo backup tool that allows you to store and manage your photos and videos.
  • Audiobookshelf: An audiobook server for managing and playing your audiobooks.
  • Jellyfin: An open-source media server for streaming your media collection.

Make sure each service is properly installed and running on your server.

Step 2: Configure Caddy as a Reverse Proxy

Caddy will allow you to manage and route traffic to your self-hosted services. Follow these steps to configure Caddy:

  1. Install Caddy: Follow the Caddy Quick Start guide to get started.

  2. Create a Caddyfile: This file will define how Caddy handles incoming requests. Here’s a basic example:

    example.com {
        reverse_proxy localhost:8080
    }
    
    audiobookshelf.example.com {
        reverse_proxy localhost:8081
    }
    
    jellyfin.example.com {
        reverse_proxy localhost:8096
    }
    

    Replace example.com with your actual domain, and update the ports as necessary for each service.

  3. Start Caddy: Run the following command to start Caddy with your configuration:

    caddy run --config /path/to/Caddyfile
    

Step 3: Configure DNS

To make your services accessible via a domain name, configure your DNS settings:

  1. Register a Domain: If you don’t have a domain, register one through a provider like Namecheap.

  2. Set Up DNS Records: In your domain registrar's DNS settings, create A records pointing to your server's IP address for each subdomain. For example:

    • example.com → Your server's IP
    • audiobookshelf.example.com → Your server's IP
    • jellyfin.example.com → Your server's IP
  3. Cloudflare Setup (Optional): If using Cloudflare, generate an API token following their documentation to manage your DNS records.

Step 4: Generate an Invite Link

To allow users to access your Tailscale network, generate an invite link:

  1. Open Tailscale: Log in to your Tailscale account.

  2. Generate Link: Navigate to the admin panel and create an invite link for new users.

  3. Share the Link: Send the generated link to anyone you want to grant access to your self-hosted services.

Step 5: Instructions for Remote Users

Guide your remote users on how to connect to your Tailscale network:

  1. Accept the Invite Link: Users should click on the invite link and follow the prompts to join your Tailscale network.

  2. Install Tailscale: If they haven't already, instruct them to download and install Tailscale on their devices.

  3. Connect to Your Network: Once installed, they should log in to Tailscale to access the services you shared.

Step 6: Set Up Mobile Devices

To access your services on mobile devices:

  1. Download Tailscale App: Users should install the Tailscale app from their mobile app store.

  2. Log In: Open the app and log in with the same credentials used for the Tailscale account.

  3. Access Services: Users can now access your self-hosted services through their mobile devices.

Conclusion

You have successfully set up a remote access solution using Tailscale and Caddy for your self-hosted services. By following these steps, you can share your personal projects securely with friends and family. For further customization or troubleshooting, refer to the relevant service documentation or community forums. Happy sharing!