Joplin Server pre-release is now available

I'm contemplating having a Joplin Server set up along a Drupal instance for automatically migrating Joplin user accounts + contents in order to benefit from the existing ecosystem of Drupal modules for access rights management, Solr / Tika indexing, student group works, and eventually web publishing.

It seems very impractical because apparently the only table with content is files, and the column with the relevant data is in binary format... Worst case scenario, it would be possible to parse those contents in a preliminary step. But unless I'm missing something, the relationships between tags and notes seem absent.

  1. Is there a way to get some more details in the Joplin Server database ?
  2. Or would we have to use a client-side plugin to "enrich" the contents with additional metadata ?
  3. Or, more radically, could we sync the entire local sqlite file ?

Install Portainer, and make a Recreate to upgrade manually. If automatically, you need to set up Watchtower.

You don't have to install anything, nor do you have to run docker-compose down when upgrading containers.

# Pull new images
docker-compose pull

# run docker-compose up and remove all images that
# aren't currently defined in docker-compose.yml
docker-compose up -d --remove-orphans

# remove old containers
docker image prune
1 Like

Maybe I'm missing something, but as soon as the container is gone, the data is gone, since the docker files do not contain persistent storage directives (as I mentioned before in this topic).
Thus upgrading your containers will delete all your data.

IMO the docker-compose file in the Joplin repo should not be used for production environments. Unless you want to lose data.

2 Likes

Hi all. I'm used to using Volumes in my docker-compose files to expose files written by the container to disk (to allow for easy backups).

Other than the postgres DB, how would you define the Volumes for the app in docker-compose?

Thanks !

Afaik everything is in the DB, thus I don't think there's need for that. I haven't been able to run any tests with the server yet, but a few people in this thread certainly have. They should be able to tell you more.

Hi @sevent,
My understanding is that, to make data persistent for Joplin Server, you added this "volumes:" line to the docker-compose file :

[...]
    db:
        image: postgres:13.1
        ports:
            - "5432:5432"
        restart: unless-stopped
        volumes: ./postgres-data:/var/lib/postgresql/data
        environment:
            - APP_PORT=22300
[...]

Is that it ? My understanding is that it also allows to upgrade the PostgreSQL Docker Image (eg. from 13.1 to 13.2) without losing data. Is that it ?
Thanks,
Bruno
PS : sorry I don't have the answer to your specific question ! But I'm interested too in the future answer from the people who tested the server yet.

Yes, that is it. Mapping the postgres data directory to the host file system will ensure the data will not be lost after a restart.

In order to backup the data in postgres, I've also added a container which makes backups of the the postgres db, since you can't backup the postgres data files while the database is running.

An example of the docker-compose file which I'm currently using can be found here.
Only the domain name has been changed in this example.

2 Likes

Double Thank you @plamola, I didn’t know for the backup limits while running, your config will be very useful !

Its really awesome, but I might think that Joplin need to have an server. Like OneNote, and other note cloud based programms.

Joplin based server, not self-hosting, just an VPS server will be great.

If you think, you can't afford this option, make it an premium cost option with 2-6$ from user.

Joplin needed urgent server for herself.

Hello, I installed the server in docker to make a test. It synchronized ok. But I don´t understand if the share note or share notebook functionality is implemented ?

At the beginning I also read over it. :wink:

Fantastic work - I've been wanting to get away from webdav. I'm wondering if there is a planned update to the terminal application to sync with Joplin Server? I couldn't see the option in the documentation. Thanks!

It would be great if one could specify the admin user and password directly in the .env (or any more users, for that matter)

1 Like

When I export my database, the contents appear to be encoded somehow. The column appears to be something like \\x436861.... Is there a way to view this content in text format?

[edit] Looks like this is just stored as bytea. Using something like Convert Bytes to UTF8 - Online UTF8 Tools converts to text (after removing the leading \x).

A bit late to the party, but reading this thread now and very happy to see that there will be a paid option for those who prefer not to manage themselves.

Personally I prefer to manage it myself, but I also find that really good things come from open-source projects that offer a "We can host for you" revenue model. (See NabuKasa for Home Assistant)

Joplin has been fantastic for me. Thanks for all the work you do.

1 Like

Hello everyone. I decided to move from broken Evernote to amazing Joplin a few days ago. And just started Joplin server on my home server without testing other alternatives. All works right, but one thing.

I can sync with only default admin@localhost user. I changed admin@localhost password and can login wothout a problem. But if I create another user, I get errors:

on login:

Error: Invalid username or password
    at SessionModel.<anonymous> (/home/joplin/packages/server/src/models/SessionModel.ts:28:20)
    at Generator.next (<anonymous>)
    at fulfilled (/home/joplin/packages/server/dist/models/SessionModel.js:5:58)

on sync in Joplin app:

Error. Please check that URL, username, password, etc. are correct and that the sync target is accessible. The reported error was:
POST api/sessions: Unknown error (403): {"error":"Invalid username or password"} (Code 403)

I tried @kronan instructions, but it didn't help.

noob question: I try to run joplin server via the docker composer file but when I try to access the webpage I get:

| 2021-03-22 15:16:25: App: GET /joplin/login
app_1 | 2021-03-22 15:16:25: [error] App: 404: GET /joplin/login : Path not found: joplin/login
app_1 | 2021-03-22 15:16:25: App: GET /joplin/css/bulma.min.css
app_1 | 2021-03-22 15:16:25: App: GET /joplin/css/bulma-prefers-dark.min.css
app_1 | 2021-03-22 15:16:25: App: GET /joplin/css/main.css
app_1 | 2021-03-22 15:16:25: App: GET /joplin/css/fontawesome/css/all.min.css
app_1 | 2021-03-22 15:16:25: App: GET /joplin/js/main.js
app_1 | 2021-03-22 15:16:25: [error] App: 404: GET /joplin/css/bulma.min.css : Path not found: joplin/css/bulma.min.css
app_1 | 2021-03-22 15:16:25: [error] App: 404: GET /joplin/css/bulma-prefers-dark.min.css : Path not found: joplin/css/bulma-prefers-dark.min.css
app_1 | 2021-03-22 15:16:25: [error] App: 404: GET /joplin/css/main.css : Path not found: joplin/css/main.css
app_1 | 2021-03-22 15:16:25: [error] App: 404: GET /joplin/css/fontawesome/css/all.min.css : Path not found: joplin/css/fontawesome/css/all.min.css
app_1 | 2021-03-22 15:16:25: [error] App: 404: GET /joplin/js/main.js : Path not found: joplin/js/main.js

What do I have to install? I thought the docker image would contain everything?!

Ok, so it is really weird: I tried to reproduce your problem, so I added a new test user, typed in a password and - there you go - I got your exact errors...I fixed it by editing the mentioned user and giving him a new password (maybe even the old one would work). After that I was able to log in without problems. Maybe that one works out for you?

I don't really know, what's going on, how did you set up your Reverse-Proxy?
And how did you edit the compose file (in which format did you put your URL in there)?