-
-
Notifications
You must be signed in to change notification settings - Fork 134
Add snowshare #1063
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add snowshare #1063
Changes from 13 commits
b17aebe
abef124
2fe4119
21d595d
17c7791
50eaac6
c8b36f3
28b6a60
77a82c7
24ddf4f
a5ba34b
89a062b
89d5c09
477ae6c
a44c936
f8c397c
896299a
a39be23
8535e8b
21b7d27
24832bc
a5a59fc
300c235
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| #!/usr/bin/env bash | ||
| source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) | ||
|
|
||
| # Copyright (c) 2021-2025 community-scripts ORG | ||
| # Author: TuroYT | ||
| # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE | ||
| # Source: https://github.com/TuroYT/snowshare | ||
|
|
||
| APP="SnowShare" | ||
| var_tags="${var_tags:-file-sharing}" | ||
| var_cpu="${var_cpu:-1}" | ||
| var_ram="${var_ram:-1024}" | ||
| var_disk="${var_disk:-5}" | ||
| var_os="${var_os:-debian}" | ||
| var_version="${var_version:-13}" | ||
| var_unprivileged="${var_unprivileged:-1}" | ||
|
|
||
| header_info "$APP" | ||
|
|
||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| variables | ||
| color | ||
| catch_errors | ||
|
|
||
| function update_script() { | ||
| header_info | ||
| check_container_storage | ||
| check_container_resources | ||
| if [[ ! -d /opt/snowshare ]]; then | ||
| msg_error "No ${APP} Installation Found!" | ||
| exit | ||
| fi | ||
|
|
||
| if check_for_gh_release "snowshare" "TuroYT/snowshare"; then | ||
| msg_info "Updating ${APP} to v${RELEASE}" | ||
|
|
||
| systemctl stop snowshare | ||
TuroYT marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| cd /opt/ | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" | ||
| cd /opt/snowshare | ||
| npm ci | ||
| npx prisma generate | ||
| npm run build | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| systemctl start snowshare | ||
TuroYT marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| msg_ok "Updated ${APP}" | ||
| exit | ||
|
|
||
| else | ||
| msg_ok "No update required. ${APP} is already at v${RELEASE}." | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| 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}:3000${CL}" | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,35 @@ | ||
| { | ||
| "name": "SnowShare", | ||
| "slug": "snowshare", | ||
| "categories": [ | ||
| 11 | ||
| ], | ||
| "date_created": "2025-09-24", | ||
| "type": "ct", | ||
| "updateable": true, | ||
| "privileged": false, | ||
| "interface_port": 3000, | ||
| "documentation": "https://github.com/TuroYT/snowshare", | ||
| "config_path": "/opt/snowshare/.env", | ||
| "website": "https://github.com/TuroYT/snowshare", | ||
| "logo": "https://github.com/TuroYT/snowshare/raw/main/public/logo.svg", | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| "description": "A modern, secure file and link sharing platform built with Next.js, Prisma, and NextAuth. Share URLs, code snippets, and files with customizable expiration, privacy, and QR codes.", | ||
| "install_methods": [ | ||
| { | ||
| "type": "default", | ||
| "script": "ct/snowshare.sh", | ||
| "resources": { | ||
| "cpu": 1, | ||
| "ram": 1024, | ||
| "hdd": 5, | ||
| "os": "Debian", | ||
| "version": "13" | ||
| } | ||
| } | ||
| ], | ||
| "default_credentials": { | ||
| "username": null, | ||
| "password": null | ||
| }, | ||
| "notes": [] | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,110 @@ | ||
| #!/usr/bin/env bash | ||
|
|
||
| # Copyright (c) 2021-2025 community-scripts ORG | ||
| # Author: TuroYT | ||
| # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE | ||
|
|
||
| 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 \ | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| make \ | ||
| gnupg \ | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| ca-certificates | ||
|
|
||
| msg_ok "Installed Dependencies" | ||
|
|
||
| setup_nodejs | ||
TuroYT marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| msg_info "Setting up PostgreSQL Database" | ||
| DB_NAME=snowshare | ||
| DB_USER=snowshare | ||
| DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" | ||
| setup_postgresql | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| $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 "" >>~/snowshare.creds | ||
| echo -e "Database Username: $DB_USER" >>~/snowshare.creds | ||
| echo -e "Database Password: $DB_PASS" >>~/snowshare.creds | ||
| echo -e "Database Name: $DB_NAME" >>~/snowshare.creds | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| msg_ok "Set up PostgreSQL Database" | ||
|
|
||
| msg_info "Installing SnowShare (Patience)" | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| APP="snowshare" | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| cd /opt | ||
|
|
||
|
||
| fetch_and_deploy_gh_release "snowshare" "TuroYT/snowshare" | ||
|
|
||
| cd /opt/snowshare | ||
|
|
||
|
|
||
|
||
| $STD npm ci | ||
|
|
||
|
|
||
| echo "${RELEASE}" >/opt/${APP}_version.txt | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| cat <<EOF >/opt/snowshare/.env | ||
|
||
| DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME" | ||
| NEXTAUTH_URL="http://localhost:3000" | ||
| NEXTAUTH_SECRET="$(openssl rand -base64 32)" | ||
| ALLOW_SIGNUP=true | ||
| NODE_ENV=production | ||
| EOF | ||
|
|
||
| cd /opt/snowshare | ||
| $STD npx prisma generate | ||
| $STD npx prisma migrate deploy | ||
|
|
||
|
|
||
| cd /opt/snowshare | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| $STD npm run build | ||
|
|
||
|
|
||
| cat <<EOF >/etc/systemd/system/snowshare.service | ||
| [Unit] | ||
| Description=SnowShare - Modern File Sharing Platform | ||
| After=network.target postgresql.service | ||
| Requires=postgresql.service | ||
|
|
||
| [Service] | ||
| Type=simple | ||
| User=root | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| WorkingDirectory=/opt/snowshare | ||
| Environment=NODE_ENV=production | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| ExecStart=/usr/bin/npm start | ||
| Restart=on-failure | ||
| RestartSec=10 | ||
|
|
||
| [Install] | ||
| WantedBy=multi-user.target | ||
| EOF | ||
| systemctl enable -q --now snowshare.service | ||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| msg_ok "Installed SnowShare v${RELEASE}" | ||
|
|
||
| msg_info "Setting up Cleanup Cron Job" | ||
| cat <<EOF >/etc/cron.d/snowshare-cleanup | ||
| 0 2 * * * root cd /opt/snowshare && /usr/bin/npm run cleanup:expired >> /var/log/snowshare-cleanup.log 2>&1 | ||
| EOF | ||
| msg_ok "Set up Cleanup Cron Job" | ||
|
|
||
| motd_ssh | ||
TuroYT marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| customize | ||
|
|
||
| msg_info "Cleaning up" | ||
TuroYT marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| $STD apt -y autoremove | ||
| $STD apt -y autoclean | ||
| $STD apt -y clean | ||
|
|
||
TuroYT marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| msg_ok "Cleaned" | ||
Uh oh!
There was an error while loading. Please reload this page.