diff --git a/README.md b/README.md index d2ada6a..aaac2e7 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# {{Service}} with Tailscale Integration +# Mosquitto with Tailscale Integration -![{{Service}} with Tailscale](https://jellyfin.org/images/logo.svg "{{Service}}") +![Mosquitto with Tailscale](https://jellyfin.org/images/logo.svg "Mosquitto") -This project sets up a {{Service}} instance with Tailscale VPN integration using Docker Compose. It creates a secure, private network connection for your {{Service}} instance using Tailscale. +This project sets up a Mosquitto instance with Tailscale VPN integration using Docker Compose. It creates a secure, private network connection for your Mosquitto instance using Tailscale. ## Prerequisites @@ -12,21 +12,21 @@ This project sets up a {{Service}} instance with Tailscale VPN integration using ## Project Structure ``` -ts-{{service}}/ +ts-mosquitto/ ├── docker-compose.yml ├── tailscale/ │ ├── tailscale-data/ # Persistent Tailscale state │ └── config/ # Tailscale configuration files -└── {{service}}/ - └── config/ # {{service}} configuration files +└── mosquitto/ + └── config/ # mosquitto configuration files ``` ## Setup Instructions 1. **Clone the Repository** ```bash - git clone https://gitea.damconsulting.llc/DAM/ts-{{service}} - cd ts-{{service}} + git clone https://gitea.damconsulting.llc/DAM/ts-mosquitto + cd ts-mosquitto ``` 2. Create Required Directories ```bash @@ -37,8 +37,9 @@ ts-{{service}}/ - Optionally, update the file in `tailscale/config/serve.json` if you need specific Tailscale serve configurations - CAUTION: Changing `"${TS_CERT_DOMAIN}:443": false` to `true` will expose the service to the internet -4. Configure {{Service}} - - See {{service_docs}} for configuration options +4. Configure Mosquitto + - A minimal config is provided in `/mosquitto/config/mosquitto.conf` + - See official [documentation](https://mosquitto.org/documentation/) for more configuration options (recomended for production) 5. Start the Services ```bash @@ -47,31 +48,30 @@ ts-{{service}}/ 6. Wait for Certificate to propagate [~2m] -7. Login - - After starting the services your service should be available via tailnet at https://{{service}}.{{YOUR_TAILNET_DOMAIN}}.ts.net ie https://{{service}}.tail12345.ts.net/ +7. Connect with your preferred client ## Services -### {{service}}-ts (Tailscale) +### mosquitto-ts (Tailscale) - Runs Tailscale VPN client - Image: tailscale/tailscale:latest -- Container name: {{service}}-ts -- Hostname: {{service}} +- Container name: mosquitto-ts +- Hostname: mosquitto - Requires NET_ADMIN and SYS_MODULE capabilities - Persists state in ./tailscale/tailscale-data - Uses configuration from ./tailscale/config -### {{service}} +### mosquitto -- Depends on {{service}}-ts service +- Depends on mosquitto-ts service ## Usage -- After starting the services your service should be available via tailnet at `https://{{service}}.{{YOUR_TAILNET_DOMAIN}}.ts.net` ie `https://{{service}}.tail12345.ts.net/` +- After starting the services your service should be available via tailnet at `https://mosquitto.{{YOUR_TAILNET_DOMAIN}}.ts.net` ie `https://mosquitto.tail12345.ts.net/` - To manually get the Tailscale IP/hostname of your container: ```bash - docker logs {{service}}-ts + docker logs mosquitto-ts ``` Look for the Tailscale IP address in the logs. @@ -80,7 +80,8 @@ ts-{{service}}/ - Uncomment and adjust the ports mapping if you need direct access (without Tailscale): ```yaml ports: - - 3000:3000 + - 1883:1883 + - 8883:8883 ``` - Stopping the Services ```bash @@ -90,19 +91,32 @@ ts-{{service}}/ ## Troubleshooting - Check container logs: ```bash - docker logs {{service}}-ts - docker logs {{service}} + docker logs mosquitto-ts + docker logs mosquitto ``` - Ensure your Tailscale auth key is valid and not expired - Verify the configuration files have proper permissions - Make sure required directories exist before starting +## Service Port details +- 1883 : MQTT, unencrypted, unauthenticated +- 1884 : MQTT, unencrypted, authenticated +- 8883 : MQTT, encrypted, unauthenticated +- 8884 : MQTT, encrypted, client certificate required +- 8885 : MQTT, encrypted, authenticated +- 8886 : MQTT, encrypted, unauthenticated +- 8887 : MQTT, encrypted, server certificate deliberately expired +- 8080 : MQTT over WebSockets, unencrypted, unauthenticated +- 8081 : MQTT over WebSockets, encrypted, unauthenticated +- 8090 : MQTT over WebSockets, unencrypted, authenticated +- 8091 : MQTT over WebSockets, encrypted, authenticated + ## Notes -- The {{Service}} service uses the Tailscale service's network stack via `network_mode: service:{{service}}-ts` +- The Mosquitto service uses the Tailscale service's network stack via `network_mode: service:mosquitto-ts` - Direct port mapping is disabled by default as Tailscale handles the networking - Services restart automatically unless explicitly stopped - For more information: - - Tailscale documentation: https://tailscale.com/kb/ - - {{Service}} documentation: {{service_docs}} - - {{Service}} repository: {{service_repo}} - - {{Service}} linuxserve.io: {{service_lcsr}} \ No newline at end of file + - Tailscale [documentation](https://tailscale.com/kb/) + - Mosquitto [documentation](https://mosquitto.org/documentation/) + - Mosquitto [repository](https://github.com/eclipse-mosquitto/mosquitto) + - A [helpful article](https://crodrigues.com/setting-up-a-secure-mosquitto-mqtt-broker-with-ssl-tls-and-user-access-control-mqtt-series-2/) \ No newline at end of file