scripts/service.cloudflared.md
2025-05-05 11:58:47 -06:00

121 lines
3.2 KiB
Markdown

---
tags:
- script
author: The Bunker Admin
date: 2025-04-29
---
## Overview
This guide provides instructions for configuring a Cloudflare Tunnel as a systemd service on Ubuntu Linux. This ensures the tunnel automatically starts whenever the server boots up, providing continuous access to your services.
## Prerequisites
- Ubuntu Linux server (tested on Ubuntu 24.04)
- Cloudflared installed
- Existing Cloudflare Tunnel configuration file
- Administrator (sudo) privileges
## Ensure you have a Cloudflare Tunnel already created by following instructions at [[config.cloudflare.homelab]].
## Step-by-Step Instructions
### 1. Locate your cloudflared binary
First, determine the exact path to your cloudflared executable:
```
which cloudflared
```
> [!note] Standard Output
>
> ```
> /usr/local/bin/cloudflared
> ```
Note the output (typically cloudflared).
### 2. Create a systemd service file
Create a new systemd service file to manage the Cloudflare Tunnel:
```
sudo nano /etc/systemd/system/cloudflared-tunnel.service
```
Add the following configuration to the file, replacing the placeholders with your specific values.
Replace the following:
- `YOUR_USERNAME`: The system user that should run the cloudflared service
- `/path/to/cloudflared`: The full path to your cloudflared binary (from step 1)
- `/path/to/your/config.yml`: The full path to your tunnel configuration file
```
[Unit]
Description=Cloudflare Tunnel Service
After=network.target
[Service]
User=YOUR_USERNAME
ExecStart=[/path/to/cloudflared] tunnel --config [/path/to/your/config.yml] run
Restart=always
RestartSec=5
StartLimitInterval=0
[Install]
WantedBy=multi-user.target
```
Save and close the file (Ctrl+O, Enter, Ctrl+X).
### 3. Reload systemd configuration
Reload the systemd manager configuration to recognize the new service:
```
sudo systemctl daemon-reload
```
### 4. Enable the service to start at boot
Configure the service to start automatically at system boot:
```
sudo systemctl enable cloudflared-tunnel.service
```
### 5. Start the service
Start the service immediately:
```
sudo systemctl start cloudflared-tunnel.service
```
### 6. Verify service status
Check that the service is running correctly:
```
sudo systemctl status cloudflared-tunnel.service
```
## Verification
After a system reboot, the Cloudflare Tunnel should start automatically. To confirm:
1. Reboot the server:
```
sudo reboot
```
2. Once the server is back online, check the service status:
```
sudo systemctl status cloudflared-tunnel.service
```
3. Review the service logs if needed:
```bash
sudo journalctl -u cloudflared-tunnel.service
```
## Troubleshooting
- If the service fails to start, check the configuration file path is correct
- Verify the user specified in the service file has permissions to run cloudflared
- Ensure the cloudflared binary is correctly installed at the specified path
- Check the log files for specific error messages:
```bash
sudo journalctl -u cloudflared-tunnel.service -f
```
## Customizing the Service Name
If you're running multiple tunnels, you may want to use more descriptive service names:
```bash
sudo nano /etc/systemd/system/cloudflared-TUNNEL_NAME.service
```
Replace `TUNNEL_NAME` with an identifier for your specific tunnel.