From 60274543040686df018ac4abaf5b476fbf66d85e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 18 Aug 2025 11:35:50 +0200 Subject: [PATCH] ente --- ct/ente.sh | 42 ++++++++++++++ install/ente-install.sh | 126 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 ct/ente.sh create mode 100644 install/ente-install.sh diff --git a/ct/ente.sh b/ct/ente.sh new file mode 100644 index 00000000..3074d79b --- /dev/null +++ b/ct/ente.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +source <(curl -fsSL https://git.community-scripts.org/community-scripts/ProxmoxVED/raw/branch/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE +# Source: https://www.debian.org/ + +APP="Ente" +var_tags="${var_tags:-photos}" +var_cpu="${var_cpu:-4}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-10}" +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 /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + $STD apt-get update + $STD apt-get -y upgrade + msg_ok "Updated $APP LXC" + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!" +msg_custom "🚀" "${GN}" "${APP} setup has been successfully initialized!" diff --git a/install/ente-install.sh b/install/ente-install.sh new file mode 100644 index 00000000..edcd8b0c --- /dev/null +++ b/install/ente-install.sh @@ -0,0 +1,126 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/ente-io/ente + +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 \ + libsodium23 libsodium-dev pkg-config caddy +msg_ok "Installed Dependencies" + +PG_VERSION="17" setup_postgresql +setup_go +NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs +fetch_and_deploy_gh_release "ente" "ente-io/ente" "tarball" "latest" "/opt/ente" + +msg_info "Setting up PostgreSQL" +DB_NAME="ente_db" +DB_USER="ente" +DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" +$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;" +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';" +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';" +$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';" +{ + echo "Ente Credentials" + echo "Database Name: $DB_NAME" + echo "Database User: $DB_USER" + echo "Database Password: $DB_PASS" +} >>~/ente.creds +msg_ok "Set up PostgreSQL" + +msg_info "Building Museum (server)" +cd /opt/ente/server +$STD corepack enable +$STD go mod tidy +$STD go build cmd/museum/main.go +cp config/example.yaml museum.yaml +msg_ok "Built Museum" + +msg_info "Generating Secrets" +$STD go run tools/gen-random-keys/main.go >secrets.txt +msg_ok "Generated Secrets" + +msg_info "Creating Museum Service" +cat </etc/systemd/system/ente-museum.service +[Unit] +Description=Ente Museum Server +After=network.target postgresql.service + +[Service] +WorkingDirectory=/opt/ente/server +ExecStart=/opt/ente/server/main +Restart=always +Environment="DATABASE_URL=postgresql://$DB_USER:$DB_PASS@127.0.0.1:5432/$DB_NAME" + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now ente-museum +msg_ok "Created Museum Service" + +msg_info "Building Web Applications" +cd /opt/ente/web +$STD yarn install +export NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 +export NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT=http://localhost:3002 +$STD yarn build +$STD yarn build:accounts +$STD yarn build:auth +$STD yarn build:cast +mkdir -p /var/www/ente/apps +cp -r apps/photos/out /var/www/ente/apps/photos +cp -r apps/accounts/out /var/www/ente/apps/accounts +cp -r apps/auth/out /var/www/ente/apps/auth +cp -r apps/cast/out /var/www/ente/apps/cast +msg_ok "Built Web Applications" + +msg_info "Configuring Caddy" +cat </etc/caddy/Caddyfile +:3000 { + root * /var/www/ente/apps/photos + file_server + try_files {path} {path}.html /index.html +} +:3001 { + root * /var/www/ente/apps/accounts + file_server + try_files {path} {path}.html /index.html +} +:3002 { + root * /var/www/ente/apps/photos + file_server + try_files {path} {path}.html /index.html +} +:3003 { + root * /var/www/ente/apps/auth + file_server + try_files {path} {path}.html /index.html +} +:3004 { + root * /var/www/ente/apps/cast + file_server + try_files {path} {path}.html /index.html +} +EOF +systemctl reload caddy +msg_ok "Configured Caddy" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned"