Skip to content
Branch: master
Find file Copy path
Find file Copy path
1 contributor

Users who have contributed to this file

165 lines (116 sloc) 4.66 KB

Installing Dnote Server

This guide documents the steps for installing the Dnote server on your own machine. If you prefer Docker, please see the Docker guide.


Dnote server comes as a single binary file that you can simply download and run. It uses Postgres as the database.


  1. Install Postgres 11+.
  2. Create a dnote database by running createdb dnote
  3. Download the official Dnote server release from the release page.
  4. Extract the archive and move the dnote-server executable to /usr/local/bin.
tar -xzf dnote-server-$version-$os.tar.gz
mv ./dnote-server /usr/local/bin
  1. Run Dnote
DBHost=localhost \
DBPort=5432 \
DBName=dnote \
DBUser=$user \
DBPassword=$password \
WebURL=$webURL \
SmtpHost=$SmtpHost \
SmtpPort=$SmtpPort \
SmtpUsername=$SmtpUsername \
SmtpPassword=$SmtpPassword \
  dnote-server start

Replace $user, $password with the credentials of the Postgres user that owns the dnote database.

Replace $webURL with the full URL to your server, without a trailing slash (e.g. https://your.server).

Replace $SmtpHost, SmtpPort, $SmtpUsername, $SmtpPassword with actual values, if you would like to receive spaced repetition through email.

By default, dnote server will run on the port 3000.


By now, Dnote is fully functional in your machine. The API, frontend app, and the background tasks are all in the single binary. Let's take a few more steps to configure Dnote.

Configure Nginx

To make it accessible from the Internet, you need to configure Nginx.

  1. Install nginx.
  2. Create a new file in /etc/nginx/sites-enabled/dnote with the following contents:
server {

	location / {
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $remote_addr;
		proxy_set_header Host $host;
  1. Replace with the URL for your server.
  2. Reload the nginx configuration by running the following:
sudo service nginx reload

Now you can access the Dnote frontend application on /, and the API on /api.

Configure TLS by using LetsEncrypt

It is recommended to use HTTPS. Obtain a certificate using LetsEncrypt and configure TLS in Nginx.

In the future versions of the Dnote Server, HTTPS will be required at all times.

Run Dnote As a Daemon

We can use systemd to run Dnote in the background as a Daemon, and automatically start it on system reboot.

  1. Create a new file at /etc/systemd/system/dnote.service with the following content:
Description=Starts the dnote server

ExecStart=/usr/local/bin/dnote-server start


Replace $user, $WebURL, $DBUser, and $DBPassword with the actual values.

Optionally, if you would like to send spaced repetitions throught email, populate SmtpHost, SmtpPort, SmtpUsername, and SmtpPassword.

  1. Reload the change by running sudo systemctl daemon-reload.
  2. Enable the Daemon by running sudo systemctl enable dnote.`
  3. Start the Daemon by running sudo systemctl start dnote

Enable Pro version

After signing up with an account, enable the pro version to access all features.

Log into the dnote Postgres database and execute the following query:

UPDATE users SET cloud = true FROM accounts WHERE accounts.user_id = AND = '$yourEmail';

Replace $yourEmail with the email you used to create the account.

Configure clients

Let's configure Dnote clients to connect to the self-hosted web API endpoint.


We need to modify the configuration file for the CLI. It should have been generated at ~/.dnote/dnoterc upon running the CLI for the first time.

The following is an example configuration:

editor: nvim

Simply change the value for apiEndpoint to a full URL to the self-hosted instance, followed by '/api', and save the configuration file.


editor: nvim

Browser extension

Navigate into the 'Settings' tab and set the values for 'API URL', and 'Web URL'.

You can’t perform that action at this time.