Select a Proxmox Helper Below
🔸 updated in the past 7 days [Changelog](https://github.com/tteck/Proxmox/blob/main/CHANGELOG.MD)
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**
```yaml
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](https://github.com/Weilbyte/PVEDiscordDark)
Run the following in the Proxmox Shell.
```yaml
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 OS VM
To create a new Proxmox Home Assistant OS VM, run the following in the Proxmox Shell
```yaml
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, If you're dissatisfied with the default settings, click on the VM, then on the **_Hardware_** tab and change the settings to what you desire. Once all changes have been made, **_Start_** the VM.
**Home Assistant Interface - IP:8123**
____________________________________________________________________________________________
Home Assistant Container LXC (Podman)
Podman Home Assistant Container LXC
With ZFS Filesystem Support
To create a new Proxmox Podman Home Assistant Container, run the following in the Proxmox Shell.
([What is Podman?](https://youtu.be/lkg5QJsoCCQ))
```yaml
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**
```yaml
/var/lib/containers/storage/volumes/hass_config/_data
```
⚙️ **To edit the HA configuration.yaml**
Run in the LXC console
```yaml
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
```yaml
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**)
```yaml
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
```yaml
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
```yaml
./update.sh
```
⚙️ **Initial Yacht Login**
**username**
```yaml
admin@yacht.local
```
**password**
```yaml
pass
```
____________________________________________________________________________________________
🔸Home Assistant Container LXC
Home Assistant Container LXC
With ZFS Filesystem Support
To create a new Proxmox Home Assistant Container, run the following in the Proxmox Shell.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/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**
**Portainer Interface - IP:9000**
⚙️ **Path to HA /config**
```yaml
/var/lib/docker/volumes/hass_config/_data
```
⚙️ **To Edit the HA configuration.yaml** (Recommend Using Webmin System Administration)
Run in the LXC console
```yaml
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
```yaml
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**)
```yaml
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
```yaml
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**](https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/update-menu.png)
Run in the LXC console
```yaml
./update
```
____________________________________________________________________________________________
ESPHome LXC
ESPHome LXC Container
To create a new Proxmox ESPHome LXC Container, run the following in the Proxmox Shell.
```yaml
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
```yaml
pip3 install esphome --upgrade
```
____________________________________________________________________________________________
Nginx Proxy Manager LXC
Nginx Proxy Manager LXC Container
To create a new Proxmox Nginx Proxy Manager LXC Container, run the following in the Proxmox Shell.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/npm_container.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.
```yaml
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**
```yaml
admin@example.com
```
**password**
```yaml
changeme
```
____________________________________________________________________________________________
MQTT LXC
MQTT LXC Container
To create a new Proxmox MQTT LXC Container, run the following in the Proxmox Shell.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/mqtt_container.sh)"
```
⚡ Default Settings: 512MiB RAM - 2GB Storage - 1vCPU ⚡
Mosquitto comes with a password file generating utility called mosquitto_passwd.
```yaml
sudo mosquitto_passwd -c /etc/mosquitto/passwd
```
Password: < password >
Create a configuration file for Mosquitto pointing to the password file we have just created.
```yaml
sudo nano /etc/mosquitto/conf.d/default.conf
```
This will open an empty file. Paste the following into it.
```yaml
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.
```yaml
sudo systemctl restart mosquitto
```
⚙️ **To Update MQTT:**
Run in the LXC console
```yaml
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.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/node-red_container.sh)"
```
⚡ Default Settings: 1GB RAM - 4GB Storage - 1vCPU ⚡
**Node-Red Interface - IP:1880**
⚙️ **To Restart Node-Red:**
Run in the LXC console
```yaml
node-red-restart
```
⚙️ **To Update Node-Red:**
Run in the LXC console (Restart after update)
```yaml
npm install -g --unsafe-perm node-red
```
⚙️ **To Install Node-Red Themes** ⚠️ **Backup your flows before running this script!!**
Run in the LXC console
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/misc/node-red-themes.sh)"
```
____________________________________________________________________________________________
🔸Mariadb LXC
Mariadb LXC Container
To create a new Proxmox Mariadb LXC Container, run the following in the Proxmox Shell.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/mariadb_container.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:
```yaml
nano /etc/mysql/my.cnf
```
Un-comment `port =3306`
Save and exit the editor with "Ctrl+O", "Enter" and "Ctrl+X".
```yaml
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:
```yaml
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.
```yaml
sudo mysql
```
Prompt will change to ```MariaDB [(none)]>```
Create a new local admin (Change the username and password to match your preferences)
```yaml
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password';
```
Give local admin root privileges (Change the username and password to match above)
```yaml
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:
```yaml
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:
```yaml
FLUSH PRIVILEGES;
```
Following this, exit the MariaDB shell:
```yaml
exit
```
Log in as the new database user you just created:
```yaml
mysql -u admin -p
```
Create a new database:
```yaml
CREATE DATABASE homeassistant;
```
Following this, exit the MariaDB shell:
```yaml
exit
```
⚠️ Reboot the lxc
Checking status.
```yaml
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
```yaml
apt update && apt upgrade -y
```
⚙️ [**Adminer**](https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/adminer.png) (formerly phpMinAdmin) is a full-featured database management tool
`http://your-mariadb-lxc-ip/adminer/`
____________________________________________________________________________________________
Zigbee2MQTT LXC
Zigbee2MQTT LXC Container
To create a new Proxmox Zigbee2MQTT LXC Container, run the following in the Proxmox Shell.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/zigbee2mqtt_container.sh)"
```
⚡ Default Settings: 1GB RAM - 4GB Storage - 2vCPU ⚡
⚙️ **Determine the location of your adapter**
Run in the LXC console
```yaml
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](https://www.zigbee2mqtt.io/guide/configuration/)**
Run in the LXC console
```yaml
nano /opt/zigbee2mqtt/data/configuration.yaml
```
Save and exit the editor with “Ctrl+O”, “Enter” and “Ctrl+X”
Example:
```yaml
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
```yaml
cd /opt/zigbee2mqtt
npm start
```
⚙️ **To update Zigbee2MQTT**
Run in the LXC console
```yaml
bash /opt/zigbee2mqtt/update.sh
```
⚙️ **Import Data From a Existing Zigbee2MQTT LXC to another Zigbee2MQTT LXC**
Run in the Proxmox Shell
```yaml
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.
```yaml
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 11 LXC Container
To create a new Proxmox Debian 11 (curl. sudo, auto login) LXC Container, run the following in the Proxmox Shell.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/debian11_container.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
```yaml
apt update && apt upgrade -y
```
____________________________________________________________________________________________
Ubuntu 21.10 LXC
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.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/ubuntu_container.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
```yaml
apt update && apt upgrade -y
```
____________________________________________________________________________________________
GamUntu LXC
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.
```yaml
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
```yaml
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.
```yaml
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
```yaml
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
```yaml
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.
```yaml
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
```yaml
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.
```yaml
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
```yaml
pihole -a -p
```
⚙️ **To Update Pi-hole:**
```yaml
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.
```yaml
bash -c "$(wget -qLO - https://raw.githubusercontent.com/tteck/Proxmox/main/ct/adguard_container.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**
```yaml
Update from the Adguard UI
```
__________________________________________________________________________________________
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**
`Leave Blank`
⚙️ **To Update MotionEye**
Run in the LXC console
```yaml
pip install motioneye --upgrade
```
____________________________________________________________________________________________
Webmin System Administration
Webmin System Administration
To Install Webmin System Administration [(Screenshot)](https://raw.githubusercontent.com/tteck/Proxmox/main/misc/images/file-manager.png), ⚠️ run the following in the LXC console.
```yaml
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**
```yaml
Update from the Webmin UI
```
⚙️ **To Uninstall Webmin**
```yaml
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)"
```
It builds from source, which takes time and resources. After the installation, resources can be set to Normal Settings. I've left most of the installation process viewable since the Rust install needs user input (requires a "enter" key press), and the lengthy time to complete the full installation.
⚡ Normal Settings: 512Mib RAM - 8GB Storage - 1vCPU ⚡
Be Patient, let the script do it's work. Hopefully, you'll eventually see "Successfully created a Vaultwarden LXC Container"
[Clients](https://bitwarden.com/download/)
**Vaultwarden Interface - IP:8000**
____________________________________________________________________________________________