Note
Make sure docker-compose is installed
bashmkdir -p ~/freshrss
cd ~/freshrssCreate 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 minutesCreate the systemd service file:
sudo nano /etc/systemd/system/freshrss.servicePaste 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.targetCreate a separate service for the Tailscale funnel:
sudo nano /etc/systemd/system/freshrss-tailscale-funnel.servicePaste 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# 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.serviceStep 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# 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