From 11e6f55212e92e783186900a092c52c79b9020fe Mon Sep 17 00:00:00 2001 From: lonode <32384862+lonode@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:57:53 +0200 Subject: [PATCH] [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. Signed-off-by: lonode <32384862+lonode@users.noreply.github.com> * Typo Co-authored-by: Simon L. Signed-off-by: lonode <32384862+lonode@users.noreply.github.com> * Freeze postgres Co-authored-by: Simon L. Signed-off-by: lonode <32384862+lonode@users.noreply.github.com> * Add secret for Joplin DB Co-authored-by: Simon L. Signed-off-by: lonode <32384862+lonode@users.noreply.github.com> * Freeze PGDATA location Co-authored-by: Simon L. Signed-off-by: lonode <32384862+lonode@users.noreply.github.com> * Fix port publishing Co-authored-by: Simon L. 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. Signed-off-by: lonode <32384862+lonode@users.noreply.github.com> * Update community-containers/joplin-server/joplin-server.json Co-authored-by: Simon L. 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. --------- Signed-off-by: lonode <32384862+lonode@users.noreply.github.com> Signed-off-by: Simon L. Co-authored-by: Simon L. --- community-containers/caddy/readme.md | 3 + .../joplin-server/joplin-server.json | 60 +++++++++++++++++++ community-containers/joplin-server/readme.md | 26 ++++++++ 3 files changed, 89 insertions(+) create mode 100644 community-containers/joplin-server/joplin-server.json create mode 100644 community-containers/joplin-server/readme.md diff --git a/community-containers/caddy/readme.md b/community-containers/caddy/readme.md index cd8563a0..ef636df1 100644 --- a/community-containers/caddy/readme.md +++ b/community-containers/caddy/readme.md @@ -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 diff --git a/community-containers/joplin-server/joplin-server.json b/community-containers/joplin-server/joplin-server.json new file mode 100644 index 00000000..d33f306c --- /dev/null +++ b/community-containers/joplin-server/joplin-server.json @@ -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" + ] + } + ] +} \ No newline at end of file diff --git a/community-containers/joplin-server/readme.md b/community-containers/joplin-server/readme.md new file mode 100644 index 00000000..99a078a2 --- /dev/null +++ b/community-containers/joplin-server/readme.md @@ -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 +