Add comprehensive guides for debugging and resolving FreshRSS API authentication issues with mobile apps. Includes: - API password setup instructions - iOS app configuration (Reeder, NetNewsWire, etc.) - Google Reader API vs Fever API comparison - nginx Authorization header troubleshooting - Debug logging locations and commands - Common error patterns and solutions Covers both successful resolution and known limitations.
5.2 KiB
FreshRSS iOS App Authentication Fix
The Problem
You're getting "login failed" on your iOS RSS app, but the same credentials work on the website.
Why: iOS RSS apps use FreshRSS's API, which requires a separate API password - NOT your regular web login password.
The Solution: Generate an API Password
Step 1: Log into FreshRSS Web Interface
Go to https://feeds.fig.systems and log in with your regular credentials.
Step 2: Navigate to Profile Settings
- Click your username (top right)
- Select "Configuration" or "Settings"
- Go to the "Profile" tab
Step 3: Generate API Password
- Scroll down to "API management" section
- Find "API password" field
- Click "Generate" or "Regenerate" button
- Copy the generated API password (it will look like a random string)
Example: hKm9xP3zQwRt2nLv8YbJ
Step 4: Use API Password in iOS App
When configuring your iOS RSS app:
Username: eddie (your FreshRSS username)
Password: [THE GENERATED API PASSWORD] ← NOT your web password!
Server URL: https://feeds.fig.systems
Common iOS RSS Apps Configuration
Reeder
- Account Type: FreshRSS
- Server:
https://feeds.fig.systems - Username:
eddie - Password: [API password]
NetNewsWire
- Account Type: FreshRSS
- URL:
https://feeds.fig.systems - Username:
eddie - Password: [API password]
Unread
- Service: FreshRSS (Google Reader-compatible)
- Server:
https://feeds.fig.systems - Username:
eddie - Password: [API password]
Fiery Feeds
- Account Type: FreshRSS
- Server URL:
https://feeds.fig.systems - Username:
eddie - Password: [API password]
Verify API is Enabled
If the API password doesn't work, verify API is enabled:
- Log into FreshRSS web interface
- Go to Administration → Configuration → System
- Scroll to "API (mobile access)"
- Ensure "Enable API" is checked ✓
- Click "Submit" if you made changes
Troubleshooting
Error: "Invalid API password"
Solution: Regenerate the API password in FreshRSS web interface and try again.
Error: "Connection failed" or "Cannot connect to server"
Check:
- URL is exactly:
https://feeds.fig.systems(no trailing slash) - Phone has internet connection
- Try accessing the URL in Safari/Chrome on the same phone
- Check if Tinyauth SSO is blocking API access
SSO/Tinyauth Blocking API Access
FreshRSS has tinyauth middleware enabled. This might block API requests if they don't have proper authentication headers.
Check logs:
tail -f /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/nginx/access.log
Look for your iOS app's requests (they'll have User-Agent like "Reeder" or "NetNewsWire").
If API is being blocked by SSO:
Option 1: Create a bypass for API endpoint:
# In compose.yaml, change:
traefik.http.routers.freshrss.middlewares: tinyauth
# To bypass API paths:
traefik.http.routers.freshrss.middlewares: freshrss-auth
# Add new middleware in Traefik config or labels:
traefik.http.middlewares.freshrss-auth.chain.middlewares: tinyauth-skip-api, tinyauth
Option 2: Temporarily disable SSO to test:
# Comment out in compose.yaml:
# traefik.http.routers.freshrss.middlewares: tinyauth
docker compose up -d
Error: "SSL/Certificate error"
Your FreshRSS uses Let's Encrypt SSL. If iOS app shows certificate errors:
- Update iOS to latest version
- Try toggling "Allow self-signed certificates" OFF (you don't need it)
- Check the URL doesn't have
http://(must behttps://)
View API Logs
Check what the iOS app is sending:
# Watch nginx access log
tail -f /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/nginx/access.log
# Filter for API requests
grep -i "api\|fever\|greader" /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/nginx/access.log | tail -20
Check for authentication errors:
# PHP errors
tail -f /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/php_errors.log
# Nginx errors
tail -f /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/nginx/error.log
Real-time monitoring:
# Open 3 terminals and watch:
# Terminal 1:
tail -f /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/nginx/access.log
# Terminal 2:
tail -f /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/nginx/error.log
# Terminal 3:
tail -f /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/php_errors.log
# Now try connecting from iOS app
Quick Test: API is Working
Test the API manually:
# Replace with your actual API password
API_PASSWORD="your-api-password-here"
# Test authentication
curl -s "https://feeds.fig.systems/api/greader.php/reader/api/0/token" \
-u "eddie:$API_PASSWORD" | head -20
# Should return a token, not an error
If this works, your API is functional and the issue is with how the iOS app is configured.
Current Status
✅ Debug logging enabled - PHP errors will show in logs ✅ API enabled - Checked in config.php (line 20) ⚠️ SSO might block API - Tinyauth middleware is active
Next step: Generate API password and try it in your iOS app!