From e136c161cc1724b746d00ab836f9deff5796a7b2 Mon Sep 17 00:00:00 2001 From: Andrej Kocijan Date: Fri, 22 Aug 2025 12:03:34 +0200 Subject: [PATCH 1/8] Added Redlib install/update script --- ct/redlib.sh | 67 ++++++++++++++++++++ frontend/public/json/redlib.json | 35 +++++++++++ install/redlib-install.sh | 105 +++++++++++++++++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 ct/redlib.sh create mode 100644 frontend/public/json/redlib.json create mode 100644 install/redlib-install.sh diff --git a/ct/redlib.sh b/ct/redlib.sh new file mode 100644 index 00000000..23d702bc --- /dev/null +++ b/ct/redlib.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: andrej-kocijan (Andrej Kocijan) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/redlib-org/redlib + +APP="Redlib" +var_tags="${var_tags:-alpine;frontend}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-1}" +var_os="${var_os:-alpine}" +var_version="${var_version:-3.22}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_resources + + if [[ ! -d /opt/redlib ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/redlib-org/redlib/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Updating Alpine Packages" + $STD apk -U upgrade + msg_ok "Updated Alpine Packages" + + msg_info "Stopping ${APP} Service" + $STD rc-service redlib stop + msg_info "Stopped ${APP} Service" + + msg_info "Updating ${APP}" + $STD curl -fsSL -o /tmp/redlib-x86_64-unknown-linux-musl.tar.gz \ + "https://github.com/redlib-org/redlib/releases/latest/download/redlib-x86_64-unknown-linux-musl.tar.gz" + $STD tar -xzf /tmp/redlib-x86_64-unknown-linux-musl.tar.gz -C /opt/redlib + $STD rm /tmp/redlib-x86_64-unknown-linux-musl.tar.gz + msg_ok "Updated ${APP}" + + msg_info "Starting ${APP} Service" + $STD rc-service redlib start + msg_ok "Started ${APP} Service" + + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Update Successful" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + 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}http://${IP}:5252${CL}" diff --git a/frontend/public/json/redlib.json b/frontend/public/json/redlib.json new file mode 100644 index 00000000..40a0b7e8 --- /dev/null +++ b/frontend/public/json/redlib.json @@ -0,0 +1,35 @@ +{ + "name": "Redlib", + "slug": "redlib", + "categories": [ + 10 + ], + "date_created": "2025-08-22", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 5252, + "documentation": null, + "website": "https://github.com/redlib-org/redlib", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/redlib.webp", + "config_path": "/opt/redlib/redlib.conf", + "description": "An alternative private front-end to Reddit. Redlib hopes to provide an easier way to browse Reddit, without the ads, trackers, and bloat.", + "install_methods": [ + { + "type": "default", + "script": "ct/redlib.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 1, + "os": "alpine", + "version": "3.22" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} diff --git a/install/redlib-install.sh b/install/redlib-install.sh new file mode 100644 index 00000000..f6208d91 --- /dev/null +++ b/install/redlib-install.sh @@ -0,0 +1,105 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: andrej-kocijan (Andrej Kocijan) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/redlib-org/redlib + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Downloading Redlib" +RELEASE=$(curl -s https://api.github.com/repos/redlib-org/redlib/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +$STD curl -fsSL -o /tmp/redlib-x86_64-unknown-linux-musl.tar.gz \ +"https://github.com/redlib-org/redlib/releases/latest/download/redlib-x86_64-unknown-linux-musl.tar.gz" +msg_ok "Downloaded Redlib" + +msg_info "Installing Redlib" +mkdir /opt/redlib +$STD tar -xzf /tmp/redlib-x86_64-unknown-linux-musl.tar.gz -C /opt/redlib +$STD rm /tmp/redlib-x86_64-unknown-linux-musl.tar.gz +echo "${RELEASE}" >/opt/Redlib_version.txt +cat </opt/redlib/redlib.conf +############################################ +# Redlib Instance Configuration File +# Uncomment and edit values as needed +############################################ + +## Instance settings +ADDRESS=0.0.0.0 +PORT=5252 # Integer (0-65535) - Internal port +#REDLIB_SFW_ONLY=off # ["on", "off"] - Filter all NSFW content +#REDLIB_BANNER= # String - Displayed on instance info page +#REDLIB_ROBOTS_DISABLE_INDEXING=off # ["on", "off"] - Disable search engine indexing +#REDLIB_PUSHSHIFT_FRONTEND=undelete.pullpush.io # Pushshift frontend for removed links +#REDLIB_ENABLE_RSS=off # ["on", "off"] - Enable RSS feed generation +#REDLIB_FULL_URL= # String - Needed for proper RSS URLs + +## Default user settings +#REDLIB_DEFAULT_THEME=system # Theme (system, light, dark, black, dracula, nord, laserwave, violet, gold, rosebox, gruvboxdark, gruvboxlight, tokyoNight, icebergDark, doomone, libredditBlack, libredditDark, libredditLight) +#REDLIB_DEFAULT_FRONT_PAGE=default # ["default", "popular", "all"] +#REDLIB_DEFAULT_LAYOUT=card # ["card", "clean", "compact"] +#REDLIB_DEFAULT_WIDE=off # ["on", "off"] +#REDLIB_DEFAULT_POST_SORT=hot # ["hot", "new", "top", "rising", "controversial"] +#REDLIB_DEFAULT_COMMENT_SORT=confidence # ["confidence", "top", "new", "controversial", "old"] +#REDLIB_DEFAULT_BLUR_SPOILER=off # ["on", "off"] +#REDLIB_DEFAULT_SHOW_NSFW=off # ["on", "off"] +#REDLIB_DEFAULT_BLUR_NSFW=off # ["on", "off"] +#REDLIB_DEFAULT_USE_HLS=off # ["on", "off"] +#REDLIB_DEFAULT_HIDE_HLS_NOTIFICATION=off # ["on", "off"] +#REDLIB_DEFAULT_AUTOPLAY_VIDEOS=off # ["on", "off"] +#REDLIB_DEFAULT_SUBSCRIPTIONS= # Example: sub1+sub2+sub3 +#REDLIB_DEFAULT_HIDE_AWARDS=off # ["on", "off"] +#REDLIB_DEFAULT_DISABLE_VISIT_REDDIT_CONFIRMATION=off # ["on", "off"] +#REDLIB_DEFAULT_HIDE_SCORE=off # ["on", "off"] +#REDLIB_DEFAULT_HIDE_SIDEBAR_AND_SUMMARY=off # ["on", "off"] +#REDLIB_DEFAULT_FIXED_NAVBAR=on # ["on", "off"] +#REDLIB_DEFAULT_REMOVE_DEFAULT_FEEDS=off # ["on", "off"] +EOF +msg_ok "Installed Redlib" + +msg_info "Creating Redlib Service" +cat </etc/init.d/redlib +#!/sbin/openrc-run + +name="Redlib" +description="Redlib Service" +command="/opt/redlib/redlib" +pidfile="/run/redlib.pid" +supervisor="supervise-daemon" +command_background="yes" + +depend() { + need net +} + +start_pre() { + + set -a + . /opt/redlib/redlib.conf + set +a + + : ${ADDRESS:=0.0.0.0} + : ${PORT:=5252} + + command_args="-a ${ADDRESS} -p ${PORT}" +} +EOF +$STD chmod +x /etc/init.d/redlib +msg_ok "Created Redlib Service" + +msg_info "Enabling Redlib Service" +$STD rc-update add redlib default +msg_ok "Enabled Redlib Service" + +msg_info "Starting Redlib Service" +$STD rc-service redlib start +msg_ok "Started Redlib Service" + +motd_ssh +customize From 63bd61d695ef31554d4d3840d78485ee88003ab8 Mon Sep 17 00:00:00 2001 From: Andrej Kocijan Date: Fri, 22 Aug 2025 12:13:56 +0200 Subject: [PATCH 2/8] Fixed stopping service message --- ct/redlib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/redlib.sh b/ct/redlib.sh index 23d702bc..97bfb945 100644 --- a/ct/redlib.sh +++ b/ct/redlib.sh @@ -36,7 +36,7 @@ function update_script() { msg_info "Stopping ${APP} Service" $STD rc-service redlib stop - msg_info "Stopped ${APP} Service" + msg_ok "Stopped ${APP} Service" msg_info "Updating ${APP}" $STD curl -fsSL -o /tmp/redlib-x86_64-unknown-linux-musl.tar.gz \ From 006bbd124cbe8ac6efbcc556c8ae2365ce770575 Mon Sep 17 00:00:00 2001 From: Andrej Kocijan Date: Fri, 22 Aug 2025 12:59:31 +0200 Subject: [PATCH 3/8] Add documentation to frontend json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> --- frontend/public/json/redlib.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/public/json/redlib.json b/frontend/public/json/redlib.json index 40a0b7e8..0b2c7cce 100644 --- a/frontend/public/json/redlib.json +++ b/frontend/public/json/redlib.json @@ -9,7 +9,7 @@ "updateable": true, "privileged": false, "interface_port": 5252, - "documentation": null, + "documentation": "https://github.com/redlib-org/redlib/blob/main/README.md", "website": "https://github.com/redlib-org/redlib", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/redlib.webp", "config_path": "/opt/redlib/redlib.conf", From 33df8b7b3a1f8ed44c743dd6d2f51ece867c15fe Mon Sep 17 00:00:00 2001 From: Andrej Kocijan Date: Fri, 22 Aug 2025 13:08:15 +0200 Subject: [PATCH 4/8] Minor fixes --- ct/redlib.sh | 4 ++-- install/redlib-install.sh | 7 ++----- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/ct/redlib.sh b/ct/redlib.sh index 97bfb945..264e7962 100644 --- a/ct/redlib.sh +++ b/ct/redlib.sh @@ -29,7 +29,7 @@ function update_script() { fi RELEASE=$(curl -s https://api.github.com/repos/redlib-org/redlib/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + if [[ "${RELEASE}" != "$(cat ~/.redlib 2>/dev/null)" ]] || [[ ! -f ~/.redlib ]]; then msg_info "Updating Alpine Packages" $STD apk -U upgrade msg_ok "Updated Alpine Packages" @@ -49,7 +49,7 @@ function update_script() { $STD rc-service redlib start msg_ok "Started ${APP} Service" - echo "${RELEASE}" >/opt/${APP}_version.txt + echo "${RELEASE}" >~/.redlib msg_ok "Update Successful" else msg_ok "No update required. ${APP} is already at ${RELEASE}" diff --git a/install/redlib-install.sh b/install/redlib-install.sh index f6208d91..97c11519 100644 --- a/install/redlib-install.sh +++ b/install/redlib-install.sh @@ -23,7 +23,7 @@ msg_info "Installing Redlib" mkdir /opt/redlib $STD tar -xzf /tmp/redlib-x86_64-unknown-linux-musl.tar.gz -C /opt/redlib $STD rm /tmp/redlib-x86_64-unknown-linux-musl.tar.gz -echo "${RELEASE}" >/opt/Redlib_version.txt +echo "${RELEASE}" >~/.redlib cat </opt/redlib/redlib.conf ############################################ # Redlib Instance Configuration File @@ -91,11 +91,8 @@ start_pre() { } EOF $STD chmod +x /etc/init.d/redlib -msg_ok "Created Redlib Service" - -msg_info "Enabling Redlib Service" $STD rc-update add redlib default -msg_ok "Enabled Redlib Service" +msg_ok "Created Redlib Service" msg_info "Starting Redlib Service" $STD rc-service redlib start From e988634b34ddde5b0d4c7837f8b7d0cacf3d3343 Mon Sep 17 00:00:00 2001 From: Andrej Kocijan Date: Fri, 22 Aug 2025 16:35:58 +0200 Subject: [PATCH 5/8] Source build.func from correct repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> --- ct/redlib.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/redlib.sh b/ct/redlib.sh index 264e7962..e62e91e1 100644 --- a/ct/redlib.sh +++ b/ct/redlib.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) # Copyright (c) 2021-2025 community-scripts ORG # Author: andrej-kocijan (Andrej Kocijan) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE From b39235d15ec26fe8f410c9445ab8277469ae7944 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Fri, 22 Aug 2025 17:46:21 +0200 Subject: [PATCH 6/8] Update redlib-install.sh --- install/redlib-install.sh | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/install/redlib-install.sh b/install/redlib-install.sh index 97c11519..5472985d 100644 --- a/install/redlib-install.sh +++ b/install/redlib-install.sh @@ -5,7 +5,7 @@ # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/redlib-org/redlib -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"e color verb_ip6 catch_errors @@ -13,17 +13,9 @@ setting_up_container network_check update_os -msg_info "Downloading Redlib" -RELEASE=$(curl -s https://api.github.com/repos/redlib-org/redlib/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -$STD curl -fsSL -o /tmp/redlib-x86_64-unknown-linux-musl.tar.gz \ -"https://github.com/redlib-org/redlib/releases/latest/download/redlib-x86_64-unknown-linux-musl.tar.gz" -msg_ok "Downloaded Redlib" +fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz" -msg_info "Installing Redlib" -mkdir /opt/redlib -$STD tar -xzf /tmp/redlib-x86_64-unknown-linux-musl.tar.gz -C /opt/redlib -$STD rm /tmp/redlib-x86_64-unknown-linux-musl.tar.gz -echo "${RELEASE}" >~/.redlib +msg_info "Configuring Redlib" cat </opt/redlib/redlib.conf ############################################ # Redlib Instance Configuration File @@ -61,7 +53,7 @@ PORT=5252 # Integer (0-65535) - Internal port #REDLIB_DEFAULT_FIXED_NAVBAR=on # ["on", "off"] #REDLIB_DEFAULT_REMOVE_DEFAULT_FEEDS=off # ["on", "off"] EOF -msg_ok "Installed Redlib" +msg_ok "Configured Redlib" msg_info "Creating Redlib Service" cat </etc/init.d/redlib From 982b2221284fdd0636db2dc38688649a0f6ba23a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Fri, 22 Aug 2025 17:50:51 +0200 Subject: [PATCH 7/8] Update redlib.sh --- ct/redlib.sh | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/ct/redlib.sh b/ct/redlib.sh index e62e91e1..2a68a595 100644 --- a/ct/redlib.sh +++ b/ct/redlib.sh @@ -38,18 +38,12 @@ function update_script() { $STD rc-service redlib stop msg_ok "Stopped ${APP} Service" - msg_info "Updating ${APP}" - $STD curl -fsSL -o /tmp/redlib-x86_64-unknown-linux-musl.tar.gz \ - "https://github.com/redlib-org/redlib/releases/latest/download/redlib-x86_64-unknown-linux-musl.tar.gz" - $STD tar -xzf /tmp/redlib-x86_64-unknown-linux-musl.tar.gz -C /opt/redlib - $STD rm /tmp/redlib-x86_64-unknown-linux-musl.tar.gz - msg_ok "Updated ${APP}" + fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz" msg_info "Starting ${APP} Service" $STD rc-service redlib start msg_ok "Started ${APP} Service" - echo "${RELEASE}" >~/.redlib msg_ok "Update Successful" else msg_ok "No update required. ${APP} is already at ${RELEASE}" From 414e22416e0442e7eb91c603511563f91536251d Mon Sep 17 00:00:00 2001 From: Andrej Kocijan Date: Fri, 22 Aug 2025 17:54:48 +0200 Subject: [PATCH 8/8] Removed version check as fetch_and_deploy_gh_release already does that --- ct/redlib.sh | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/ct/redlib.sh b/ct/redlib.sh index 2a68a595..7cde4fe8 100644 --- a/ct/redlib.sh +++ b/ct/redlib.sh @@ -28,26 +28,21 @@ function update_script() { exit fi - RELEASE=$(curl -s https://api.github.com/repos/redlib-org/redlib/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - if [[ "${RELEASE}" != "$(cat ~/.redlib 2>/dev/null)" ]] || [[ ! -f ~/.redlib ]]; then - msg_info "Updating Alpine Packages" - $STD apk -U upgrade - msg_ok "Updated Alpine Packages" + msg_info "Updating Alpine Packages" + $STD apk -U upgrade + msg_ok "Updated Alpine Packages" - msg_info "Stopping ${APP} Service" - $STD rc-service redlib stop - msg_ok "Stopped ${APP} Service" + msg_info "Stopping ${APP} Service" + $STD rc-service redlib stop + msg_ok "Stopped ${APP} Service" - fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz" + fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz" - msg_info "Starting ${APP} Service" - $STD rc-service redlib start - msg_ok "Started ${APP} Service" + msg_info "Starting ${APP} Service" + $STD rc-service redlib start + msg_ok "Started ${APP} Service" - msg_ok "Update Successful" - else - msg_ok "No update required. ${APP} is already at ${RELEASE}" - fi + msg_ok "Update Successful" exit }