ferdium-server

ferdium-server

Docker app from xthursdayx's Repository

Overview

Server for Ferdium. Ferdium is a desktop app that helps you organize how you use your favourite apps by combining them into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdium gives you many additional features and doesn't restrict its usage! Furthermore, Ferdium is compatible with your existing Franz account, so you can continue right where you left off. Please find out more about Ferdium and its features on ferdium.org.

Server

Docker Build and Publish

Contributors

👨🏾‍🍳 Server for Ferdium that you can re-use to run your own

Why use a custom server?

Find answers to other frequently asked questions on ferdium.org/faq.

Toggle answer

A custom server allows you to manage the data of all registered users yourself and add your own recipes to the repository. If you are not interested in doing this you can use our official instance of the server at api.ferdium.org.

Features

  • User registration and login
  • Service creation, download, listing and removing
  • Workspace support
  • Functioning service store
  • User dashboard
  • Export/import data to other Ferdium-servers
  • Password recovery
  • Recipe update

Deploying the App

Setup with Docker The easiest way to set up Ferdium-server on your server is with Docker.

The Docker image can be run as is, with the default SQLite database or you can modify your ENV variables to use an external database (e.g. MySQL, MariaDB, Postgres, etc). After setting up the docker container we recommend you set up an NGINX reverse proxy to access Ferdium-server outside of your home network and protect it with an SSL certificate.

Warning, please note that the use of the previous config.txt is now deprecated and a number of environment variables have changed, specifically the default database name and location, the internal container port, and an additional DATA_DIR variable has been added. Make sure to pass the correct environment variables to your container at runtime. If you are an existing Ferdium-server user, please see the Ferdium docker documentation for more information about migrating to the new image.

  1. Pull the Docker image

    docker pull ferdium/ferdium-server:latest
    
  2. Create a new Docker container with your desired configuration Existing users please seee the warning above.

        docker create \
        --name=ferdium-server \
        -e NODE_ENV=development \
        -e APP_URL=<ferdium-server-url> \
        -e DB_CONNECTION=<database> \
        -e DB_HOST=<yourdbhost> \
        -e DB_PORT=<yourdbport> \
        -e DB_USER=<yourdbuser> \
        -e DB_PASSWORD=<yourdbpass> \
        -e DB_DATABASE=<yourdbdatabase> \
        -e DB_SSL=false \
        -e MAIL_CONNECTION=smtp \
        -e SMTP_HOST=<smtpmailserver> \
        -e SMTP_PORT=<smtpport> \
        -e MAIL_SSL=true/false \
        -e MAIL_USERNAME=<yourmailusername> \
        -e MAIL_PASSWORD=<yourmailpassword> \
        -e MAIL_SENDER=<sendemailaddress> \
        -e IS_CREATION_ENABLED=true \
        -e IS_DASHBOARD_ENABLED=true \
        -e IS_REGISTRATION_ENABLED=true \
        -e CONNECT_WITH_FRANZ=true \
      -e DATA_DIR=data \
        -p <port>:3333 \
        -v <path to data>:/data \
        -v <path to recipes>:/app/recipes \
        --restart unless-stopped \
        ferdium/ferdium-server:latest
    

    Alternatively, you can also use docker-compose v2 schema. An example can be found in the docker folder.

  3. Optionally, you can set up Nginx as a reverse proxy.

For more information on configuring the Docker image, please read the Ferdium docker documentation.

Manual setup
  1. Clone repository with submodule

  2. Install the AdonisJS CLI

  3. Copy .env.example to .env and edit the configuration to your needs

  4. Have env DB_SSL=true only if your database is postgres and it is hosted online on platforms like GCP, AWS, etc

  5. Run npm install to install local dependencies

  6. Run the database migrations with

    node ace migration:run
    
  7. Start the server with

    npm start
    
Configuration

Ferdium-server's configuration is saved inside an .env file. Besides AdonisJS's settings, Ferdium-server has the following custom settings:

  • IS_CREATION_ENABLED (true or false, default: true): Whether to enable the creation of custom recipes
  • IS_REGISTRATION_ENABLED (true or false, default: true): Whether to enable the creation of new user accounts
  • IS_DASHBOARD_ENABLED (true or false, default: true): Whether to enable the user dashboard
  • CONNECT_WITH_FRANZ (true or false, default: true): Whether to enable connections to the Franz server. By enabling this option, Ferdium-server can:
    • Show the full Franz recipe library instead of only custom recipes
    • Import Franz accounts
  • DB_SQLITE_JOURNAL_MODE (DELETE, TRUNCATE, PERSIST, MEMORY, WAL, or OFF, default: WAL): SQLite journal mode. WAL improves concurrency for the default single-file deployment.
  • DB_SQLITE_SYNCHRONOUS (OFF, NORMAL, FULL, or EXTRA, default: FULL): SQLite synchronous mode. FULL is the safer default for production durability. NORMAL reduces write latency but can lose the last committed transactions on sudden power loss.
  • DB_BUSY_TIMEOUT (milliseconds, default: 5000): How long SQLite should wait for a locked database before failing a query.
