Proxmox-scripts/README.md
2022-03-01 17:36:59 -05:00

30 KiB

Select a Proxmox Helper Below

🔸 updated in the past 7 days Changelog

Proxmox VE 7 Post Install

Proxmox VE 7 Post Install

This script will Disable the Enterprise Repo, Add & Enable the No-Subscription Repo, Add & Disable Test Repo (repo's can be enabled/disabled via the UI in Repositories) and attempt the No-Nag fix.

Run the following in the Proxmox Shell. ⚠️ PVE7 ONLY

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/post_install.sh)"

It's recommended to update Proxmox after running this script, before adding any VM/CT.


Proxmox Dark Theme

Proxmox Discord Dark Theme

A dark theme for the Proxmox Web UI by Weilbyte

Run the following in the Proxmox Shell.

bash <(curl -s https://raw.githubusercontent.com/Weilbyte/PVEDiscordDark/master/PVEDiscordDark.sh ) install

To uninstall the theme, simply run the script with the uninstall command.


Home Assistant OS VM

@home-assistant

Home Assistant OS VM

To create a new Proxmox Home Assistant OS VM, run the following in the Proxmox Shell

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/vm/haos_vm.sh)"

Default Settings: 4GB RAM - 32GB Storage - 2vCPU

After the script completes, click on the VM, then on the Summary tab to find the VM IP.

Home Assistant Interface - IP:8123


Home Assistant Container LXC (Podman)

@home-assistant

Podman Home Assistant Container LXC

To create a new Proxmox Podman Home Assistant Container, run the following in the Proxmox Shell.

(What is Podman?)

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/podman_ha_container.sh)"

Default Settings: 2GB RAM - 8GB Storage - 2vCPU

After the script completes, If you're dissatisfied with the default settings, click on the LXC, then on the Resources tab and change the settings to what you desire. Changes are immediate.

Home Assistant Interface - IP:8123

Yacht Interface - IP:8000

⚙️ Path to HA /config

/var/lib/containers/storage/volumes/hass_config/_data

⚙️ To edit the HA configuration.yaml

Run in the LXC console

nano /var/lib/containers/storage/volumes/hass_config/_data/configuration.yaml

Save and exit the editor with “Ctrl+O”, “Enter” and “Ctrl+X”

⚙️ Import Data From a Existing Home Assistant LXC to a Podman Home Assistant LXC

Run in the Proxmox Shell

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/ha-copy-data-podman.sh)"

⚙️ To allow USB device passthrough:

Run in the Proxmox Shell. (replace 106 with your LXC ID)

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/usb-passthrough.sh)" -s 106

Reboot the LXC to apply the changes

⚙️ To Install HACS:

Run in the LXC console

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/podman_hacs.sh)"

After install, reboot Home Assistant and clear browser cache then Add HACS integration.

⚙️ To Update Home Assistant:

Run in the LXC console

./update.sh

⚙️ Initial Yacht Login

username

admin@yacht.local

password

pass

Home Assistant Container LXC

Docker Logos | Docker @home-assistantGitHub - portainer/portainer-docs: Portainer documentation

Home Assistant Container LXC

With ZFS Filesystem Support

To create a new Proxmox Home Assistant Container, run the following in the Proxmox Shell.
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/homeassistant.sh)"

Default Settings: 2GB RAM - 8GB Storage - 2vCPU

After the script completes, If you're dissatisfied with the default settings, click on the LXC, then on the Resources tab and change the settings to what you desire. Changes are immediate.

Home Assistant Interface - IP:8123

Portainer Interface - IP:9000

⚙️ Path to HA /config

/var/lib/docker/volumes/hass_config/_data

⚙️ To Edit the HA configuration.yaml (Recommend Using Webmin System Administration)

Run in the LXC console

nano /var/lib/docker/volumes/hass_config/_data/configuration.yaml

Save and exit the editor with “Ctrl+O”, “Enter” and “Ctrl+X”

⚙️ Import Data From a Existing Home Assistant LXC to another Home Assistant LXC

Run in the Proxmox Shell

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/ha-copy-data.sh)"

⚙️ To Allow USB Device Passthrough:

Run in the Proxmox Shell. (replace 106 with your LXC ID)

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/usb-passthrough.sh)" -s 106

Reboot the LXC to apply the changes

⚙️ To Install HACS:

Run in the LXC console

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/hacs.sh)"

