mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			dab9200916
			...
			add-script
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					797b8d0490 | ||
| 
						 | 
					cb55b05ea8 | 
							
								
								
									
										6
									
								
								ct/headers/livebook
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ct/headers/livebook
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					    __    _            __                __  
 | 
				
			||||||
 | 
					   / /   (_)   _____  / /_  ____  ____  / /__
 | 
				
			||||||
 | 
					  / /   / / | / / _ \/ __ \/ __ \/ __ \/ //_/
 | 
				
			||||||
 | 
					 / /___/ /| |/ /  __/ /_/ / /_/ / /_/ / ,<   
 | 
				
			||||||
 | 
					/_____/_/ |___/\___/_.___/\____/\____/_/|_|  
 | 
				
			||||||
 | 
					                                             
 | 
				
			||||||
							
								
								
									
										64
									
								
								ct/livebook.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										64
									
								
								ct/livebook.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/refs/heads/main/misc/build.func)
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: dkuku
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/livebook-dev/livebook
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP="Livebook"
 | 
				
			||||||
 | 
					var_tags="${var_tags:-development}"
 | 
				
			||||||
 | 
					var_disk="${var_disk:-4}"
 | 
				
			||||||
 | 
					var_cpu="${var_cpu:-2}"
 | 
				
			||||||
 | 
					var_ram="${var_ram:-1024}"
 | 
				
			||||||
 | 
					var_os="${var_os:-ubuntu}"
 | 
				
			||||||
 | 
					var_version="${var_version:-24.04}"
 | 
				
			||||||
 | 
					var_unprivileged="${var_unprivileged:-1}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					header_info "$APP"
 | 
				
			||||||
 | 
					variables
 | 
				
			||||||
 | 
					color
 | 
				
			||||||
 | 
					catch_errors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function update_script() {
 | 
				
			||||||
 | 
					  header_info
 | 
				
			||||||
 | 
					  check_container_storage
 | 
				
			||||||
 | 
					  check_container_resources
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if [[ ! -f /opt/livebook/.mix/escripts/livebook ]]; then
 | 
				
			||||||
 | 
					    msg_error "No ${APP} Installation Found!"
 | 
				
			||||||
 | 
					    exit
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if check_for_gh_release "livebook" "livebook-dev/livebook"; then
 | 
				
			||||||
 | 
					    msg_info "Stopping Service"
 | 
				
			||||||
 | 
					    systemctl stop livebook
 | 
				
			||||||
 | 
					    msg_info "Stopped Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating Container"
 | 
				
			||||||
 | 
					    $STD apt update
 | 
				
			||||||
 | 
					    $STD apt upgrade -y
 | 
				
			||||||
 | 
					    msg_ok "Updated Container"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_info "Updating Livebook"
 | 
				
			||||||
 | 
					    source /opt/livebook/.env
 | 
				
			||||||
 | 
					    cd /opt/livebook
 | 
				
			||||||
 | 
					    $STD mix escript.install hex livebook --force
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    chown -R livebook:livebook /opt/livebook /data
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    msg_info "Starting Service"
 | 
				
			||||||
 | 
					    systemctl start livebook
 | 
				
			||||||
 | 
					    msg_info "Started Service"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    msg_ok "Updated Successfully!"
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  exit
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					start
 | 
				
			||||||
 | 
					build_container
 | 
				
			||||||
 | 
					description
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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}:8080${CL}"
 | 
				
			||||||
							
								
								
									
										40
									
								
								frontend/public/json/livebook.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								frontend/public/json/livebook.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "Livebook",
 | 
				
			||||||
 | 
					  "slug": "livebook",
 | 
				
			||||||
 | 
					  "categories": [
 | 
				
			||||||
 | 
					    20
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "date_created": "2025-10-30",
 | 
				
			||||||
 | 
					  "type": "ct",
 | 
				
			||||||
 | 
					  "updateable": true,
 | 
				
			||||||
 | 
					  "privileged": false,
 | 
				
			||||||
 | 
					  "interface_port": 8080,
 | 
				
			||||||
 | 
					  "documentation": "https://hexdocs.pm/livebook/readme.html",
 | 
				
			||||||
 | 
					  "config_path": null,
 | 
				
			||||||
 | 
					  "website": "https://livebook.dev",
 | 
				
			||||||
 | 
					  "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/livebook.webp",
 | 
				
			||||||
 | 
					  "description": "Elixir Livebook is an interactive, web-based notebook platform for Elixir that combines code, documentation, and visualizations in a single document. Similar to Jupyter notebooks, it allows developers to write and execute Elixir code in real-time, making it ideal for data exploration, prototyping, learning, and collaborative development. Livebook features rich markdown support, built-in charting capabilities, and seamless integration with the Elixir ecosystem.",
 | 
				
			||||||
 | 
					  "install_methods": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "type": "default",
 | 
				
			||||||
 | 
					      "script": "ct/livebook.sh",
 | 
				
			||||||
 | 
					      "resources": {
 | 
				
			||||||
 | 
					        "cpu": 1,
 | 
				
			||||||
 | 
					        "ram": 1024,
 | 
				
			||||||
 | 
					        "hdd": 4,
 | 
				
			||||||
 | 
					        "os": "Ubuntu",
 | 
				
			||||||
 | 
					        "version": "24.04"
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "default_credentials": {
 | 
				
			||||||
 | 
					    "username": null,
 | 
				
			||||||
 | 
					    "password": null
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "notes": [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      "text": "Show initial Livebook password: `cat ~/livebook.creds`",
 | 
				
			||||||
 | 
					      "type": "info"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										106
									
								
								install/livebook-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								install/livebook-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Copyright (c) 2021-2025 community-scripts ORG
 | 
				
			||||||
 | 
					# Author: dkuku
 | 
				
			||||||
 | 
					# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
				
			||||||
 | 
					# Source: https://github.com/livebook-dev/livebook
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 \
 | 
				
			||||||
 | 
					  build-essential \
 | 
				
			||||||
 | 
					  ca-certificates \
 | 
				
			||||||
 | 
					  cmake \
 | 
				
			||||||
 | 
					  git \
 | 
				
			||||||
 | 
					  libncurses5-dev
 | 
				
			||||||
 | 
					msg_ok "Installed Dependencies"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Creating livebook user"
 | 
				
			||||||
 | 
					mkdir -p /opt/livebook /data
 | 
				
			||||||
 | 
					export HOME=/opt/livebook
 | 
				
			||||||
 | 
					$STD adduser --system --group --home /opt/livebook --shell /bin/bash livebook
 | 
				
			||||||
 | 
					msg_ok "Created livebook user"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_warn "WARNING: This script will run an external installer from a third-party source (https://elixir-lang.org)."
 | 
				
			||||||
 | 
					msg_warn "The following code is NOT maintained or audited by our repository."
 | 
				
			||||||
 | 
					msg_warn "If you have any doubts or concerns, please review the installer code before proceeding:"
 | 
				
			||||||
 | 
					msg_custom "${TAB3}${GATEWAY}${BGN}${CL}" "\e[1;34m" "→  https://elixir-lang.org/install.sh"
 | 
				
			||||||
 | 
					echo
 | 
				
			||||||
 | 
					read -r -p "${TAB3}Do you want to continue? [y/N]: " CONFIRM
 | 
				
			||||||
 | 
					if [[ ! "$CONFIRM" =~ ^([yY][eE][sS]|[yY])$ ]]; then
 | 
				
			||||||
 | 
					  msg_error "Aborted by user. No changes have been made."
 | 
				
			||||||
 | 
					  exit 10
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					curl -fsSO https://elixir-lang.org/install.sh
 | 
				
			||||||
 | 
					$STD sh install.sh elixir@latest otp@latest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Setup Erlang and Elixir"
 | 
				
			||||||
 | 
					ERLANG_VERSION=$(ls /opt/livebook/.elixir-install/installs/otp/ | head -n1)
 | 
				
			||||||
 | 
					ELIXIR_VERSION=$(ls /opt/livebook/.elixir-install/installs/elixir/ | head -n1)
 | 
				
			||||||
 | 
					LIVEBOOK_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c16)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export ERLANG_BIN="/opt/livebook/.elixir-install/installs/otp/$ERLANG_VERSION/bin"
 | 
				
			||||||
 | 
					export ELIXIR_BIN="/opt/livebook/.elixir-install/installs/elixir/$ELIXIR_VERSION/bin"
 | 
				
			||||||
 | 
					export PATH="$ERLANG_BIN:$ELIXIR_BIN:$PATH"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$STD mix local.hex --force
 | 
				
			||||||
 | 
					$STD mix local.rebar --force
 | 
				
			||||||
 | 
					$STD mix escript.install hex livebook --force
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cat <<EOF >/opt/livebook/.env
 | 
				
			||||||
 | 
					export HOME=/opt/livebook
 | 
				
			||||||
 | 
					export ERLANG_VERSION=$ERLANG_VERSION
 | 
				
			||||||
 | 
					export ELIXIR_VERSION=$ELIXIR_VERSION
 | 
				
			||||||
 | 
					export LIVEBOOK_PORT=8080
 | 
				
			||||||
 | 
					export LIVEBOOK_IP="::"
 | 
				
			||||||
 | 
					export LIVEBOOK_HOME=/data
 | 
				
			||||||
 | 
					export LIVEBOOK_PASSWORD="$LIVEBOOK_PASSWORD"
 | 
				
			||||||
 | 
					export ESCRIPTS_BIN=/opt/livebook/.mix/escripts
 | 
				
			||||||
 | 
					export ERLANG_BIN="/opt/livebook/.elixir-install/installs/otp/\${ERLANG_VERSION}/bin"
 | 
				
			||||||
 | 
					export ELIXIR_BIN="/opt/livebook/.elixir-install/installs/elixir/\${ELIXIR_VERSION}/bin"
 | 
				
			||||||
 | 
					export PATH="\$ESCRIPTS_BIN:\$ERLANG_BIN:\$ELIXIR_BIN:\$PATH"
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  echo "Livebook-Credentials"
 | 
				
			||||||
 | 
					  echo "Livebook Password: $LIVEBOOK_PASSWORD"
 | 
				
			||||||
 | 
					} >>~/livebook.creds
 | 
				
			||||||
 | 
					msg_ok "Installed Erlang $ERLANG_VERSION and Elixir $ELIXIR_VERSION"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Installing Livebook"
 | 
				
			||||||
 | 
					cat <<EOF >/etc/systemd/system/livebook.service
 | 
				
			||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Livebook
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					Type=exec
 | 
				
			||||||
 | 
					User=livebook
 | 
				
			||||||
 | 
					Group=livebook
 | 
				
			||||||
 | 
					WorkingDirectory=/data
 | 
				
			||||||
 | 
					EnvironmentFile=-/opt/livebook/.env
 | 
				
			||||||
 | 
					ExecStart=/bin/bash -c 'source /opt/livebook/.env && cd /opt/livebook && livebook server'
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					RestartSec=5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					chown -R livebook:livebook /opt/livebook /data
 | 
				
			||||||
 | 
					systemctl enable -q --now livebook
 | 
				
			||||||
 | 
					msg_ok "Installed Livebook"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					motd_ssh
 | 
				
			||||||
 | 
					customize
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					msg_info "Cleaning Up"
 | 
				
			||||||
 | 
					$STD apt autoremove -y
 | 
				
			||||||
 | 
					$STD apt autoclean -y
 | 
				
			||||||
 | 
					$STD apt clean -y
 | 
				
			||||||
 | 
					msg_ok "Cleaned Up"
 | 
				
			||||||
		Reference in New Issue
	
	Block a user