From aa8fd6dbd1c66d34bc6cd73835e3af0d0129fd87 Mon Sep 17 00:00:00 2001 From: perf3ct Date: Thu, 22 May 2025 15:54:10 -0700 Subject: [PATCH] feat(docker): add to the rootless docker docs --- .../Using Docker.html | 18 +++--- docs/User Guide/!!!meta.json | 59 ++++++++----------- .../1. Installing the server/Using Docker.md | 13 ++-- 3 files changed, 45 insertions(+), 45 deletions(-) diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.html index a44d1454e..60e5d049e 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.html @@ -78,12 +78,17 @@ docker inspect [container_name] you may need to add a TZ environment variable with the TZ identifier of your local timezone.

Rootless Docker Image

+

If you would prefer to run Trilium without having to run the Docker container as root, you can use either of the provided Debian (default) and Alpine-based images with the rootless tag. 

If you're unsure, stick to the “rootful” Docker image referenced above.

-

Below are some commands to pull the rootless images:

# For Debian-based image
+

Below are some commands to pull the rootless images:

# For Debian-based image
 docker pull triliumnext/notes:rootless
 
 # For Alpine-based image
@@ -111,14 +116,14 @@ TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) docker-compose -f docker-compose.rootl
 # Specify a custom data directory
 TRILIUM_DATA_DIR=/path/to/your/data TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) docker-compose -f docker-compose.rootless.yml up -d
 
-

Using Docker CLI

# Build the image
+

Using Docker CLI

# Build the image
 docker build -t triliumnext/notes:rootless -f apps/server/Dockerfile.rootless .
 
 # Run with default UID/GID (1000:1000)
-docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless
+docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/trilium/trilium-data triliumnext/notes:rootless
 
 # Run with custom UID/GID
-docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless
+docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/trilium/trilium-data triliumnext/notes:rootless
 

Environment Variables

    @@ -136,7 +141,7 @@ docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium- using
  • You're setting both TRILIUM_UID and TRILIUM_GID to match the owner of the host directory
  • -
    # For example, if your data directory is owned by UID 1001 and GID 1001:
    +
    # For example, if your data directory is owned by UID 1001 and GID 1001:
     TRILIUM_UID=1001 TRILIUM_GID=1001 docker-compose -f docker-compose.rootless.yml up -d
     

    Considerations

    @@ -182,5 +187,4 @@ docker build --build-arg USER=myuser --build-arg UID=1001 --build-arg GID=1001 \
  • USER: Username for the non-root user (default: trilium)
  • UID: User ID for the non-root user (default: 1000)
  • GID: Group ID for the non-root user (default: 1000)
  • -
-

 

