Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions ct/overleaf.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/api.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: EEJoshua
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/overleaf/toolkit

APP="Overleaf"
var_tags="${var_tags:-latex;docker}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-8}"
var_os="${var_os:-debian}"
var_version="${var_version:-12}"
var_unprivileged="${var_unprivileged:-1}"

header_info "$APP"
variables
color
catch_errors

function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/overleaf-toolkit ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP"
cd /opt/overleaf-toolkit
$STD git pull -q || true
$STD bin/upgrade || $STD bin/up -d
msg_ok "Update Successful"
exit
}

start
build_container
description

msg_ok "Completed Successfully!\n"
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
echo -e "${INFO}${YW} First step: create the admin user at:${CL}"
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/launchpad${CL}"
36 changes: 36 additions & 0 deletions frontend/public/json/overleaf.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "Overleaf",
"slug": "overleaf",
"categories": [11],
"date_created": "2025-08-17",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 80,
"documentation": "https://docs.overleaf.com/on-premises",
"website": "https://github.com/overleaf/toolkit",
"logo": "https://upload.wikimedia.org/wikipedia/commons/2/2a/Overleaf_Logo.svg",
"description": "Overleaf is an open-source, real-time collaborative LaTeX editor that compiles projects server-side with TeX Live. This installs the official Overleaf Toolkit on Docker in an LXC and defaults to Community Edition (AGPL-3.0, self-hosted, community-supported). Community Edition targets trusted environments and omits enterprise features such as SSO via SAML/LDAP, sandboxed compiles, optimized TeX Live, and early security notices; these are in Server Pro, which you can switch to later without redoing your configuration.",
"install_methods": [
{
"type": "default",
"script": "ct/overleaf.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 20,
"os": "debian",
"version": "12"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{ "text": "After startup, create the first admin at http://<IP>/launchpad.", "type": "info" },
{ "text": "Toolkit lives in /opt/overleaf-toolkit. Use bin/up, bin/stop, bin/doctor.", "type": "info" },
{ "text": "After editing /opt/overleaf-toolkit/config/overleaf.rc, redeploy with: cd /opt/overleaf-toolkit && bin/up --build.", "type": "info" }
]
}
58 changes: 58 additions & 0 deletions install/overleaf-install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/usr/bin/env bash

# Copyright (c) 2021-2025 community-scripts ORG
# Author: EEJoshua
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/overleaf/toolkit

source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os

msg_info "Installing Dependencies"
$STD apt-get install -y git ca-certificates curl gnupg
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" >/etc/apt/sources.list.d/docker.list
$STD apt-get update
$STD apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$STD systemctl enable --now docker
msg_ok "Installed Dependencies"

msg_info "Setup Overleaf"
install -d -m 0755 /opt
if [[ -d /opt/overleaf-toolkit/.git ]]; then
$STD git -C /opt/overleaf-toolkit pull -q
else
$STD git clone -q https://github.com/overleaf/toolkit.git /opt/overleaf-toolkit
fi
cd /opt/overleaf-toolkit
$STD bin/init </dev/null

CFG="config/overleaf.rc"
grep -q '^OVERLEAF_LISTEN_IP=' "$CFG" \
&& sed -i 's/^OVERLEAF_LISTEN_IP=.*/OVERLEAF_LISTEN_IP=0.0.0.0/' "$CFG" \
|| echo 'OVERLEAF_LISTEN_IP=0.0.0.0' >> "$CFG"

grep -q '^SIBLING_CONTAINERS_ENABLED=' "$CFG" \
&& sed -i 's/^SIBLING_CONTAINERS_ENABLED=.*/SIBLING_CONTAINERS_ENABLED=false/' "$CFG" \
|| echo 'SIBLING_CONTAINERS_ENABLED=false' >> "$CFG"
msg_ok "Setup Overleaf"

msg_info "Starting Overleaf"
$STD bin/up -d

msg_ok "Started Overleaf"

motd_ssh
customize

msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"
Loading