After install, reboot Home Assistant and clear browser cache then Add HACS integration.

⚙️ Update Menu

Run in the LXC console

./update

⚙️ Migrate to the latest Update Menu

Run in the LXC console

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/latest-update-menu.sh)"

ESPHome LXC

ESPHome LXC Container

To create a new Proxmox ESPHome LXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/esphome_container.sh)"

Default Settings: 1GB RAM - 4GB Storage - 2vCPU

ESPHome Interface - IP:6052

⚙️ To Update ESPHome

Run in the LXC console

pip3 install esphome --upgrade

🔸Nginx Proxy Manager LXC

hero

Nginx Proxy Manager LXC Container

To create a new Proxmox Nginx Proxy Manager LXC Container, run the following in the Proxmox Shell.

 bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/nginx-proxy-manager.sh)"

Default Settings: 1GB RAM - 3GB Storage - 1vCPU


Forward port 80 and 443 from your router to your Nginx Proxy Manager LXC IP.

Add the following to your configuration.yaml in Home Assistant.

 http:
  use_x_forwarded_for: true
  trusted_proxies:
    - 192.168.100.27 ###(Nginx Proxy Manager LXC IP)###

Nginx Proxy Manager Interface - IP:81

⚙️ Initial Login

username

admin@example.com

password

changeme

⚙️ To Update Nginx Proxy Manager

Run in the LXC console

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/npm_update.sh)"

MQTT LXC

MQTT LXC Container

To create a new Proxmox MQTT LXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/mqtt.sh)"

Default Settings: 512MiB RAM - 2GB Storage - 1vCPU

Mosquitto comes with a password file generating utility called mosquitto_passwd.

sudo mosquitto_passwd -c /etc/mosquitto/passwd <usr>

Password: < password >

Create a configuration file for Mosquitto pointing to the password file we have just created.

sudo nano /etc/mosquitto/conf.d/default.conf

This will open an empty file. Paste the following into it.

allow_anonymous false
persistence true
password_file /etc/mosquitto/passwd
listener 1883

Save and exit the text editor with "Ctrl+O", "Enter" and "Ctrl+X".

Now restart Mosquitto server.

sudo systemctl restart mosquitto

⚙️ To Update MQTT:

Run in the LXC console

apt update && apt upgrade -y

Node-Red LXC

Node-Red LXC Container

To create a new Proxmox Node-RED LXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/node-red.sh)"

Default Settings: 1GB RAM - 4GB Storage - 1vCPU

Node-Red Interface - IP:1880

⚙️ To Restart Node-Red:

Run in the LXC console

node-red-restart

⚙️ To Update Node-Red:

Run in the LXC console (Restart after update)

npm install -g --unsafe-perm node-red

⚙️ To Install Node-Red Themes ⚠️ Backup your flows before running this script!!

Run in the LXC console

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/node-red-themes.sh)"

Mariadb LXC

MariaDB

Mariadb LXC Container

To create a new Proxmox Mariadb LXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/mariadb.sh)"

Default Settings: 1GB RAM - 4GB Storage - 1vCPU

To enable MariaDB to listen to remote connections, you need to edit your defaults file. To do this, open the console in your MariaDB lxc:

nano /etc/mysql/my.cnf

Un-comment port =3306 Save and exit the editor with "Ctrl+O", "Enter" and "Ctrl+X".

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Comment bind-address = 127.0.0.1 Save and exit the editor with "Ctrl+O", "Enter" and "Ctrl+X".

For new MariaDB installations, the next step is to run the included security script. This script changes some of the less secure default options. We will use it to block remote root logins and to remove unused database users.

Run the security script:

sudo mysql_secure_installation

Enter current password for root (enter for none): enter

Switch to unix_socket authentication [Y/n] y

Change the root password? [Y/n] n

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] y

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

We will create a new account called admin with the same capabilities as the root account, but configured for password authentication.

sudo mysql

Prompt will change to MariaDB [(none)]>

Create a new local admin (Change the username and password to match your preferences)

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';

Give local admin root privileges (Change the username and password to match above)

GRANT ALL ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

Now, we'll give the user admin root privileges and password-based access that can connect from anywhere on your local area network (LAN), which has addresses in the subnet 192.168.100.0/24. This is an improvement because opening a MariaDB server up to the Internet and granting access to all hosts is bad practice.. Change the username, password and subnet to match your preferences:

