Ferdium Server
Choose your server option: Community server or self-host your own
Community Server
Quick and easy setup
- Free to use
- No setup required
- Sync across devices
- Maintained by the community
- Regular updates
Server URL:
https://api.ferdium.org
Perfect for individual users who want to get started quickly without any server management. Download Ferdium and connect to the community server, or read our FAQ for more information.
Self-Hosted Server
Complete control and privacy
- Complete data control
- Enhanced privacy
- Custom configurations
- Team/organization use
- No external dependencies
Recommended for: Organizations, privacy-conscious users, and teams.
Host your own server for maximum control, privacy, and customization options. Need help? Check our FAQ or contact support.
Self-Hosting Guide
Prerequisites
- Server with Node.js 16+ installed
- Docker and Docker Compose (recommended)
- Domain name (optional but recommended)
- SSL certificate (Let's Encrypt recommended)
Option 1: Docker Deployment (Recommended)
The easiest way to deploy Ferdium server is using Docker:
# Clone the repository
git clone https://github.com/ferdium/ferdium-server.git
cd ferdium-server
# Copy environment file
cp .env.example .env
# Edit .env with your configuration
nano .env
# Start the server
docker-compose up -d
Option 2: Manual Installation
For manual installation:
- Clone the Ferdium server repository
- Install dependencies:
npm install - Configure environment variables
- Set up the database (PostgreSQL or SQLite)
- Run migrations:
npm run migrate - Start the server:
npm start
Configuration
Key environment variables to configure:
# Database
DATABASE_URL=postgresql://user:password@localhost/ferdium
# Server
PORT=3000
HOST=0.0.0.0
# Security
JWT_SECRET=your-secret-key
ENCRYPTION_KEY=your-encryption-key
# Email (optional)
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your-email@example.com
SMTP_PASSWORD=your-password
Connecting to Your Server
Once your server is running:
- Download and install Ferdium if you haven't already
- Open Ferdium application
- Go to Settings → Server
- Enter your server URL (e.g.,
https://your-domain.com) - Save and restart Ferdium
- Create an account or login to your server
For troubleshooting, see our FAQ or contact support.
Privacy & Security
Your data stays on your server. No third-party access, no data collection, complete privacy.
Customization
Customize server settings, add features, modify behavior to match your organization's needs.
Team Management
Perfect for teams and organizations. Manage users, workspaces, and access controls.
Advanced Server Configuration
Database Configuration
Ferdium server supports both PostgreSQL and SQLite databases. Choose based on your needs:
SQLite (Development)
- ✓ Easy setup, no separate server needed
- ✓ Perfect for small deployments
- ✓ Single file database
- ✗ Limited concurrent connections
PostgreSQL (Production)
- ✓ Better performance and scalability
- ✓ Multiple concurrent connections
- ✓ Advanced features and reliability
- ✗ Requires separate database server
Email Configuration
Configure email settings for password resets and notifications:
# SMTP Configuration
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASSWORD=your-app-password
SMTP_SECURE=false
SMTP_FROM=noreply@yourdomain.com
Note: For Gmail, you'll need to use an App Password instead of your regular password. Enable 2FA and generate an app password in your Google Account settings.
SSL/HTTPS Setup
For production deployments, SSL/HTTPS is essential for security:
Using Let's Encrypt (Recommended):
- Install Certbot:
sudo apt install certbot - Obtain certificate:
sudo certbot certonly --standalone -d yourdomain.com - Configure reverse proxy (Nginx/Apache) to use certificates
- Set up auto-renewal for certificates
Reverse Proxy Setup (Nginx)
Example Nginx configuration for Ferdium server:
server {
listen 80;
server_name yourdomain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Security Best Practices
Server Security
- Use HTTPS: Always use SSL/TLS certificates for production
- Strong Passwords: Use complex passwords for database and admin accounts
- Firewall Rules: Restrict access to necessary ports only
- Regular Updates: Keep server and dependencies updated
- Backup Strategy: Regular automated backups of database
Application Security
- Environment Variables: Never commit secrets to version control
- JWT Secrets: Use strong, randomly generated JWT secrets
- Rate Limiting: Implement rate limiting for API endpoints
- Input Validation: Validate and sanitize all user inputs
- Access Control: Implement proper authentication and authorization
Monitoring & Maintenance
Logging
Ferdium server provides comprehensive logging. Configure log levels and destinations:
# Logging Configuration
LOG_LEVEL=info # debug, info, warn, error
LOG_FILE=/var/log/ferdium/server.log
LOG_MAX_SIZE=10m
LOG_MAX_FILES=5
Health Checks
Monitor server health with built-in endpoints:
GET /health- Basic health checkGET /api/v1/status- Detailed status information- Set up monitoring with tools like Prometheus, Grafana, or simple cron jobs
Backup Strategy
Regular backups are essential for data protection:
- Daily automated database backups
- Store backups in secure, off-site location
- Test backup restoration regularly
- Maintain multiple backup versions