\ No newline at end of file + \ No newline at end of file diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json index 3acbe598c..f3594bb61 100644 --- a/docs/User Guide/!!!meta.json +++ b/docs/User Guide/!!!meta.json @@ -8521,191 +8521,184 @@ { "type": "relation", "name": "internalLink", - "value": "_help_YKWqdJhzi2VY", + "value": "OFXdgB2nNk1F", "isInheritable": false, "position": 50 }, { "type": "relation", "name": "internalLink", - "value": "OFXdgB2nNk1F", + "value": "BlN9DFI679QC", "isInheritable": false, "position": 60 }, { "type": "relation", "name": "internalLink", - "value": "BlN9DFI679QC", + "value": "vZWERwf8U3nx", "isInheritable": false, "position": 70 }, { "type": "relation", "name": "internalLink", - "value": "vZWERwf8U3nx", + "value": "oPVyFC7WL2Lp", "isInheritable": false, "position": 80 }, { "type": "relation", "name": "internalLink", - "value": "oPVyFC7WL2Lp", + "value": "GPERMystNGTB", "isInheritable": false, "position": 90 }, { "type": "relation", "name": "internalLink", - "value": "GPERMystNGTB", + "value": "CoFPLs3dRlXc", "isInheritable": false, "position": 100 }, { "type": "relation", "name": "internalLink", - "value": "CoFPLs3dRlXc", + "value": "AlhDUqhENtH7", "isInheritable": false, "position": 110 }, { "type": "relation", "name": "internalLink", - "value": "AlhDUqhENtH7", + "value": "pKK96zzmvBGf", "isInheritable": false, "position": 120 }, { "type": "relation", "name": "internalLink", - "value": "pKK96zzmvBGf", + "value": "WFGzWeUK6arS", "isInheritable": false, "position": 130 }, { "type": "relation", "name": "internalLink", - "value": "WFGzWeUK6arS", + "value": "0ESUbbAxVnoK", "isInheritable": false, "position": 140 }, { "type": "relation", "name": "internalLink", - "value": "0ESUbbAxVnoK", + "value": "J5Ex1ZrMbyJ6", "isInheritable": false, "position": 150 }, { "type": "relation", "name": "internalLink", - "value": "J5Ex1ZrMbyJ6", + "value": "d3fAXQ2diepH", "isInheritable": false, "position": 160 }, { "type": "relation", "name": "internalLink", - "value": "d3fAXQ2diepH", + "value": "MgibgPcfeuGz", "isInheritable": false, "position": 170 }, { "type": "relation", "name": "internalLink", - "value": "MgibgPcfeuGz", + "value": "m523cpzocqaD", "isInheritable": false, "position": 180 }, { "type": "relation", "name": "internalLink", - "value": "m523cpzocqaD", + "value": "9sRHySam5fXb", "isInheritable": false, "position": 190 }, { "type": "relation", "name": "internalLink", - "value": "9sRHySam5fXb", + "value": "u3YFHC9tQlpm", "isInheritable": false, "position": 200 }, { "type": "relation", "name": "internalLink", - "value": "u3YFHC9tQlpm", + "value": "R9pX4DGra2Vt", "isInheritable": false, "position": 210 }, { "type": "relation", "name": "internalLink", - "value": "R9pX4DGra2Vt", + "value": "iRwzGnHPzonm", "isInheritable": false, "position": 220 }, { "type": "relation", "name": "internalLink", - "value": "iRwzGnHPzonm", + "value": "BCkXAVs63Ttv", "isInheritable": false, "position": 230 }, { "type": "relation", "name": "internalLink", - "value": "BCkXAVs63Ttv", + "value": "47ZrP6FNuoG8", "isInheritable": false, "position": 240 }, { "type": "relation", "name": "internalLink", - "value": "47ZrP6FNuoG8", + "value": "KC1HB96bqqHX", "isInheritable": false, "position": 250 }, { "type": "relation", "name": "internalLink", - "value": "KC1HB96bqqHX", + "value": "BFvAtE74rbP6", "isInheritable": false, "position": 260 }, { "type": "relation", "name": "internalLink", - "value": "BFvAtE74rbP6", + "value": "bdUJEHsAPYQR", "isInheritable": false, "position": 270 }, { "type": "relation", "name": "internalLink", - "value": "bdUJEHsAPYQR", + "value": "AxshuNRegLAv", "isInheritable": false, "position": 280 }, { "type": "relation", "name": "internalLink", - "value": "AxshuNRegLAv", + "value": "81SGnPGMk7Xc", "isInheritable": false, "position": 290 }, - { - "type": "relation", - "name": "internalLink", - "value": "81SGnPGMk7Xc", - "isInheritable": false, - "position": 300 - }, { "type": "relation", "name": "internalLink", "value": "xWbu3jpNWapp", "isInheritable": false, - "position": 310 + "position": 300 }, { "type": "label", diff --git a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md index 5b4010e40..0f711f89e 100644 --- a/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md +++ b/docs/User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker.md @@ -121,13 +121,16 @@ If you are having timezone issues and you are not using docker-compose, you may ## Rootless Docker Image +> [!NOTE] +> Please keep in mind that the data directory is at `/home/trilium/trilium-data` instead of the typical `/home/node/trilium-data`. This is because a new user is created and used to run Trilium within the rootless containers. + If you would prefer to run Trilium without having to run the Docker container as `root`, you can use either of the provided Debian (default) and Alpine-based images with the `rootless` tag.  _**If you're unsure, stick to the “rootful” Docker image referenced above.**_ Below are some commands to pull the rootless images: -```sh +``` # For Debian-based image docker pull triliumnext/notes:rootless @@ -166,15 +169,15 @@ TRILIUM_DATA_DIR=/path/to/your/data TRILIUM_UID=$(id -u) TRILIUM_GID=$(id -g) do #### **Using Docker CLI** -```sh +``` # Build the image docker build -t triliumnext/notes:rootless -f apps/server/Dockerfile.rootless . # Run with default UID/GID (1000:1000) -docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless +docker run -d --name trilium -p 8080:8080 -v ~/trilium-data:/home/trilium/trilium-data triliumnext/notes:rootless # Run with custom UID/GID -docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/node/trilium-data triliumnext/notes:rootless +docker run -d --name trilium -p 8080:8080 --user $(id -u):$(id -g) -v ~/trilium-data:/home/trilium/trilium-data triliumnext/notes:rootless ``` @@ -191,7 +194,7 @@ If you encounter permission issues with the data volume, ensure that: 1. The host directory has appropriate permissions for the UID/GID you're using 2. You're setting both `TRILIUM_UID` and `TRILIUM_GID` to match the owner of the host directory -```sh +``` # For example, if your data directory is owned by UID 1001 and GID 1001: TRILIUM_UID=1001 TRILIUM_GID=1001 docker-compose -f docker-compose.rootless.yml up -d