# Joplin Server with docker-compose

**URL:** <https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104>\
**Category:** Support\
**Created:** [26 August 2025 18:53 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104 "2025-08-26T18:53:51Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![antiager](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@antiager](https://discourse.joplinapp.org/u/antiager)\
**Post date:** [26 August 2025 18:53 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/1 "2025-08-26T18:53:51Z")

</div>

### Operating system

Linux

### Joplin version

2.13.2

### What issue do you have?

Hello!  
I'am trying to install a joplin server on debian 13 with docker-compose.  
I am failing with the docker-compose.yml file.  
I tried to fill in useful paths and so on but in the end server does not work.  
I need more up to date infos regarding that stuff maybe an actual example.  
All the howtos I did find seem to be too old or are for people who are much more familiar with that than I am!  
Thank you for your help!

---

<div class="post-metadata">

**Author:** ![\_vg](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/_vg/32/27067_2.png) [@\_vg](https://discourse.joplinapp.org/u/_vg)\
**Post date:** [26 August 2025 19:30 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/2 "2025-08-26T19:30:24Z")

</div>

> [@antiager](#):
>
> I am failing with the docker-compose.yml file.

Could you share your latest docker-compose.yml file content maybe? Of course hide any sensitive info.

Here is mine for example. Sorry for the missing indentation. I am on MacOS and use a local postgre database outside of docker. 100.XX.1.1 is my Mac Tailscale IP.

`name: joplin-server`  
`services:`  
`joplin-server:`  
`container_name: joplin-server`  
`image: joplin/server:3.4.1`  
`restart: unless-stopped`  
`ports:`  
`- "22300:22300"`  
`environment:`  
`- APP_PORT=22300`  
`- APP_BASE_URL=http://100.XX.1.1:22300`  
`- DB_CLIENT=pg`  
`- POSTGRES_PASSWORD=XXXXX`  
`- POSTGRES_DATABASE=joplin`  
`- POSTGRES_USER=joplin`  
`- POSTGRES_PORT=5435`  
`- POSTGRES_HOST=127.0.0.1`

> server does not work.

Any specific error?

What happens when you open 100.XX.1.1:22300 in your browser? You should see this:

 ![image](https://canada1.discourse-cdn.com/flex028/uploads/cozic/original/3X/a/a/aab8f82d0f2d3b39e19c371d5240f6e59582f55d.png)

---

<div class="post-metadata">

**Author:** ![antiager](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@antiager](https://discourse.joplinapp.org/u/antiager)\
**Post date:** [27 August 2025 11:44 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/3 "2025-08-27T11:44:36Z")

</div>

First of all thank you!

I managed to get a server running using a how to which also looks a little bit older!

In that howto there is a point which says “check that your .env file is correct” I have no idea about that.

So I didn’t create it.

Anyway the server is running and I could log in with the default credentials.

Of course my first step is changing the admin credentials.

But it seems that doesn’t work anymore without email correctly set up.

But how do i work this!!!

I t seems it has to be set in the .env file but this is still a mytery to me.

Where in the world is a actual howto to get joplinserver working?

Sorry I am not familiar with docker nor with joplin!

Can you help me?

Thank you!

---

<div class="post-metadata">

**Author:** ![\_vg](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/_vg/32/27067_2.png) [@\_vg](https://discourse.joplinapp.org/u/_vg)\
**Post date:** [27 August 2025 13:06 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/4 "2025-08-27T13:06:44Z")

</div>

Official instructions: [https://hub.docker.com/r/joplin/server](https://hub.docker.com/r/joplin/server)

> Anyway the server is running and I could log in with the default credentials.

Ok good.

> Of course my first step is changing the admin credentials.

I am able to change a user password in admin \> users \> click on user \> fill new password

> Sorry I am not familiar with docker nor with joplin!

Running a Joplin Server is pretty advanced. I would recommend you postpone this task for now and first get familiar with Joplin. Use Joplin Cloud for now to sync, it is actually a Joplin Server managed for you.

---

<div class="post-metadata">

**Author:** ![antiager](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@antiager](https://discourse.joplinapp.org/u/antiager)\
**Post date:** [27 August 2025 13:16 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/5 "2025-08-27T13:16:46Z")

</div>

Thank you!

But what about the .env file and setting up email?

Just to make my question more clean.

I know how to setup mail Accounts.

But I don‘t know where to put in joplinserver with docker Compose?

In the mysterious .env file or in docker-compose.yml or elsewhere?

---

<div class="post-metadata">

**Author:** ![\_vg](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/_vg/32/27067_2.png) [@\_vg](https://discourse.joplinapp.org/u/_vg)\
**Post date:** [27 August 2025 13:25 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/6 "2025-08-27T13:25:47Z")

</div>

.env-sample / .env file is explained in the official instructions I gave you

why do you want to setup email? I never did

> But I don‘t know where to put in joplinserver with docker Compose?

I don't understand what you mean.

Have you prior experience with docker / docker-compose? Maybe follow a tutorial independently of joplin-server, then come back later to it.

Or just use Joplin Cloud for now? Why not? Make your life easy.

---

<div class="post-metadata">

**Author:** ![dpoulton](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/dpoulton/32/29723_2.png) [@dpoulton](https://discourse.joplinapp.org/u/dpoulton)\
**Post date:** [27 August 2025 16:04 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/7 "2025-08-27T16:04:55Z")

</div>

An " **.env**" file is essentially just the equivalent of an `environment` section in a **docker-compose.yml** file. Rather than stuff **everything** into the the docker-compose file you can put all the environment variables in a separate file called ".env" and just reference that from the **docker-compose.yml** file. When you read _“check that your .env file is correct”_ it is basically just telling you to ensure that your environment variables, wherever you put them, are correct.

I would suggest that as you are experimenting with this you initially put everything in the **docker-compose.yml** file.

As the email environment variables apply to the Joplin server app they go in the **environment** section that covers the Joplin server (that is assuming that your docker-compose file also sets up a postgres database which has its own environment variables).

The email environment variables are as below (edit the values as needed):

```plaintext
      - MAILER_ENABLED=1
      - MAILER_HOST=smtp.example.com
      - MAILER_PORT=465
      - MAILER_SECURITY=tls
      - MAILER_AUTH_USER=my_mail_account@example.com
      - MAILER_AUTH_PASSWORD=my_mail_account_password
      - MAILER_NOREPLY_NAME=JoplinServer
      - MAILER_NOREPLY_EMAIL=noreply@example.com

```

`MAILER_SECURITY` can be `tls`, `starttls` or `none`

Last time I had occasion to use it you did not need to have email working to change passwords or create accounts. If you currently want to see the emails, even though they cannot be sent yet, you can view them in the Admin section under "email".

---

<div class="post-metadata">

**Author:** ![antiager](https://avatars.discourse-cdn.com/v4/letter/a/f07891/32.png) [@antiager](https://discourse.joplinapp.org/u/antiager)\
**Post date:** [28 August 2025 07:37 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/8 "2025-08-28T07:37:57Z")

</div>

Thank you!!!

That clears up things for me!

.env and docker-compose.yml

both can be used for configuration of the server.

The initial username of the admin user (in the howto I was using) is “admin@localhost” a mailadress so I thought by mistake email configuration is necessary to use joplin.

After all getting a self hosted joplin server requires a little knowledge of docker.

The “official?” joplinserver with docker howto at github leaves many questions open.

A few more examples and more detailed instructions would help al lot.

One more big thank you to the people of this forum!

---

<div class="post-metadata">

**Author:** ![scgf](https://yyz2.discourse-cdn.com/flex028/user_avatar/discourse.joplinapp.org/scgf/32/24843_2.png) [@scgf](https://discourse.joplinapp.org/u/scgf)\
**Post date:** [2 September 2025 09:39 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/9 "2025-09-02T09:39:54Z")

</div>

I set up a Joplin server on my Synology NAS by following a tutorial on Marius Hosting. It might fill in a few details for you. Although the instruction refer to a NAS, docker is docker.

> **[How to Install Joplin on Your Synology NAS](https://mariushosting.com/how-to-install-joplin-on-your-synology-nas/)**
>
> Trustworthy expert guide to your Synology NAS.

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex028/uploads/cozic/original/3X/1/c/1c948e33314e232a0927789508474d8624f4270b.png) [@system](https://discourse.joplinapp.org/u/system)\
**Post date:** [2 October 2025 09:40 UTC](https://discourse.joplinapp.org/t/joplin-server-with-docker-compose/47104/10 "2025-10-02T09:40:42Z")

</div>

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