[Community Containers] Adding joplin-server (#7983)

* added joplin-server

Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* update to container sidecar

added depends

Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Use latest

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Typo

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Freeze postgres

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Add secret for Joplin DB

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Freeze PGDATA location

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Fix port publishing

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* fix typo

Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* fix typo : swap user/db

Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Update community-containers/joplin-server/joplin-server.json

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Update community-containers/joplin-server/joplin-server.json

Co-authored-by: Simon L. <szaimen@e.mail.de>
Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* Update caddy docs to mention subdomain

Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>

* some adjustments to the readme

Signed-off-by: Simon L. <szaimen@e.mail.de>

---------

Signed-off-by: lonode <32384862+lonode@users.noreply.github.com>
Signed-off-by: Simon L. <szaimen@e.mail.de>
Co-authored-by: Simon L. <szaimen@e.mail.de>
This commit is contained in:
lonode
2026-06-16 15:57:53 +02:00
committed by GitHub
parent bb7d32a2f2
commit 11e6f55212
3 changed files with 89 additions and 0 deletions
+3
View File
@@ -9,6 +9,8 @@ It also covers [seerr](https://github.com/nextcloud/all-in-one/tree/main/communi
It also covers [nextcloud-exporter](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter) by listening on `metrics.$NC_DOMAIN`, if installed.
It also covers [LocalAI](https://github.com/nextcloud/all-in-one/tree/main/community-containers/local-ai) by listening on `ai.$NC_DOMAIN`, if installed.
It also covers [azuracast](https://github.com/nextcloud/all-in-one/tree/main/community-containers/azuracast) by listening on `radio.$NC_DOMAIN`, if installed.
It also covers [joplin-server](https://github.com/nextcloud/all-in-one/tree/main/community-containers/joplin-server) by listening on `joplin.$NC_DOMAIN`, if installed.
### Notes
- This container is incompatible with the [npmplus](https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus) community container. So make sure that you do not enable both at the same time!
@@ -25,6 +27,7 @@ It also covers [azuracast](https://github.com/nextcloud/all-in-one/tree/main/com
- If you want to use this with [nextcloud-exporter](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter), make sure that you point `metrics.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nextcloud-exporter.
- If you want to use this with [local AI](https://github.com/nextcloud/all-in-one/tree/main/community-containers/local-ai), make sure that you point `ai.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for local AI.
- If you want to use this with [azuracast](https://github.com/nextcloud/all-in-one/tree/main/community-containers/azuracast), make sure that you point `radio.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for azuracast.
- If you want to use this with [Joplin Server](https://github.com/nextcloud/all-in-one/tree/main/community-containers/joplin-server), make sure that you point `joplin.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for local AI.
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
- You can add your own Caddy configurations in the folder `nextcloud-aio-caddy/caddy-imports` in the files app of the default `admin` user. You need to create that folder manually. These will be imported on container startup.
- You can alternatively add your own Caddy configurations in `/data/caddy-imports/` inside the Caddy container (`sudo docker exec -it nextcloud-aio-caddy bash`). These will be imported on container startup. **Please note:** If you do not have CLI access to the server use the previous option or run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
@@ -0,0 +1,60 @@
{
"aio_services_v1": [
{
"container_name": "nextcloud-aio-joplin-server",
"image_tag": "latest",
"display_name": "Joplin Server",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/joplin-server",
"image": "joplin/server",
"depends_on": [
"nextcloud-aio-joplin-database"
],
"internal_port": "22300",
"ports": [
{
"ip_binding": "%APACHE_IP_BINDING%",
"port_number": "22300",
"protocol": "tcp"
}
],
"environment": [
"DB_CLIENT=pg",
"APP_BASE_URL=https://joplin.%NC_DOMAIN%",
"POSTGRES_PASSWORD=%JOPLIN_DB_PASSWORD%",
"POSTGRES_DATABASE=joplin",
"POSTGRES_USER=joplin",
"POSTGRES_PORT=5432",
"POSTGRES_HOST=nextcloud-aio-joplin-database"
],
"secrets": [
"JOPLIN_DB_PASSWORD"
]
},
{
"container_name": "nextcloud-aio-joplin-database",
"image_tag": "18",
"display_name": "Joplin Database (PostgreSQL)",
"image": "postgres",
"internal_port": "5432",
"environment": [
"POSTGRES_PASSWORD=%JOPLIN_DB_PASSWORD%",
"POSTGRES_DB=joplin",
"POSTGRES_USER=joplin",
"PGDATA=/var/lib/postgresql/data"
],
"secrets": [
"JOPLIN_DB_PASSWORD"
],
"volumes": [
{
"source": "nextcloud_aio_joplin_data",
"destination": "/var/lib/postgresql/data",
"writeable": true
}
],
"backup_volumes": [
"nextcloud_aio_joplin_data"
]
}
]
}
@@ -0,0 +1,26 @@
# Joplin Server
This container allow you to deploy a [Joplin Server](https://joplinapp.org/help/dev/spec/architecture#joplin-server). Deploy automatically a postgreSQL instance as a sidecar.
### Why
Joplin Server gives you faster and better sync (less sync error) than with WebDAV. Also automatic clean-up and ability to share your notes.
Also, deploying Joplin Server through nextcloud rather than beside it allow for automatic note backup by borg and that's wonderful.
### Notes
- Exposed Port 22300
- Default creds : admin@localhost / admin
- In order to access your Joplin outside the local network, you have to set up your own reverse proxy. You can use the [Caddy](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy) community container that will automatically configure `joplin.$NC_DOMAIN` to redirect to your Joplin Server.
- The postgreSQL is not exposed and is only used through the docker network.
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
https://hub.docker.com/r/joplin/server
### Maintainer
https://github.com/lonode