Skip to content

Instantly share code, notes, and snippets.

@stevedylandev
Created October 2, 2025 18:41
Show Gist options
  • Save stevedylandev/5a59b209d429733aab8d44ff968cda1e to your computer and use it in GitHub Desktop.
Save stevedylandev/5a59b209d429733aab8d44ff968cda1e to your computer and use it in GitHub Desktop.
Quickstart guide for self hosting FreshRSS

Note

Make sure docker-compose is installed

Step 1: Create Directory Structure

bashmkdir -p ~/freshrss
cd ~/freshrss

Step 2: Create docker-compose.yml

Create a file called docker-compose.yml:

version: "3"

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    hostname: freshrss
    restart: unless-stopped
    ports:
      - "3555:80"
    volumes:
      - ./data:/var/www/FreshRSS/data
      - ./extensions:/var/www/FreshRSS/extensions
    environment:
      - TZ=America/New_York  # Change to your timezone
      - CRON_MIN=*/30        # Update feeds every 30 minutes

Step 3: Create systemd Service File

Create the systemd service file:

sudo nano /etc/systemd/system/freshrss.service

Paste the following content (replace USERNAME with your actual username):

[Unit]
Description=FreshRSS Docker Compose Service
Requires=docker.service
After=docker.service network-online.target
Wants=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/USERNAME/freshrss
ExecStartPre=/usr/bin/docker compose pull
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
ExecReload=/usr/bin/docker compose pull
ExecReload=/usr/bin/docker compose up -d
TimeoutStartSec=0

[Install]
WantedBy=multi-user.target

Step 4: Create Tailscale Funnel Service (Optional)

Create a separate service for the Tailscale funnel:

sudo nano /etc/systemd/system/freshrss-tailscale-funnel.service

Paste the following:

[Unit]
Description=Tailscale Funnel for FreshRSS
After=freshrss.service tailscaled.service
Requires=freshrss.service tailscaled.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/tailscale funnel 3555
ExecStop=/usr/bin/tailscale funnel --remove 3555
Restart=on-failure

[Install]
WantedBy=multi-user.target

Step 5: Enable and Start Services

# Reload systemd to recognize new services
sudo systemctl daemon-reload

# Enable services to start on boot
sudo systemctl enable freshrss.service
sudo systemctl enable freshrss-tailscale-funnel.service

# Start FreshRSS
sudo systemctl start freshrss.service

# Start Tailscale funnel
sudo systemctl start freshrss-tailscale-funnel.service

Step 6: Verify Everything is Running

# Check FreshRSS service status
sudo systemctl status freshrss.service

# Check Tailscale funnel status
sudo systemctl status freshrss-tailscale-funnel.service

# Check if container is running
docker ps

# Check Tailscale funnel status
sudo tailscale funnel status

Useful Management Commands

# Stop services
sudo systemctl stop freshrss-tailscale-funnel.service
sudo systemctl stop freshrss.service

# Restart services
sudo systemctl restart freshrss.service
sudo systemctl restart freshrss-tailscale-funnel.service

# View logs
sudo journalctl -u freshrss.service -f
sudo journalctl -u freshrss-tailscale-funnel.service -f
docker logs -f freshrss

# Disable services
sudo systemctl disable freshrss-tailscale-funnel.service
sudo systemctl disable freshrss.service
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment