121 lines
3.2 KiB
Markdown
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. |