Self hosted server help


I've been trying to setup the joplin server on my aws instance. I'm using the docker-compose file provided in the repository. I have it setup behind nginx as well.

I am able to use the web UI, I created my user and am able to login as myself there. The problem comes when I'm adding it as the synchronization target in the application. I get this error when I test the synchronization configuration.

POST api/files/root/children: Unknown error (400): {"error":"Not allowed: POST "} (Code 400)

I am using the desktop app, version 1.7.11 on MacOS.

Let me know if you need any more details! I'm guessing it's something simple I missed.

Here's my docker-compose for reference:

version: '3'

        image: postgres:13.1
            - ./data/postgres:/var/lib/postgresql/data
            - "5432:5432"
        restart: unless-stopped
        image: joplin/server:latest
            - db
            - "22300:22300"
        restart: unless-stopped
            - APP_PORT=22300
            - APP_BASE_URL=${APP_BASE_URL}
            - DB_CLIENT=pg
            - POSTGRES_PORT=5432
            - POSTGRES_HOST=db

And also for reference here's my nginx config:

server {
    server_name joplin.xxxxx.xxxxx;

    location / {
        proxy_pass http://localhost:22300;

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;
    proxy_set_header X-Forwarded-Host $host;
    client_max_body_size 400M;

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/joplin.xxxxxxx.xxxxx/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/joplin.xxxxxx.xxxxx/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    access_log /var/log/nginx/joplin.xxxxxxx.xxxxxx.access.log;
    error_log /var/log/nginx/joplin.xxxxxxx.xxxxxx.error.log;

server {
    if ($host = joplin.xxxxx.xxxxx) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    server_name joplin.xxxxx.xxxxx;

    listen 80;
    listen [::]:80;
    return 404; # managed by Certbot

@Basketkase welcome to the forum.

I believe that is your problem. Try a current release. :latest is a v2 server and so requires a v2.x client.

Also latest is not actually being fully used for the server image yet as it is still beta software. The tag is therefore referencing an old beta version. If you want to try the latest server version you will need to use joplin/server:2.2.7-beta

Thanks @dpoulton!

Yes that was it! That should have been my first debug step, it just didn't occur to me!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.