---
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.