Importing your Franz/Ferdi account

Ferdium-server allows you to import your full Franz/Ferdi account, including all its settings.

To import your Franz/Ferdi account, open http://[YOUR FERDIUM-SERVER]/import in your browser and login using your Franz/Ferdi account details. Ferdium-server will create a new user with the same credentials and copy your Franz/Ferdi settings, services and workspaces.

Transferring user data

Please refer to https://github.com/getferdi/ferdi/wiki/Transferring-data-between-servers

Creating and using custom recipes Ferdium-server allows to extends the Franz/Ferdi recipe catalogue with custom Ferdium recipes.

For documentation on how to create a recipe, please visit the official guide.

To add your recipe to Ferdium-server, open http://[YOUR FERDIUM-SERVER]/new in your browser. You can now define the following settings:

  • Author: Author who created the recipe
  • Name: Name for your new service. Can contain spaces and unicode characters
  • Service ID: Unique ID for this recipe. Does not contain spaces or special characters (e.g. google-drive)
  • Link to SVG image: Direct link to a 1024x1024 SVG image that is used as a logo inside the store. Please use jsDelivr when using a file uploaded to GitHub as raw.githubusercontent files won't load
  • Recipe files: Recipe files that you created using the recipe creation guide. Please do not package your files beforehand - upload the raw files (you can drag and drop multiple files). Ferdium-server will automatically package and store the recipe in the right format. Please also do not drag and drop or select the whole folder, select the individual files.
Listing custom recipes

Inside Ferdium, searching for ferdium:custom will list all of your custom recipes.

Contributing

Please read the contributing guidelines to setup your development machine and proceed.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

HuggableSquare k0staa cromefire Omkaragrawal nathanaelhoun ericreeves SpecialAro
mydarkstar santhosh-chinnasamy vraravam dqos Gibby palepinkdot xthursdayx
vantezzen reggermont lnhrdt fabolhak mazzz1y ndpm13

This project follows the all-contributors specification. Contributions of any kind welcome!

Install ferdium-server on Unraid in a few clicks.

Find ferdium-server in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for ferdium-server Review the template variables and paths Click Install

Download Statistics

261,531
Total Downloads
14,125
This Month
9,475
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
ferdium/ferdium-server:latest
Last Updated2026-03-28
First Seen2022-08-21

Runtime arguments

Web UI
http://[IP]:[PORT:3333]/
Network
bridge
Shell
sh
Privileged
false
Extra Params
--restart unless-stopped

Template configuration

NODE_ENVVariable
Default
development
Value
development
APP_URLVariable
DB_CONNECTIONVariable
Default
sqlite
Value
sqlite
DB_HOSTVariable
Default
127.0.0.1
Value
127.0.0.1
DB_PORTVariable
Default
3306
Value
3306
DB_USERVariable
Default
root
Value
root
DB_PASSWORDVariable
Default
password
Value
password
DB_DATABASEVariable
Default
ferdium
Value
ferdium
DB_SSLVariable
Default
false
Value
false
MAIL_CONNECTIONVariable
Value
smtp
SMTP_HOSTVariable
Default
127.0.0.1
Value
127.0.0.1
SMTP_PORTVariable
Default
2525
Value
2525
MAIL_SSLVariable
Default
false
Value
false
MAIL_USERNAMEVariable
Default
username
Value
username
MAIL_PASSWORDVariable
Default
password
Value
password
MAIL_SENDERVariable
Default
noreply@getferdium.org
Value
noreply@ferdium.org
IS_CREATION_ENABLEDVariable
Default
true
Value
true
IS_DASHBOARD_ENABLEDVariable
Default
true
Value
true
IS_REGISTRATION_ENABLEDVariable
Default
true
Value
true
CONNECT_WITH_FRANZVariable
Default
true
Value
true
DATA_DIRVariable
Default
/data
Value
/data
/dataPathrw
Default
/mnt/cache/appdata/ferdium-server/data
Value
/mnt/cache/appdata/ferdium-server/data
/app/recipesPathrw
Default
/mnt/cache/appdata/ferdium-server/recipes
Value
/mnt/cache/appdata/ferdium-server/recipes
PortPorttcp
Target
3333
Default
3333
Value
3333