mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-02-03 20:03:25 +01:00
Kutt (#10812)
* Add kutt (ct) * Fix success message formatting in kutt.sh --------- Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com> Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
13decbf3a1
commit
95ad02c9ef
6
ct/headers/kutt
Normal file
6
ct/headers/kutt
Normal file
@@ -0,0 +1,6 @@
|
||||
__ __ __ __
|
||||
/ //_/_ __/ /_/ /_
|
||||
/ ,< / / / / __/ __/
|
||||
/ /| / /_/ / /_/ /_
|
||||
/_/ |_\__,_/\__/\__/
|
||||
|
||||
74
ct/kutt.sh
Normal file
74
ct/kutt.sh
Normal file
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: tomfrenzel
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/thedevs-network/kutt
|
||||
|
||||
APP="Kutt"
|
||||
var_tags="${var_tags:-sharing}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-2}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
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/kutt ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "kutt" "thedevs-network/kutt"; then
|
||||
msg_info "Stopping services"
|
||||
systemctl stop kutt
|
||||
msg_ok "Stopped services"
|
||||
|
||||
msg_info "Backing up data"
|
||||
mkdir -p /opt/kutt-backup
|
||||
[ -d /opt/kutt/custom ] && cp -r /opt/kutt/custom /opt/kutt-backup/
|
||||
[ -d /opt/kutt/db ] && cp -r /opt/kutt/db /opt/kutt-backup/
|
||||
cp /opt/kutt/.env /opt/kutt-backup/
|
||||
msg_ok "Backed up data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "kutt" "thedevs-network/kutt" "tarball" "latest"
|
||||
|
||||
msg_info "Restoring data"
|
||||
[ -d /opt/kutt-backup/custom ] && cp -r /opt/kutt-backup/custom /opt/kutt/
|
||||
[ -d /opt/kutt-backup/db ] && cp -r /opt/kutt-backup/db /opt/kutt/
|
||||
[ -f /opt/kutt-backup/.env ] && cp /opt/kutt-backup/.env /opt/kutt/
|
||||
rm -rf /opt/kutt-backup
|
||||
msg_ok "Restored data"
|
||||
|
||||
msg_info "Configuring Kutt"
|
||||
cd /opt/kutt
|
||||
$STD npm install
|
||||
$STD npm run migrate
|
||||
msg_ok "Configured Kutt"
|
||||
|
||||
msg_info "Starting services"
|
||||
systemctl start kutt
|
||||
msg_ok "Started services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
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}https://${IP} or https://<your-Kutt-domain>${CL}"
|
||||
40
frontend/public/json/kutt.json
Normal file
40
frontend/public/json/kutt.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"name": "Kutt",
|
||||
"slug": "kutt",
|
||||
"categories": [
|
||||
21
|
||||
],
|
||||
"date_created": "2025-12-14",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 443,
|
||||
"documentation": "https://github.com/thedevs-network/kutt/",
|
||||
"config_path": "/opt/kutt/.env",
|
||||
"website": "https://kutt.it",
|
||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/kutt.webp",
|
||||
"description": "Kutt is a modern URL shortener with support for custom domains. Create and edit links, view statistics, manage users, and more.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/kutt.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 2,
|
||||
"os": "Debian",
|
||||
"version": "13"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": [
|
||||
{
|
||||
"text": "Kutt needs so be served with an SSL certificate for its login to work. During install, you will be prompted to choose if you want to have Caddy installed for SSL termination or if you want to use your own reverse proxy (in that case point your reverse porxy to port 3000).",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
75
install/kutt-install.sh
Normal file
75
install/kutt-install.sh
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: tomfrenzel
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/thedevs-network/kutt
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
echo "${TAB3}How would you like to handle SSL termination?"
|
||||
echo "${TAB3}[i]-Internal (self-signed SSL Certificate) [e]-External (use your own reverse proxy)"
|
||||
read -rp "${TAB3}Enter your choice <i/e> (default: i): " ssl_choice
|
||||
ssl_choice=${ssl_choice:-i}
|
||||
case "${ssl_choice,,}" in
|
||||
i)
|
||||
import_local_ip
|
||||
DEFAULT_HOST="$LOCAL_IP"
|
||||
|
||||
msg_info "Configuring Caddy"
|
||||
$STD apt install -y caddy
|
||||
cat <<EOF >/etc/caddy/Caddyfile
|
||||
$LOCAL_IP {
|
||||
reverse_proxy localhost:3000
|
||||
}
|
||||
EOF
|
||||
systemctl restart caddy
|
||||
msg_ok "Configured Caddy"
|
||||
;;
|
||||
e)
|
||||
read -r -p "${TAB3}Enter the hostname you want to use for Kutt (eg. kutt.example.com): " custom_host
|
||||
if [[ "$custom_host" ]]; then
|
||||
DEFAULT_HOST="$custom_host"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
NODE_VERSION="22" setup_nodejs
|
||||
fetch_and_deploy_gh_release "kutt" "thedevs-network/kutt" "tarball"
|
||||
|
||||
msg_info "Configuring Kutt"
|
||||
cd /opt/kutt
|
||||
cp .example.env ".env"
|
||||
sed -i "s|JWT_SECRET=|JWT_SECRET=$(openssl rand -base64 32)|g" ".env"
|
||||
sed -i "s|DEFAULT_DOMAIN=.*|DEFAULT_DOMAIN=$DEFAULT_HOST|g" ".env"
|
||||
$STD npm install
|
||||
$STD npm run migrate
|
||||
msg_ok "Configured Kutt"
|
||||
|
||||
msg_info "Creating Services"
|
||||
cat <<EOF >/etc/systemd/system/kutt.service
|
||||
[Unit]
|
||||
Description=Kutt server
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
WorkingDirectory=/opt/kutt
|
||||
ExecStart=/usr/bin/npm start
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now kutt
|
||||
msg_ok "Created Services"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
Reference in New Issue
Block a user