Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 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
75 changes: 75 additions & 0 deletions ct/skylite-ux.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/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: bzumhagen
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
# Source: https://github.com/Wetzel402/Skylite-UX

APP="Skylite-UX"
var_tags="${var_tags:-family;productivity}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-8}"
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/skylite-ux ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi

if check_for_gh_release "skylite-ux" "Wetzel402/Skylite-UX"; then
msg_info "Stopping Service"
systemctl stop skylite-ux
msg_ok "Stopped Service"

msg_info "Backing up Data"
cp /opt/skylite-ux/.env /tmp/skylite-ux.env.backup
msg_ok "Backed up Data"

CLEAN_INSTALL=1 fetch_and_deploy_gh_release "skylite-ux" "Wetzel402/Skylite-UX" "tarball"

msg_info "Restoring Data"
cp /tmp/skylite-ux.env.backup /opt/skylite-ux/.env
rm -f /tmp/skylite-ux.env.backup
msg_ok "Restored Data"

msg_info "Building Skylite-UX"
cd /opt/skylite-ux
$STD npm ci
$STD npx prisma generate
$STD npm run build
msg_ok "Built Skylite-UX"

msg_info "Running Database Migrations"
cd /opt/skylite-ux
$STD npx prisma migrate deploy
msg_ok "Ran Database Migrations"

msg_info "Starting Service"
systemctl start skylite-ux
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
Comment thread
bzumhagen marked this conversation as resolved.

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}:3000${CL}"
44 changes: 44 additions & 0 deletions frontend/public/json/skylite-ux.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"name": "Skylite-UX",
"slug": "skylite-ux",
"categories": [
19
],
"date_created": "2026-02-06",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://github.com/Wetzel402/Skylite-UX",
"website": "https://github.com/Wetzel402/Skylite-UX",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons@main/webp/skylite-ux.webp",
"config_path": "/opt/skylite-ux/.env",
"description": "Skylite-UX is an open-source, self-hosted family management app with calendar, todos, shopping lists, and user management.",
"install_methods": [
{
"type": "default",
"script": "ct/skylite-ux.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 8,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Database credentials: `cat ~/skylite-ux.creds`",
"type": "info"
},
{
"text": "Build process requires ~4GB RAM. Runtime usage is much lower — RAM can be reduced after installation.",
"type": "info"
}
]
}
71 changes: 71 additions & 0 deletions install/skylite-ux-install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/usr/bin/env bash

# Copyright (c) 2021-2026 community-scripts ORG
# Author: bzumhagen
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
# Source: https://github.com/Wetzel402/Skylite-UX

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

msg_info "Installing Dependencies"
$STD apt install -y openssl
msg_ok "Installed Dependencies"

PG_VERSION="16" setup_postgresql
NODE_VERSION="20" setup_nodejs
PG_DB_NAME="skylite" PG_DB_USER="skylite" PG_DB_SCHEMA_PERMS="true" setup_postgresql_db
fetch_and_deploy_gh_release "skylite-ux" "Wetzel402/Skylite-UX" "tarball" "2026.2.2"

msg_info "Configuring skylite-ux"
cat <<EOF >/opt/skylite-ux/.env
DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@localhost:5432/${PG_DB_NAME}
NODE_ENV=production
HOST=0.0.0.0
NUXT_PUBLIC_TZ=Etc/UTC
NUXT_PUBLIC_LOG_LEVEL=warn
EOF
msg_ok "Configured skylite-ux"

msg_info "Building skylite-ux"
cd /opt/skylite-ux
$STD npm ci
$STD npx prisma generate
$STD npm run build
msg_ok "Built skylite-ux"

msg_info "Running Database Migrations"
cd /opt/skylite-ux
$STD npx prisma migrate deploy
msg_ok "Ran Database Migrations"

msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/skylite-ux.service
[Unit]
Description=Skylite-UX
After=network.target postgresql.service
Wants=postgresql.service

[Service]
Type=simple
User=root
WorkingDirectory=/opt/skylite-ux
EnvironmentFile=/opt/skylite-ux/.env
ExecStart=/usr/bin/node /opt/skylite-ux/.output/server/index.mjs
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now skylite-ux
msg_ok "Created Service"

motd_ssh
customize
cleanup_lxc