GRANT ALL ON *.* TO 'admin'@'192.168.100.%' IDENTIFIED BY 'password' WITH GRANT OPTION;

Flush the privileges to ensure that they are saved and available in the current session:

FLUSH PRIVILEGES;

Following this, exit the MariaDB shell:

exit

Log in as the new database user you just created:

mysql -u admin -p

Create a new database:

CREATE DATABASE homeassistant;

Following this, exit the MariaDB shell:

exit

⚠️ Reboot the lxc

Checking status.

sudo systemctl status mariadb

Change the recorder: db_url: in your HA configuration.yaml

Example: mysql://admin:password@192.168.100.26:3306/homeassistant?charset=utf8mb4

⚙️ To Update Mariadb:

Run in the LXC console

apt update && apt upgrade -y

⚙️ Adminer (formerly phpMinAdmin) is a full-featured database management tool

http://your-mariadb-lxc-ip/adminer/


Zigbee2MQTT LXC

logo.png

Zigbee2MQTT LXC Container

To create a new Proxmox Zigbee2MQTT LXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/zigbee2mqtt.sh)"

Default Settings: 1GB RAM - 4GB Storage - 2vCPU

⚙️ Determine the location of your adapter

Run in the LXC console

ls -l /dev/serial/by-id

Example Output: lrwxrwxrwx 1 root root 13 Jun 19 17:30 usb-1a86_USB_Serial-if00-port0 -> ../../ttyUSB0

⚙️ ⚠️ Before you start Zigbee2MQTT you need to edit the configuration.yaml

Run in the LXC console

nano /opt/zigbee2mqtt/data/configuration.yaml

Save and exit the editor with “Ctrl+O”, “Enter” and “Ctrl+X”

Example:

frontend:
  port: 9442
homeassistant: true
permit_join: false
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://192.168.86.224:1883'
  user: usr
  password: pwd
  keepalive: 60
  reject_unauthorized: true
  version: 4
serial:
  port: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
  #adapter: deconz            #(uncomment for ConBee II)
advanced:
  pan_id: GENERATE
  network_key: GENERATE
  channel: 20

⚙️ Zigbee2MQTT can be started after completing the configuration

Run in the LXC console

cd /opt/zigbee2mqtt
npm start

⚙️ To update Zigbee2MQTT

Run in the LXC console

bash /opt/zigbee2mqtt/update.sh

⚙️ Import Data From a Existing Zigbee2MQTT LXC to another Zigbee2MQTT LXC

Run in the Proxmox Shell

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/z2m-copy-data.sh)"

Zwavejs2MQTT LXC

Zwavejs2MQTT LXC Container

To create a new Proxmox Zwavejs2MQTT LXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/zwavejs2mqtt_container.sh)"

Default Settings: 1GB RAM - 4GB Storage - 2vCPU

Zwavejs2MQTT Interface - IP:8091


Debian 11 LXC

Debian

Debian 11 LXC Container

To create a new Proxmox Debian 11 (curl. sudo, auto login) LXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/debian.sh)"

Default Settings: 512MiB RAM - 2GB Storage - 1vCPU

After the script completes, If you're dissatisfied with the default settings, click on the LXC, then on the Resources tab and change the settings to what you desire. Changes are immediate.

⚙️ To Update Debian 11

Run in the LXC console

apt update && apt upgrade -y

Ubuntu 21.10 LXC

Ubuntu

Ubuntu 21.10 LXC Container

To create a new Proxmox Ubuntu 21.10 (curl. sudo, auto login) LXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/ubuntu.sh)"

Default Settings: 512MiB RAM - 2GB Storage - 1vCPU

After the script completes, If you're dissatisfied with the default settings, click on the LXC, then on the Resources tab and change the settings to what you desire. Changes are immediate.

⚙️ To Update Ubuntu 21.10

Run in the LXC console

apt update && apt upgrade -y

GamUntu LXC

GamUntu

GamUntu LXC Container

GamUntu is Ubuntu 21.10, Docker, Docker Compose, ZFS Support, USB Passthrough, Webmin System Administration and Hardware Acceleration all baked in!

To create a new Proxmox GamUntuLXC Container, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/gamuntu_container.sh)"

Default Settings: 2GB RAM - 8GB Storage - 2vCPU

After the script completes, If you're dissatisfied with the default settings, click on the LXC, then on the Resources tab and change the settings to what you desire. Changes are immediate.

