Troubleshooting
Common issues and solutions for BFFless.
Installation Issues
Docker Not Found
# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
# Verify
docker --version
docker compose version
Port Already in Use
# Check what's using the port
sudo lsof -i :80
sudo lsof -i :443
sudo lsof -i :3000
# Stop conflicting services
sudo systemctl stop nginx apache2
Permission Denied
# Add user to docker group
sudo usermod -aG docker $USER
# Log out and back in, or run
newgrp docker
SSL/HTTPS Issues
Certificate Not Found
# Check if certificates exist
ls -la ssl/
# Ensure files are named correctly
# Should have: fullchain.pem and privkey.pem
Certificate Expired
# Force renewal
certbot renew --force-renewal
# Copy new certificates
cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem ssl/
cp /etc/letsencrypt/live/yourdomain.com/privkey.pem ssl/
# Restart nginx
docker compose restart nginx
DNS Not Propagated
Wait 5-30 minutes after updating DNS records. Verify with:
dig yourdomain.com +short
nslookup yourdomain.com
Authentication Issues
401 "try refresh token" Error
This means cookies aren't being sent. Common causes:
- HTTP instead of HTTPS: Set
COOKIE_SECURE=falsefor HTTP testing - Wrong domain: Ensure
API_DOMAINmatches your URL exactly - Third-party cookies blocked: Use same domain for frontend and API
# Fix in .env
COOKIE_SECURE=false
API_DOMAIN=http://localhost
# Restart
docker compose restart backend
Can't Login After Setup
# Check SuperTokens is running
docker compose logs supertokens
# Restart auth service
docker compose restart supertokens backend
Session Lost on Page Refresh
Check that FRONTEND_URL and API_DOMAIN match your actual domain.
Database Issues
Connection Refused
# Check if database is running
docker compose ps postgres
# Check database logs
docker compose logs postgres
# Verify database is ready
docker compose exec postgres pg_isready -U postgres
Migration Failed
# Run migrations manually
docker compose exec backend pnpm db:migrate
# Check migration status
docker compose exec backend pnpm db:check
Reset Database
# Warning: This deletes all data!
docker compose down
docker volume rm bffless_postgres_data
docker compose up -d
Container Issues
Container Won't Start
# View logs
docker compose logs <service-name>
# Common services: backend, frontend, nginx, postgres, minio
# Rebuild container
docker compose up -d --build <service-name>
Out of Memory (1GB RAM)
Stop containers before building:
docker compose down
docker compose -f docker-compose.build.yml build
docker compose up -d
Container Keeps Restarting
# Check logs for errors
docker compose logs --tail=50 <service-name>
# Check health status
docker compose ps
# Inspect container
docker inspect <container-id>
Network Issues
Can't Connect to Application
# Check firewall
ufw status
# Ensure ports are open
ufw allow 80/tcp
ufw allow 443/tcp
# Check nginx is running
docker compose logs nginx
API Returns 502 Bad Gateway
Backend is not responding:
# Check backend status
docker compose logs backend
# Restart backend
docker compose restart backend
CORS Errors
Verify API_DOMAIN and FRONTEND_URL in .env match your actual URLs.
Storage Issues
MinIO Not Accessible
# Check MinIO status
docker compose logs minio
# Verify credentials in .env match
# MINIO_ROOT_USER and MINIO_ACCESS_KEY should match
# MINIO_ROOT_PASSWORD and MINIO_SECRET_KEY should match
Upload Failed
# Check storage configuration
docker compose exec backend pnpm db:studio
# Check MinIO bucket exists
docker compose exec minio mc ls local/assets
Storage Credentials Invalid
If you've changed ENCRYPTION_KEY after initial setup:
# Storage credentials are encrypted with ENCRYPTION_KEY
# Changing it breaks existing configurations
# You'll need to reconfigure storage in the setup wizard
Build Issues
TypeScript Errors
# Check types
pnpm --filter frontend exec tsc --noEmit
pnpm --filter backend exec tsc --noEmit
Dependencies Not Found
# Clean install
rm -rf node_modules apps/*/node_modules
pnpm install
Docker Build Failed
# Clean build
docker compose build --no-cache
# Check disk space
df -h
# Prune old images
docker system prune -a
Reset Everything
Soft Reset (Keep Data)
docker compose restart
Reset Database Only
docker compose exec postgres psql -U postgres -d assethost -c "TRUNCATE users, assets, api_keys CASCADE;"
docker compose restart backend
Full Reset (Delete All Data)
docker compose down -v
docker compose up -d
Common Error Messages
| Error | Cause | Solution |
|---|---|---|
ECONNREFUSED | Service not running | Check docker compose ps |
401 Unauthorized | Invalid credentials | Check API key or session |
403 Forbidden | No permission | Check user role and project access |
404 Not Found | Resource missing | Verify path and IDs |
413 Payload Too Large | File too big | Increase nginx client_max_body_size |
502 Bad Gateway | Backend down | Restart backend container |
504 Gateway Timeout | Request too slow | Increase timeout settings |
Getting Help
If none of these solutions work:
- Check container logs:
docker compose logs - Search existing issues on GitHub
- Open a new issue with:
- Error message
- Relevant logs
- Environment details (OS, Docker version)
- Steps to reproduce
Related Documentation
- Local Development - Development setup
- Deployment Overview - Production deployment
- Environment Variables - Configuration options
- Security - Security settings