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.
6.1 KiB
Reeder Authentication Failure - Troubleshooting
Current Status
✅ API enabled in FreshRSS ✅ API password hash exists for user 'eddie' ✅ Tinyauth SSO removed ❌ Reeder getting 401 Unauthorized
Log Analysis
POST /api/greader.php/accounts/ClientLogin HTTP/1.1" 401
This means:
- Reeder is correctly hitting the Google Reader API endpoint
- Authentication is failing (401 = Unauthorized)
- Either wrong password OR the API password hasn't been properly set
The Issue: API Password vs Web Password
FreshRSS has TWO different passwords:
- Web Password - For logging into https://feeds.fig.systems
- API Password - For iOS apps (Reeder, NetNewsWire, etc.)
You MUST use the API password in Reeder, not your web password!
Step-by-Step Fix
1. Generate/Regenerate API Password
Via Web Interface (Easiest):
- Go to https://feeds.fig.systems
- Log in with your web password
- Click your username (top right) → Configuration
- Click Profile tab
- Scroll down to "API management" or "API" section
- Look for "API password" field
- Click "Generate" or "Regenerate" button
- Write down the password immediately - it won't be shown again!
The password will look something like: aB3xK9mP2wQz7nYv
2. Configure Reeder
Open Reeder on your iOS device:
- Add Account → Select FreshRSS or Self-hosted
- Enter these details:
- Server:
https://feeds.fig.systems - Username:
eddie - Password:
[THE API PASSWORD FROM STEP 1]← NOT your web password!
- Server:
3. Test Authentication
Try to sync in Reeder. If it still fails, continue to advanced troubleshooting below.
Advanced Troubleshooting
Test API Manually
Run this test script:
/tmp/test-freshrss-api.sh
Or manually:
# Replace YOUR_API_PASSWORD with the actual API password
curl -v -d "Email=eddie" -d "Passwd=YOUR_API_PASSWORD" \
"https://feeds.fig.systems/api/greader.php/accounts/ClientLogin"
# Should return 200 and an auth token, NOT 401
Check What Reeder is Sending
Watch the logs while you try to connect from Reeder:
tail -f /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/log/nginx/access.log
Look for:
- Is username being sent correctly? (should be 'eddie')
- Multiple 401s = wrong password
- 404 = wrong URL endpoint
Common Issues
Issue 1: Using Web Password Instead of API Password
Symptom: 401 errors Solution: Generate API password in web interface, use THAT password
Issue 2: API Password Never Generated
Symptom: 401 errors Check: Look in web interface - is the API password field empty? Solution: Click "Generate" to create one
Issue 3: Wrong Username
Symptom: 401 errors
Check: Username must be exactly eddie (the FreshRSS username)
Solution: Double-check spelling and case
Issue 4: Wrong Server URL
Symptom: Connection errors or 404
Check: Must be https://feeds.fig.systems (no trailing slash)
Solution: Remove any extra characters
Issue 5: Reeder Using Wrong API Type
Symptom: 404 or unexpected responses Solution: In Reeder, make sure you selected:
- "FreshRSS" account type (if available)
- OR "Self-hosted" → "Google Reader API"
- NOT "Fever API" (different authentication)
Verify API is Actually Working
Method 1: Use Fever API Instead
FreshRSS also supports Fever API. Your Fever key is:
b82fc4a3c3ff610ff270798ef6f93b13
Try in Reeder:
- Add Account → Fever
- Server:
https://feeds.fig.systems/api/fever.php - Email:
eddie - Password: Your web password (Fever uses web password, not API password!)
If Fever works but Google Reader API doesn't, there's an issue with the Google Reader API specifically.
Method 2: Check from Another Device
Try accessing from desktop:
curl -d "Email=eddie" -d "Passwd=YOUR_API_PASSWORD" \
"https://feeds.fig.systems/api/greader.php/accounts/ClientLogin"
If this returns a token, the API works and the issue is Reeder-specific.
Reset Everything
If nothing works, reset the API authentication:
1. Clear API Password
# Backup first
cp /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/www/freshrss/data/users/eddie/config.php \
/home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/www/freshrss/data/users/eddie/config.php.backup
# Edit the config file manually to clear API password
# Look for 'apiPasswordHash' and set it to empty string
2. Regenerate via Web Interface
- Log into https://feeds.fig.systems
- Go to Profile → API management
- Generate NEW API password
- Try again in Reeder
Check FreshRSS Version
docker exec freshrss cat /app/freshrss/constants.php | grep FRESHRSS_VERSION
If it's very old, some API features might not work correctly.
Update:
cd /home/eduardo_figueroa/homelab/compose/services/FreshRSS
docker compose pull
docker compose up -d
Enable More Verbose API Logging
Edit: /home/eduardo_figueroa/homelab/compose/services/FreshRSS/config/www/freshrss/data/config.php
Add:
'simplepie_syslog_enabled' => true,
Then check syslog:
docker exec freshrss cat /var/log/syslog 2>/dev/null | grep -i "api\|auth\|greader"
Still Not Working?
Nuclear Option: Recreate User
If API auth is completely broken for this user:
- Export your feeds (Settings → Import/Export)
- Create NEW user in FreshRSS web interface
- Generate API password for new user
- Import feeds to new user
- Try Reeder with new user credentials
Test Results Template
When asking for help, provide:
Username: eddie
Server URL: https://feeds.fig.systems
Reeder Account Type: [FreshRSS / Self-hosted / Other]
API Password Generated: [Yes / No]
Using API Password (not web password): [Yes / No]
curl test result:
[paste output of test script]
Recent nginx logs:
[paste last 5 lines from access.log during attempt]
Most Common Solution: You need to generate a NEW API password in the web interface and use THAT specific password in Reeder, not your web login password.