⚙️ To Update GamUntu

Run in the LXC console

apt update && apt upgrade -y

Plex Media Server LXC

Plex Media Server LXC

With Hardware Acceleration Support

To create a new Proxmox Plex Media Server LXC, run the following in the Proxmox Shell.
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/plex_container.sh)"

Default Settings: 2GB RAM - 8GB Storage - 2vCPU

After the script completes, If you're dissatisfied with the default settings, click on the LXC, then on the Resources tab and change the settings to what you desire. Changes are immediate.

Plex Media Server Interface - IP:32400/web

⚙️ To Update Plex Media Server:

Run in the LXC console

apt update && apt upgrade -y

⚙️ Import Data From a Existing Plex Media Server LXC to another Plex Media Server LXC

Run in the Proxmox Shell

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/pms-copy-data.sh)"

Jellyfin Media Server LXC

Jellyfin Media Server LXC

To create a new Proxmox Jellyfin Media Server LXC, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/jellyfin_container.sh)"

Default Settings: 2GB RAM - 8GB Storage - 2vCPU

After the script completes, If you're dissatisfied with the default settings, click on the LXC, then on the Resources tab and change the settings to what you desire. Changes are immediate.

Jellyfin Media Server Interface - IP:8096

⚙️ To Update Jellyfin Media Server

Run in the LXC console

apt update && apt upgrade -y

Pi-hole LXC

Pi-hole LXC

To create a new Proxmox Pi-hole LXC, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/pihole_container.sh)"

Default Settings: 512MiB RAM - 2GB Storage - 1vCPU

⚙️ To set your password:

Run in the LXC console

pihole -a -p

⚙️ To Update Pi-hole:

Update from the Pi-hole UI

AdGuard Home LXC

AdGuard Home LXC

To create a new Proxmox AdGuard Home LXC, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/adguard.sh)"

Default Settings: 512MiB RAM - 2GB Storage - 1vCPU

AdGuard Home Setup Interface - IP:3000 (After Setup use only IP)

(For the Home Assistant Integration, use port 80 not 3000)

⚙️ To Update Adguard

Update from the Adguard UI

🔸Daemon Sync Server LXC

Daemon Sync Server LXC

Sync files from app to server, share photos & videos, back up your data and stay secure inside local network.

To create a new Proxmox Daemon Sync Server LXC, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/daemonsync.sh)"

Default Settings: 512MiB RAM - 8GB Storage - 1vCPU

Daemon Sync Server Interface - IP:8084

Search: DAEMON Sync in your favorite app store


MotionEye NVR LXC

MotionEye NVR LXC

To create a new Proxmox MotionEye NVR LXC, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/motioneye_container.sh)"

Default Settings: 2GB RAM - 8GB Storage - 2vCPU

After the script completes, If you're dissatisfied with the default settings, click on the LXC, then on the Resources tab and change the settings to what you desire. Changes are immediate.

MotionEye Interface - IP:8765

⚙️ Initial Login

username admin

password

⚙️ To Update MotionEye

Run in the LXC console

pip install motioneye --upgrade

Webmin System Administration

Webmin System Administration

To Install Webmin System Administration (Screenshot), ⚠️ run the following in the LXC console.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/webmin.sh)"

If you prefer to manage all aspects of your Proxmox LXC from a graphical interface instead of the command line interface, Webmin might be right for you.

Benefits include automatic daily security updates, backup and restore, file manager with editor, web control panel, and preconfigured system monitoring with optional email alerts.

Webmin Interface - https:// IP:10000 (https)

⚙️ Initial Login

username root

password root

⚙️ To Update Webmin

Update from the Webmin UI

⚙️ To Uninstall Webmin

bash /etc/webmin/uninstall.sh

🔸Vaultwarden LXC

Vaultwarden LXC

To create a new Proxmox Vaultwarden LXC, run the following in the Proxmox Shell.

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/vault_container.sh)"

⚠️Vaultwarden needs to be behind a proxy (Nginx Proxy Manager) to obtain HTTPS and to allow clients to connect.

It builds from source, which takes time and resources. After the installation, resources can be set to Normal Settings.

Expect 30+ minute install time.

Normal Settings: 512Mib RAM - 8GB Storage - 1vCPU

Clients

Vaultwarden Interface - IP:8000

⚙️ To Update Vaultwarden

Run in the LXC console

bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/vaultwarden-update.sh)"