diff --git a/ct/headers/shlink b/ct/headers/shlink deleted file mode 100644 index a12d5b62..00000000 --- a/ct/headers/shlink +++ /dev/null @@ -1,6 +0,0 @@ - _____ __ ___ __ - / ___// /_ / (_)___ / /__ - \__ \/ __ \/ / / __ \/ //_/ - ___/ / / / / / / / / / ,< -/____/_/ /_/_/_/_/ /_/_/|_| - diff --git a/ct/shlink.sh b/ct/shlink.sh deleted file mode 100644 index 76e99fd4..00000000 --- a/ct/shlink.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE -# Source: https://shlink.io/ - -APP="Shlink" -var_tags="${var_tags:-url-shortener;analytics;php}" -var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-2048}" -var_disk="${var_disk:-4}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" -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/shlink ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - - if check_for_gh_release "shlink" "shlinkio/shlink"; then - msg_info "Stopping Service" - systemctl stop shlink - msg_ok "Stopped Service" - - msg_info "Backing up Data" - cp /opt/shlink/.env /opt/shlink.env.bak - cp -r /opt/shlink/data /opt/shlink_data_backup - msg_ok "Backed up Data" - - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "shlink" "shlinkio/shlink" "prebuild" "latest" "/opt/shlink" "shlink*_php8.5_dist.zip" - - msg_info "Restoring Data" - cp /opt/shlink.env.bak /opt/shlink/.env - rm -f /opt/shlink.env.bak - cp -r /opt/shlink_data_backup/. /opt/shlink/data - rm -rf /opt/shlink_data_backup - msg_ok "Restored Data" - - msg_info "Updating Application" - cd /opt/shlink - $STD php ./vendor/bin/rr get --no-interaction --location bin/ - chmod +x bin/rr - set -a - source /opt/shlink/.env - set +a - $STD php vendor/bin/shlink-installer init --no-interaction --clear-db-cache --skip-download-geolite - msg_ok "Updated Application" - - msg_info "Starting Service" - systemctl start shlink - msg_ok "Started Service" - msg_ok "Updated successfully!" - fi - - if [[ -d /opt/shlink-web-client ]]; then - if check_for_gh_release "shlink-web-client" "shlinkio/shlink-web-client"; then - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "shlink-web-client" "shlinkio/shlink-web-client" "prebuild" "latest" "/opt/shlink-web-client" "shlink-web-client_*_dist.zip" - msg_ok "Updated Web Client" - fi - 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 Shlink Web Client using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" -echo -e "${INFO}${YW} Shlink HTTP API:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/install/shlink-install.sh b/install/shlink-install.sh deleted file mode 100644 index a40714bd..00000000 --- a/install/shlink-install.sh +++ /dev/null @@ -1,126 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE -# Source: https://shlink.io/ - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -PHP_VERSION="8.5" setup_php -setup_mariadb -MARIADB_DB_NAME="shlink" MARIADB_DB_USER="shlink" setup_mariadb_db - -fetch_and_deploy_gh_release "shlink" "shlinkio/shlink" "prebuild" "latest" "/opt/shlink" "shlink*_php8.5_dist.zip" - -msg_info "Setting up Application" -cd /opt/shlink -$STD php ./vendor/bin/rr get --no-interaction --location bin/ -chmod +x bin/rr -mkdir -p data/cache data/locks data/log data/proxies data/temp-geolite -chmod -R 775 data -cat </opt/shlink/.env -DEFAULT_DOMAIN=${LOCAL_IP}:8080 -IS_HTTPS_ENABLED=false -DB_DRIVER=maria -DB_NAME=${MARIADB_DB_NAME} -DB_USER=${MARIADB_DB_USER} -DB_PASSWORD=${MARIADB_DB_PASS} -DB_HOST=127.0.0.1 -DB_PORT=3306 -EOF -set -a -source /opt/shlink/.env -set +a -$STD php vendor/bin/shlink-installer init --no-interaction --clear-db-cache --skip-download-geolite -API_OUTPUT=$(php bin/cli api-key:generate --name=default 2>&1) -INITIAL_API_KEY=$(echo "$API_OUTPUT" | sed -n 's/.*Generated API key: "\([^"]*\)".*/\1/p') -if [[ -n "$INITIAL_API_KEY" ]]; then - echo "INITIAL_API_KEY=${INITIAL_API_KEY}" >>/opt/shlink/.env -fi -msg_ok "Set up Application" - -if prompt_confirm "Install Shlink Web Client?" "y" 60; then - msg_info "Installing Dependencies" - $STD apt install -y nginx - msg_ok "Installed Dependencies" - - fetch_and_deploy_gh_release "shlink-web-client" "shlinkio/shlink-web-client" "prebuild" "latest" "/opt/shlink-web-client" "shlink-web-client_*_dist.zip" - - msg_info "Setting up Web Client" - cat </opt/shlink-web-client/servers.json -[ - { - "name": "Shlink", - "url": "http://${LOCAL_IP}:8080", - "apiKey": "${INITIAL_API_KEY}" - } -] -EOF - cat <<'EOF' >/etc/nginx/sites-available/shlink-web-client -server { - listen 3000 default_server; - charset utf-8; - root /opt/shlink-web-client; - index index.html; - - location ~* \.(?:manifest|appcache|html?|xml|json)$ { - expires -1; - } - - location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { - expires 1M; - add_header Cache-Control "public"; - } - - location ~* \.(?:css|js)$ { - expires 1y; - add_header Cache-Control "public"; - } - - location = /servers.json { - try_files /servers.json /conf.d/servers.json; - } - - location / { - try_files $uri $uri/ /index.html$is_args$args; - } -} -EOF - ln -sf /etc/nginx/sites-available/shlink-web-client /etc/nginx/sites-enabled/shlink-web-client - rm -f /etc/nginx/sites-enabled/default - systemctl enable -q nginx - $STD systemctl restart nginx - msg_ok "Set up Web Client" -fi - -msg_info "Creating Service" -cat </etc/systemd/system/shlink.service -[Unit] -Description=Shlink URL Shortener -After=network.target mariadb.service - -[Service] -Type=simple -User=root -WorkingDirectory=/opt/shlink -EnvironmentFile=/opt/shlink/.env -ExecStart=/opt/shlink/bin/rr serve -c config/roadrunner/.rr.yml -Restart=on-failure -RestartSec=5 - -[Install] -WantedBy=multi-user.target -EOF -systemctl enable -q --now shlink -msg_ok "Created Service" - -motd_ssh -customize -cleanup_lxc diff --git a/json/shlink.json b/json/shlink.json deleted file mode 100644 index 1506ca04..00000000 --- a/json/shlink.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "Shlink", - "slug": "shlink", - "categories": [ - 0 - ], - "date_created": "2026-04-20", - "type": "ct", - "updateable": true, - "privileged": false, - "has_arm": false, - "interface_port": 3000, - "documentation": "https://shlink.io/documentation/", - "website": "https://shlink.io/", - "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/shlink.webp", - "description": "Shlink is a self-hosted URL shortener built in PHP that provides detailed analytics, a REST API, tags, expiration dates, and integrations via webhooks.", - "install_methods": [ - { - "type": "default", - "script": "ct/shlink.sh", - "config_path": "/opt/shlink/.env", - "resources": { - "cpu": 2, - "ram": 2048, - "hdd": 4, - "os": "Debian", - "version": "13" - } - } - ], - "default_credentials": { - "username": null, - "password": null - }, - "notes": [ - { - "text": "The initial API key is stored in /opt/shlink/.env. You need it to connect Shlink Web Client or any API consumer.", - "type": "warning" - }, - { - "text": "Configure your short domain by editing DEFAULT_DOMAIN in /opt/shlink/.env and restarting the service.", - "type": "info" - }, - { - "text": "Shlink API runs on port 8080, the Web Client (if installed) on port 3000.", - "type": "info" - } - ] -} \ No newline at end of file