Release v6.1.0-ext-v3.5

yu-i-i
2026-02-03 02:59:52 +01:00
parent ac743be069
commit ef4328dc77
5 changed files with 175 additions and 34 deletions

@@ -5,3 +5,5 @@ the following variables has been added in Extended CE:
- `MAX_UPLOAD_SIZE`
* Specifies the maximum size of an uploaded project or file, in MB. The default value is 50 MB.
- `OVERLEAF_EMAIL_SMTP_PASS_FILE`
* Used to provide the email password from a file rather than directly via the environment variable `OVERLEAF_EMAIL_SMTP_PASS`. Useful when used with Docker Compose secrets.

@@ -10,11 +10,11 @@ services:
image: sharelatex/sharelatex:ext-ce
```
If you want to build a Docker image of the extended CE based on the upstream v6.0.0 release, first check out the tag corresponding to v6.0.0-ext-v3.3:
If you want to build a Docker image of the extended CE based on the upstream v6.1.0 release, first check out the tag corresponding to v6.1.0-ext-v3.5:
```
git checkout v6.0.0-ext-v3.3
git checkout v6.1.0-ext-v3.5
```
After building this image, switch to the latest state of the repository, rewiev the `server-ce/hotfix` directory, and build the patched images sequentially: v6.0.1-ext-v3.3, ..., v6.n.m-ext-v3.3.
After building this image, switch to the latest state of the repository, rewiev the `server-ce/hotfix` directory, and build the patched images sequentially: v6.1.1-ext-v3.5, ..., v6.n.m-ext-v3.5.
Notes for updating 5.5.x-ext images:
@@ -23,6 +23,6 @@ Notes for updating 5.5.x-ext images:
Alternatively, you can download a prebuilt image from Docker Hub:
```
docker pull overleafcep/sharelatex:6.0.1-ext-v3.3
docker pull overleafcep/sharelatex:6.1.1-ext-v3.5
```
Make sure to update the image name in `overleaf-toolkit/config/docker-compose.override.yml` accordingly.

@@ -1,10 +1,10 @@
Overleaf Extended CE comes with the option to run compiles in a secured sandbox environment for enterprise security. It does this by running every project in its own secured docker environment.
Overleaf Extended CE comes with the option to run compiles in a secured sandbox environment for enterprise security. It does this by running every project in its own secured Docker environment.
## Toolkit
To enable sandboxed compiles (also known as "Sibling containers"), set the following configuration options in `overleaf-toolkit/config/overleaf.rc`:
```
```bash
SERVER_PRO=true
SIBLING_CONTAINERS_ENABLED=true
```
@@ -23,54 +23,181 @@ In the following example, note the following:
```yaml
services:
sharelatex:
...
volumes:
- /data/overleaf_data:/var/lib/overleaf
- /var/run/docker.sock:/var/run/docker.sock
environment:
...
DOCKER_RUNNER: "true"
SANDBOXED_COMPILES: "true"
SANDBOXED_COMPILES_HOST_DIR: "/data/overleaf_data/data/compiles"
...
...
sharelatex:
...
volumes:
- /data/overleaf_data:/var/lib/overleaf
- /var/run/docker.sock:/var/run/docker.sock
environment:
...
DOCKER_RUNNER: "true"
SANDBOXED_COMPILES: "true"
SANDBOXED_COMPILES_HOST_DIR: "/data/overleaf_data/data/compiles"
...
...
```
## Changing the TexLive Image
## Changing the TeX Live Image
The following environment variables are used to specify which TeX Live images to use for sandboxed compiles:
- `ALL_TEX_LIVE_DOCKER_IMAGES` **(required)**
* A comma-separated list of TeX Live images to use. If the Overleaf Toolkit is used for deployment, these images will be downloaded or updated. To skip downloading, set `SIBLING_CONTAINERS_PULL=false` in `config/overleaf.rc`.
- A comma-separated list of TeX Live images to use. If the Overleaf Toolkit is used for deployment, these images will be downloaded or updated.
- To skip downloading, set `SIBLING_CONTAINERS_PULL=false` in `config/overleaf.rc`.
- `ALL_TEX_LIVE_DOCKER_IMAGE_NAMES`
* A comma-separated list of friendly names for the images. If omitted, the version name will be used (e.g., `latest-full`).
- A comma-separated list of friendly names for the images. If omitted, the version name will be used (for example, `latest-full`).
- `TEX_LIVE_DOCKER_IMAGE`
* The default TeX Live image used for compiling new projects. This image must be included in `ALL_TEX_LIVE_DOCKER_IMAGES`. If not set,
the first image in `ALL_TEX_LIVE_DOCKER_IMAGES` will be used as the default image.
- The default TeX Live image used for compiling new projects.
- This image **must** be included in `ALL_TEX_LIVE_DOCKER_IMAGES`.
- If not set, the first image in `ALL_TEX_LIVE_DOCKER_IMAGES` will be used as the default image.
Users can select the image for their project in the project menu.
Users can select the image for a project in the project menu.
Here is an example where the default TeX Live image is `latest-full` from Docker Hub, but the `TL2024-historic` image can be used for older projects:
```
Below is an example configuration where the default TeX Live image is `latest-full` from Docker Hub, but the `TL2024-historic` image can be used for older projects:
```bash
ALL_TEX_LIVE_DOCKER_IMAGES=texlive/texlive:latest-full, texlive/texlive:TL2024-historic
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=TeXLive 2025, TeXLive 2024
TEX_LIVE_DOCKER_IMAGE=texlive/texlive:latest-full
```
For additional details refer to
[Server Pro: Sandboxed Compiles](https://github.com/overleaf/overleaf/wiki/Server-Pro:-sandboxed-compiles).
## Defining the docker image repository
Starting with **v6.1.0-ext-v3.5**, an additional environment variable is supported:
- `TEX_LIVE_DOCKER_IMAGE_ROOT`
- Defines the docker image repository (namespace) from which TeX Live images are resolved.
When this variable is set, values specified in `ALL_TEX_LIVE_DOCKER_IMAGES` and `TEX_LIVE_DOCKER_IMAGE` are expected not to include a repository prefix.
The full Docker image reference is constructed internally as `<TEX_LIVE_DOCKER_IMAGE_ROOT>/<image>`.
Equivalent configuration to the above, using `TEX_LIVE_DOCKER_IMAGE_ROOT`:
```bash
TEX_LIVE_DOCKER_IMAGE_ROOT=texlive
ALL_TEX_LIVE_DOCKER_IMAGES=texlive:latest-full, texlive:TL2024-historic
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=TeXLive 2025, TeXLive 2024
TEX_LIVE_DOCKER_IMAGE=texlive:latest-full
```
The TeX Live image used for project compilation and for templates is stored in MongoDB.
When `TEX_LIVE_DOCKER_IMAGE_ROOT` is defined, MongoDB records are expected to store **only the image name and tag**, without the repository prefix, that is
`texlive:latest-full` instead of `texlive/texlive:latest-full`.
This allows administrators to change the Docker image repository (for example, to use alternative TeX Live images) without modifying existing projects or templates.
If an existing installation already stores full image names in MongoDB and `TEX_LIVE_DOCKER_IMAGE_ROOT` is enabled, the database must be migrated accordingly.
Migration can be performed with:
```bash
# Dry run (default): no real changes are applied
docker exec -i mongo mongosh --quiet < migrate-texlive-image-names.js
# Apply real changes
docker exec -i -e DRY_RUN=false mongo mongosh --quiet < migrate-texlive-image-names.js
```
By default, the script runs in dry-run mode.
Actual changes are applied only when `DRY_RUN=false` is explicitly set.
The `migrate-texlive-image-names.js` script can be as follows:
```javascript
(() => {
var dryRun = true
try {
if (typeof process !== 'undefined' && process.env.DRY_RUN !== undefined) {
dryRun = process.env.DRY_RUN === 'false' ? false : true
}
} catch (e) {
dryRun = true
}
const dbx = db.getSiblingDB('sharelatex')
function stripPath(name) {
if (!name || typeof name !== 'string') return ''
const parts = name.split('/')
return parts[parts.length - 1]
}
const collections = ['projects', 'templates']
for (const collName of collections) {
const coll = dbx.getCollection(collName)
const cursor = coll.find({ imageName: { $regex: '/' } })
print('\nProcessing collection: ' + collName)
let count = 0
cursor.forEach(doc => {
const oldName = doc.imageName || ''
const newName = stripPath(oldName)
if (oldName && newName && oldName !== newName) {
count++
if (dryRun) {
print('_id: ' + doc._id + ', old: ' + oldName + ', new: ' + newName)
} else {
coll.updateOne(
{ _id: doc._id },
{ $set: { imageName: newName } }
)
}
}
})
print(
'Total entries ' +
(dryRun ? 'to be changed' : 'changed') +
' in ' +
collName +
': ' +
count
)
}
print(
dryRun
? '\nDry-run complete. No changes made. Set DRY_RUN=false to apply updates.'
: '\nUpdate complete.'
)
})()
```
If **overleaf-toolkit** is used to pull and update TeX Live images (`SIBLING_CONTAINERS_PULL=true`), an additional change is required when `TEX_LIVE_DOCKER_IMAGE_ROOT` is set.
The file `overleaf-toolkit/bin/up` must be updated as follows:
```diff
--- a/bin/up
+++ b/bin/up
@@ -62,7 +62,9 @@ function pull_sandboxed_compiles() {
exit 1
fi
echo "Pulling TeX Live images..."
+ local image_root=$(read_variable "TEX_LIVE_DOCKER_IMAGE_ROOT")
for image in ${images//,/ }; do
+ [[ -n "$image_root" ]] && image="$image_root/$image"
echo " - $image download started (may take some time)"
docker pull $image
echo " - $image download finished"
```
## Enabling external commands during compilation
When the compilation takes place in a dedicated container, it is relatively safe to permit running external commands from inside the TeX
file during compilation. This is required for packages like `minted`. For this purpose, the following environment variable can be used:
- `TEX_COMPILER_EXTRA_FLAGS`
* A list of extra flags for TeX compiler. Example: `-shell-escape -file-line-error`
- A list of extra flags for TeX compiler.
Example: `-shell-escape -file-line-error`
For additional details refer to
[Server Pro: Sandboxed Compiles](https://github.com/overleaf/overleaf/wiki/Server-Pro:-sandboxed-compiles).
<details>
<summary><h4>Sample variables.env file for Overleaf Toolkit</h4></summary>
```
```bash
OVERLEAF_APP_NAME="Our Overleaf Instance"
ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url
@@ -116,9 +243,10 @@ NAV_HIDE_POWERED_BY=true
## Sandboxed Compiles ##
########################
ALL_TEX_LIVE_DOCKER_IMAGES=texlive/texlive:latest-full, texlive/texlive:TL2024-historic
TEX_LIVE_DOCKER_IMAGE_ROOT=texlive
ALL_TEX_LIVE_DOCKER_IMAGES=texlive:latest-full, texlive:TL2024-historic
ALL_TEX_LIVE_DOCKER_IMAGE_NAMES=TeXLive 2025, TeXLive 2024
TEX_LIVE_DOCKER_IMAGE=texlive/texlive:TL2024-historic
TEX_LIVE_DOCKER_IMAGE=texlive:TL2024-historic
TEX_COMPILER_EXTRA_FLAGS=-shell-escape
```
</details>

@@ -5,3 +5,5 @@
- [How to enable the 'Restore project to this version' feature](https://github.com/yu-i-i/overleaf-cep/discussions/76)
- [Example of Authentik Identity Provider configuration for OIDC](https://github.com/yu-i-i/overleaf-cep/discussions/68)
- [Alternative Tex Live images](https://github.com/ayaka-notes/texlive-full)

13
Home.md

@@ -12,14 +12,23 @@ the [Overleaf Wiki Page](https://github.com/overleaf/overleaf/wiki).
## Extended CE Release Notes
### `v6.1.1-ext-v3.5`
- Based on upstream release v6.1.1
- New design of the Overleaf editor (supports light and dark themes)
- Introduced `TEX_LIVE_DOCKER_IMAGE_ROOT` environment variable to simplify changing TeX Live Docker images.
For details, see [Sandboxed Compiles](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-Sandboxed-Compiles)
- Introduced `OVERLEAF_EMAIL_SMTP_PASS_FILE` envirionment variable
- Fixed several bugs in tools for administrators to manage users and projects
- Fixed support for Sandboxed compiles on arm64 architecture
### `v6.0.1-ext-v3.4`
- Introduced advanced tools for administrators to manage users and projects.
- Introduced advanced tools for administrators to manage users and projects
### `v6.0.1-ext-v3.3`
- Based on upstream release v6.0.1
### `v6.0.0-ext-v3.3`
- **Security fix**: external URLs are now normalized and sanitized.
- **Security fix**: external URLs are now normalized and sanitized
### `v6.0.0-ext-v3.2`