From d425174eab009f65b7bb28a32821a4a357149d24 Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Wed, 1 Jan 2025 22:07:48 +0100 Subject: [PATCH 1/9] Debian fixed error on poweroff or reboot command Fixed: ' Failed to connect to bus: No such file or directory' in debian when the container was powered off or rebooted by installing D-Bus --- CT-Build/Debian.yaml | 1 + Readme.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CT-Build/Debian.yaml b/CT-Build/Debian.yaml index 3a0b71b..c92c743 100644 --- a/CT-Build/Debian.yaml +++ b/CT-Build/Debian.yaml @@ -1254,6 +1254,7 @@ packages: - procps - unattended-upgrades - bash-completion + - dbus action: install #Basic/Default pkgs diff --git a/Readme.md b/Readme.md index 9fd7aa1..a53acf0 100644 --- a/Readme.md +++ b/Readme.md @@ -301,7 +301,7 @@ lvcreate --name --size G ``` * Create LVM-Thin Volume ``` -lvcreate --thin -n -V G / +vcreate -VG -T / -n ``` * Create ZFS Volume (Available @ /dev/``/``) ``` -- 2.49.1 From c767b2185643bb7e084f05d2b8d266dfcd0f62cc Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Sun, 5 Jan 2025 17:43:29 +0100 Subject: [PATCH 2/9] Added CT: Postgresql --- CT-Build/Debian.Jenkinsfile | 2 +- CT-Build/Debian.yaml | 39 +++++++++++++++++++ .../Configs/pgadmin-config_local.py | 22 +++++++++++ .../Configs/pgadmin-server-import.json | 17 ++++++++ .../Configs/pgadmin-user-preferences.json | 6 +++ CT-Files/postgresql/Configs/pgadmin-uwsgi.ini | 12 ++++++ CT-Files/postgresql/Configs/pgadmin.service | 16 ++++++++ CT-Files/postgresql/Configs/pgpassfile | 2 + CT-Files/postgresql/Scripts/FirstRun.sh | 35 +++++++++++++++++ CT-Files/postgresql/Scripts/Init.sh | 16 ++++++++ Readme.md | 5 +++ 11 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 CT-Files/postgresql/Configs/pgadmin-config_local.py create mode 100644 CT-Files/postgresql/Configs/pgadmin-server-import.json create mode 100644 CT-Files/postgresql/Configs/pgadmin-user-preferences.json create mode 100644 CT-Files/postgresql/Configs/pgadmin-uwsgi.ini create mode 100644 CT-Files/postgresql/Configs/pgadmin.service create mode 100644 CT-Files/postgresql/Configs/pgpassfile create mode 100644 CT-Files/postgresql/Scripts/FirstRun.sh create mode 100644 CT-Files/postgresql/Scripts/Init.sh diff --git a/CT-Build/Debian.Jenkinsfile b/CT-Build/Debian.Jenkinsfile index fc6de39..6a27d0d 100644 --- a/CT-Build/Debian.Jenkinsfile +++ b/CT-Build/Debian.Jenkinsfile @@ -7,7 +7,7 @@ pipeline { string defaultValue: '192.168.200.11', description: 'Proxy server for packages, when enabled', name: 'ProxyServer' booleanParam description: 'will disable use of proxy server', name: 'DisProxy' checkboxParameter(name: 'ImgVariantList', format: 'JSON', displayNodePath: "//Variants/Variant", valueNodePath: "//Variants/Variant", description: 'Select the variant(s) that should be build', - pipelineSubmitContent: '{"Variants": [{"Variant": "minimal"},{"Variant": "default"},{"Variant": "jenkinsbuilder"},{"Variant": "imgbuilder"},{"Variant": "jenkins"},{"Variant": "mysql"},{"Variant": "pihole"},{"Variant": "collabora"},{"Variant": "jellyfin"},{"Variant": "domoticz"},{"Variant": "omadaV3"},{"Variant": "docker"},{"Variant": "smb"},{"Variant": "x2go"},{"Variant": "aptcacherng"},{"Variant": "nfs"},{"Variant": "duplicati"},{"Variant": "fileshelter"},{"Variant": "esphome"}]}') + pipelineSubmitContent: '{"Variants": [{"Variant": "minimal"},{"Variant": "default"},{"Variant": "jenkinsbuilder"},{"Variant": "imgbuilder"},{"Variant": "jenkins"},{"Variant": "mysql"},{"Variant": "pihole"},{"Variant": "collabora"},{"Variant": "jellyfin"},{"Variant": "domoticz"},{"Variant": "omadaV3"},{"Variant": "docker"},{"Variant": "smb"},{"Variant": "x2go"},{"Variant": "aptcacherng"},{"Variant": "nfs"},{"Variant": "duplicati"},{"Variant": "fileshelter"},{"Variant": "esphome"},{"Variant": "postgresql"}]}') } options { skipDefaultCheckout() diff --git a/CT-Build/Debian.yaml b/CT-Build/Debian.yaml index c92c743..a952d7e 100644 --- a/CT-Build/Debian.yaml +++ b/CT-Build/Debian.yaml @@ -1092,6 +1092,7 @@ files: - mysql - pihole - docker + - postgresql #FilesForJenkinsVariant - path: /root/ReadMe @@ -1192,6 +1193,13 @@ files: variants: - esphome +#FileForPostgresql +- path: /opt/Setup + generator: copy + source: CT-Files/postgresql + variants: + - postgresql + packages: manager: apt update: true @@ -1216,6 +1224,7 @@ packages: - nfs - duplicati - fileshelter + - postgresql #Https Repo pkgs - packages: @@ -1238,6 +1247,7 @@ packages: - duplicati - fileshelter - esphome + - postgresql #Minimal pkgs - packages: @@ -1531,6 +1541,17 @@ packages: variants: - esphome +#postgresql pkgs + - packages: + - postgresql + - pgadmin4-server + - nano + - uwsgi + - uwsgi-plugin-python3 + action: install + variants: + - postgresql + repositories: - name: sources.list url: |- @@ -1609,6 +1630,15 @@ packages: variants: - fileshelter +#postgresql Repo + - name: postgresql.list + url: |- + deb [signed-by=/usr/share/keyrings/postgresql-keyring.gpg] https://apt.postgresql.org/pub/repos/apt {{ image.release }}-pgdg main + deb [signed-by=/usr/share/keyrings/pgadmin-keyring.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/{{ image.release }} pgadmin4 main + variants: + - postgresql + + actions: - trigger: post-unpack action: |- @@ -1664,6 +1694,7 @@ actions: - duplicati - fileshelter - esphome + - postgresql #Move App update script for ProxmoxHelper/ProxMoxToolKit, if CT has this script - trigger: post-files @@ -1783,6 +1814,14 @@ actions: variants: - fileshelter +#postgresql and pgadmin Repo key +- trigger: post-unpack + action: |- + #!/bin/sh + curl --retry 7 --retry-delay 5 -L -s https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor > /usr/share/keyrings/postgresql-keyring.gpg + curl --retry 7 --retry-delay 5 -L -s https://www.pgadmin.org/static/packages_pgadmin_org.pub | gpg --dearmor > /usr/share/keyrings/pgadmin-keyring.gpg + variants: + - postgresql mappings: architecture_map: debian \ No newline at end of file diff --git a/CT-Files/postgresql/Configs/pgadmin-config_local.py b/CT-Files/postgresql/Configs/pgadmin-config_local.py new file mode 100644 index 0000000..891579a --- /dev/null +++ b/CT-Files/postgresql/Configs/pgadmin-config_local.py @@ -0,0 +1,22 @@ +#pgAdmin Custom config + +########################################################################## +# Misc stuff +########################################################################## + +# Languages we support in the UI +LANGUAGES = { + 'en': 'English' +} + +########################################################################## +# External Database Settings +########################################################################## +CONFIG_DATABASE_URI = 'postgresql://pgadmin:DBPassword@localhost:5432/pgadmin' + +########################################################################## +# In server mode, SHARED_STORAGE settings +########################################################################## + +# Locations +SHARED_STORAGE = [{ 'name': 'Shared-Storage', 'path': '/var/lib/pgadmin/storage/shared', 'restricted_access': True}] \ No newline at end of file diff --git a/CT-Files/postgresql/Configs/pgadmin-server-import.json b/CT-Files/postgresql/Configs/pgadmin-server-import.json new file mode 100644 index 0000000..4ddbc9d --- /dev/null +++ b/CT-Files/postgresql/Configs/pgadmin-server-import.json @@ -0,0 +1,17 @@ +{ + "Servers": { + "1": { + "Name": "localhost", + "Group": "Servers", + "Host": "localhost", + "Port": 5432, + "MaintenanceDB": "postgres", + "Username": "postgres", + "ConnectionParameters": { + "sslmode": "prefer", + "passfile": "Shared-Storage:/pgpassfile" + }, + "Tags": [] + } + } +} diff --git a/CT-Files/postgresql/Configs/pgadmin-user-preferences.json b/CT-Files/postgresql/Configs/pgadmin-user-preferences.json new file mode 100644 index 0000000..03f6bd8 --- /dev/null +++ b/CT-Files/postgresql/Configs/pgadmin-user-preferences.json @@ -0,0 +1,6 @@ +{ + "preferences": + { + "misc:themes:theme": "system" + } +} \ No newline at end of file diff --git a/CT-Files/postgresql/Configs/pgadmin-uwsgi.ini b/CT-Files/postgresql/Configs/pgadmin-uwsgi.ini new file mode 100644 index 0000000..d8f1120 --- /dev/null +++ b/CT-Files/postgresql/Configs/pgadmin-uwsgi.ini @@ -0,0 +1,12 @@ +[uwsgi] +http-socket= :80 +chdir = /usr/pgadmin4/web/ +module = pgAdmin4:application +threads = 25 +processes = 1 +wsgi-file = pgAdmin4.wsgi +mount = /pgadmin=pgAdmin4:app +manage-script-name = true +chmod-socket = 660 +plugins = python3 +home = /usr/pgadmin4/venv \ No newline at end of file diff --git a/CT-Files/postgresql/Configs/pgadmin.service b/CT-Files/postgresql/Configs/pgadmin.service new file mode 100644 index 0000000..e65c14d --- /dev/null +++ b/CT-Files/postgresql/Configs/pgadmin.service @@ -0,0 +1,16 @@ +[Unit] +Description=pgAdmin uwsgi service + +[Service] +ExecStart=/bin/uwsgi-core \ + --ini /etc/uwsgi/apps-available/pgadmin.ini +User=pgadmin +Group=www-data +Restart=on-failure +KillSignal=SIGQUIT +Type=notify +StandardError=journal +NotifyAccess=all + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/CT-Files/postgresql/Configs/pgpassfile b/CT-Files/postgresql/Configs/pgpassfile new file mode 100644 index 0000000..51dbb9c --- /dev/null +++ b/CT-Files/postgresql/Configs/pgpassfile @@ -0,0 +1,2 @@ +localhost:5432:*:postgres:Password +127.0.0.1:5432:*:postgres:Password \ No newline at end of file diff --git a/CT-Files/postgresql/Scripts/FirstRun.sh b/CT-Files/postgresql/Scripts/FirstRun.sh new file mode 100644 index 0000000..e7746d7 --- /dev/null +++ b/CT-Files/postgresql/Scripts/FirstRun.sh @@ -0,0 +1,35 @@ +#!/bin/bash +read -p "Enter your e-mail for pgAdmin login: " PostgressAdminMail +read -p "Enter new password for pgAdmin and postgresql database admin: " -s NewPostgressPassword +echo +echo "Please wait..." + +#Configure Postgresql +su postgres -c "psql -c \"alter user postgres with password '$NewPostgressPassword';\"" + +#Configure pgAdmin +##Create pgadmin db for storing pgAdmin config +PGADMIN_DB_PASSWORD=$(dd bs=20 count=1 if=/dev/urandom | base64 | tr +/ _.) +su postgres -c "psql -c \"CREATE ROLE pgadmin WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT NOREPLICATION NOBYPASSRLS CONNECTION LIMIT 25 PASSWORD '$PGADMIN_DB_PASSWORD';\"" +su postgres -c "psql -c \"CREATE DATABASE pgadmin WITH OWNER = pgadmin ENCODING = 'UTF8' LOCALE_PROVIDER = 'libc' CONNECTION LIMIT = -1 IS_TEMPLATE = False;\"" +sed -i "s/DBPassword/$PGADMIN_DB_PASSWORD/" /usr/pgadmin4/web/config_local.py + +##Setup the pgAdmin base +export PGADMIN_SETUP_EMAIL=$PostgressAdminMail +export PGADMIN_SETUP_PASSWORD=$NewPostgressPassword +su -pc "/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py setup-db" pgadmin +systemctl restart pgadmin + +## add localhost postges server as connection is pgAdmin +sed -i "s/Password/$NewPostgressPassword/" /opt/Setup/Configs/pgpassfile +mv /opt/Setup/Configs/pgpassfile /var/lib/pgadmin/storage/shared/pgpassfile +chown pgadmin: /var/lib/pgadmin/storage/shared/pgpassfile +chmod 600 /var/lib/pgadmin/storage/shared/pgpassfile +/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py load-servers /opt/Setup/Configs/pgadmin-server-import.json --user $PostgressAdminMail + +## Set user preferences (i.e. set the theme to system) +/usr/pgadmin4/venv/bin/python3 /usr/pgadmin4/web/setup.py set-prefs $PostgressAdminMail --input-file /opt/Setup/Configs/pgadmin-user-preferences.json + +##Clean-up +rm /root/ReadMe /opt/Setup/Configs/pgadmin-server-import.json /opt/Setup/Configs/pgadmin-user-preferences.json + diff --git a/CT-Files/postgresql/Scripts/Init.sh b/CT-Files/postgresql/Scripts/Init.sh new file mode 100644 index 0000000..14ddbc8 --- /dev/null +++ b/CT-Files/postgresql/Scripts/Init.sh @@ -0,0 +1,16 @@ +#!/bin/sh +#Setup postgresql +printf "\n#User entries (Make sure to reload postgressql after updating this file) \n# TYPE DATABASE USER ADDRESS METHOD\n" >> /etc/postgresql/17/main/pg_hba.conf +sed -i "s|#listen_addresses = 'localhost'|listen_addresses = '*' |" /etc/postgresql/17/main/postgresql.conf + +#Setup pgadmin +adduser --system --shell /bin/false --ingroup www-data --disabled-password --disabled-login --home /var/lib/www/pgadmin pgadmin +mkdir -p /var/log/pgadmin /var/lib/pgadmin/storage/shared +chown pgadmin: /var/log/pgadmin /var/lib/pgadmin -R +mv /opt/Setup/Configs/pgadmin-uwsgi.ini /etc/uwsgi/apps-available/pgadmin.ini +mv /opt/Setup/Configs/pgadmin-config_local.py /usr/pgadmin4/web/config_local.py + +#Setup uwsgi service for pgadmin +mv /opt/Setup/Configs/pgadmin.service /lib/systemd/system/pgadmin.service +chmod +x /lib/systemd/system/pgadmin.service +setcap 'cap_net_bind_service=+ep' /bin/uwsgi-core \ No newline at end of file diff --git a/Readme.md b/Readme.md index a53acf0..e528ccf 100644 --- a/Readme.md +++ b/Readme.md @@ -35,6 +35,7 @@ This can be done on a privileged Debian CT (make sure to enable the Fuse, Nestin | duplicati | Debian | Duplicati backup software | | fileshelter | Debian | FileShelter file shareing software | | esphome | Debian | ESPHome software to manage wifi-MCUs| +| postgresql | Debian | PostgreSQL server with pgAdmin| | elkarbackupALP `(Deprecated, Requires PHP 7.4)`| Alpine | ElkarBackup rsyncsnapshot server | | gitea | Alpine | Gitea server | | nginx | Alpine | Nginx server for reverse-proxy use | @@ -274,6 +275,10 @@ lxc.mount.entry: /dev/ttyACM-Zwave dev/ttyACM-Zwave none bind,optional,create=fi ## esphome * Available on http://``:6052 +## postgresql +* Run the FistRun script in the container `ash /opt/Setup/Scripts/FirstRun.sh` +* After this pgAdmin is available on http://``:80, + ## uptimekuma * Available on http://``:80 -- 2.49.1 From 37cb093f306b27891743c2c88d4455764c81364a Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Sun, 5 Jan 2025 22:33:27 +0100 Subject: [PATCH 3/9] Added CT: Linkwarden --- CT-Build/Debian.Jenkinsfile | 2 +- CT-Build/Debian.yaml | 55 ++++++++++++++++++- CT-Files/linkwarden/Scripts/FirstRun.sh | 31 +++++++++++ CT-Files/linkwarden/Scripts/Init.sh | 32 +++++++++++ CT-Files/linkwarden/Scripts/PTKAppUpdate.sh | 3 + .../linkwarden/Scripts/Update-monolith.sh | 13 +++++ 6 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 CT-Files/linkwarden/Scripts/FirstRun.sh create mode 100644 CT-Files/linkwarden/Scripts/Init.sh create mode 100644 CT-Files/linkwarden/Scripts/PTKAppUpdate.sh create mode 100644 CT-Files/linkwarden/Scripts/Update-monolith.sh diff --git a/CT-Build/Debian.Jenkinsfile b/CT-Build/Debian.Jenkinsfile index 6a27d0d..3cb18b7 100644 --- a/CT-Build/Debian.Jenkinsfile +++ b/CT-Build/Debian.Jenkinsfile @@ -7,7 +7,7 @@ pipeline { string defaultValue: '192.168.200.11', description: 'Proxy server for packages, when enabled', name: 'ProxyServer' booleanParam description: 'will disable use of proxy server', name: 'DisProxy' checkboxParameter(name: 'ImgVariantList', format: 'JSON', displayNodePath: "//Variants/Variant", valueNodePath: "//Variants/Variant", description: 'Select the variant(s) that should be build', - pipelineSubmitContent: '{"Variants": [{"Variant": "minimal"},{"Variant": "default"},{"Variant": "jenkinsbuilder"},{"Variant": "imgbuilder"},{"Variant": "jenkins"},{"Variant": "mysql"},{"Variant": "pihole"},{"Variant": "collabora"},{"Variant": "jellyfin"},{"Variant": "domoticz"},{"Variant": "omadaV3"},{"Variant": "docker"},{"Variant": "smb"},{"Variant": "x2go"},{"Variant": "aptcacherng"},{"Variant": "nfs"},{"Variant": "duplicati"},{"Variant": "fileshelter"},{"Variant": "esphome"},{"Variant": "postgresql"}]}') + pipelineSubmitContent: '{"Variants": [{"Variant": "minimal"},{"Variant": "default"},{"Variant": "jenkinsbuilder"},{"Variant": "imgbuilder"},{"Variant": "jenkins"},{"Variant": "mysql"},{"Variant": "pihole"},{"Variant": "collabora"},{"Variant": "jellyfin"},{"Variant": "domoticz"},{"Variant": "omadaV3"},{"Variant": "docker"},{"Variant": "smb"},{"Variant": "x2go"},{"Variant": "aptcacherng"},{"Variant": "nfs"},{"Variant": "duplicati"},{"Variant": "fileshelter"},{"Variant": "esphome"},{"Variant": "postgresql"},{"Variant": "linkwarden"}]}') } options { skipDefaultCheckout() diff --git a/CT-Build/Debian.yaml b/CT-Build/Debian.yaml index a952d7e..6a87e90 100644 --- a/CT-Build/Debian.yaml +++ b/CT-Build/Debian.yaml @@ -1093,7 +1093,8 @@ files: - pihole - docker - postgresql - + - linkwarden + #FilesForJenkinsVariant - path: /root/ReadMe generator: dump @@ -1200,6 +1201,13 @@ files: variants: - postgresql +#FileForLinkwarden +- path: /opt/Setup + generator: copy + source: CT-Files/linkwarden + variants: + - linkwarden + packages: manager: apt update: true @@ -1225,6 +1233,7 @@ packages: - duplicati - fileshelter - postgresql + - linkwarden #Https Repo pkgs - packages: @@ -1248,6 +1257,7 @@ packages: - fileshelter - esphome - postgresql + - linkwarden #Minimal pkgs - packages: @@ -1552,6 +1562,22 @@ packages: variants: - postgresql + #Base PKGS NodeJS + - packages: + - nodejs + - sudo + - nano + action: install + variants: + - linkwarden + + #linkwarden pkgs + - packages: + - git + action: install + variants: + - linkwarden + repositories: - name: sources.list url: |- @@ -1676,6 +1702,22 @@ actions: # Cleanup temporary shadow paths rm /etc/*- +#Run init script for NodeJS CT +- trigger: post-files + action: |- + #!/bin/sh + #Install pm2 + npm install -g pm2 + #Add NodeJS `node` service user + adduser --system --shell /bin/bash --group --disabled-password --home /home/node node + mkdir /opt/node + chown node:node /opt/node + env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u node --hp /home/node + which pm2 + echo "alias pm2='sudo -u node pm2'" >> ~/.bashrc + variants: + - linkwarden + #Run provided init script - trigger: post-files action: |- @@ -1695,6 +1737,7 @@ actions: - fileshelter - esphome - postgresql + - linkwarden #Move App update script for ProxmoxHelper/ProxMoxToolKit, if CT has this script - trigger: post-files @@ -1823,5 +1866,15 @@ actions: variants: - postgresql +#NodeJS Repo key +- trigger: post-unpack + action: |- + #!/bin/sh + curl --retry 7 --retry-delay 5 -fsSL https://deb.nodesource.com/setup_lts.x |sed 's/gnupg/gpg/' > /tmp/setup-noderepo.sh + bash /tmp/setup-noderepo.sh + rm /tmp/setup-noderepo.sh + variants: + - linkwarden + mappings: architecture_map: debian \ No newline at end of file diff --git a/CT-Files/linkwarden/Scripts/FirstRun.sh b/CT-Files/linkwarden/Scripts/FirstRun.sh new file mode 100644 index 0000000..cdf6172 --- /dev/null +++ b/CT-Files/linkwarden/Scripts/FirstRun.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +ThisScriptConfigured=no +##Linkwarden +LinkwardenURL=http://localhost:3000 + +##DB +PostgresqlIP=127.0.0.1 +PostgresqlPort=5432 +PostgresqlUsername=linkwarden +PostgresqlDatabase=linkwarden +PostgresqlPassword= + +#Check if script is configured +if [ $ThisScriptConfigured = no ]; then + echo "Script is not configured" + exit +fi + +##Update config +sed -i "s#^DATABASE_URL=#DATABASE_URL=postgresql://$PostgresqlUsername:$PostgresqlPassword@$PostgresqlIP:$PostgresqlPort/$PostgresqlDatabase#" /opt/node/linkwarden/.env +sed -i "s/NEXTAUTH_SECRET=/NEXTAUTH_SECRET=$(dd bs=32 count=1 if=/dev/urandom | base64 | tr +/ _.)/" /opt/node/linkwarden/.env +sed -i "s#http://localhost:3000#$LinkwardenURL#" /opt/node/linkwarden/.env + +#Save PM2 statup config +sudo -u node bash << EOF +(cd /opt/node/linkwarden; yarn prisma migrate deploy) +pm2 install pm2-logrotate +pm2 start yarn --name Linkwarden --cwd /opt/node/linkwarden -- start +pm2 save +EOF \ No newline at end of file diff --git a/CT-Files/linkwarden/Scripts/Init.sh b/CT-Files/linkwarden/Scripts/Init.sh new file mode 100644 index 0000000..fb6b2b8 --- /dev/null +++ b/CT-Files/linkwarden/Scripts/Init.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +#Install monolith +CurmonolithVersion=$(curl -s https://api.github.com/repos/Y2Z/monolith/releases/latest | grep 'tag_name.*' | cut -d : -f 2,3 | tr -d \" |tr -d , |tr -d " " |tr -d : ) +curl -L -o /opt/monolith-gnu-linux-x86_64 https://github.com/Y2Z/monolith/releases/download/"$CurmonolithVersion"/monolith-gnu-linux-x86_64 +chmod +x /opt/monolith-gnu-linux-x86_64 +echo "$CurmonolithVersion" > /opt/monolith-Version +ln -s /opt/monolith-gnu-linux-x86_64 /usr/local/bin/monolith + +#Install linkwarden + +rm -rf /root/.cache +startpath=$(pwd) + +#Install Linkwarden +echo $(curl -s https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep 'tag_name.*' | cut -d : -f 2,3 | tr -d \" |tr -d , |tr -d " " |tr -d : ) > /opt/linkwarden-Version +npm install -g yarn +git clone https://github.com/linkwarden/linkwarden.git /opt/node/linkwarden +cd /opt/node/linkwarden +npx playwright install --with-deps chromium +rm -rf /root/.cache + +yarn install +yarn prisma generate +yarn build +yarn cache clean +apt clean + +cd $startpath +cp /opt/node/linkwarden/.env.sample /opt/node/linkwarden/.env +chown node: -R /opt/node/linkwarden +su -c "cd /opt/node/linkwarden; npx playwright install chromium" node \ No newline at end of file diff --git a/CT-Files/linkwarden/Scripts/PTKAppUpdate.sh b/CT-Files/linkwarden/Scripts/PTKAppUpdate.sh new file mode 100644 index 0000000..5184b77 --- /dev/null +++ b/CT-Files/linkwarden/Scripts/PTKAppUpdate.sh @@ -0,0 +1,3 @@ +#!/bin/sh +# Update script for updating apps with ProxmoxHelper/ProxMoxToolKit +ash /opt/Update-monlith.sh \ No newline at end of file diff --git a/CT-Files/linkwarden/Scripts/Update-monolith.sh b/CT-Files/linkwarden/Scripts/Update-monolith.sh new file mode 100644 index 0000000..cbada03 --- /dev/null +++ b/CT-Files/linkwarden/Scripts/Update-monolith.sh @@ -0,0 +1,13 @@ +#!/bin/bash +CurmonolithVersion=$(curl -s https://api.github.com/repos/Y2Z/monolith/releases/latest | grep 'tag_name.*' | cut -d : -f 2,3 | tr -d \" |tr -d , |tr -d " " |tr -d : ) + +if test "$CurmonolithVersion" = "$(cat /opt/monolith-Version)" ; then + echo ' echo 'Updating Monolith'.sh up-to-date' + exit +else + echo 'Updating Monolith' + mv /opt/monolith-gnu-linux-x86_64 /opt/monolith-gnu-linux-x86_64.old + curl -L -o /opt/monolith-gnu-linux-x86_64 https://github.com/Y2Z/monolith/releases/download/"$CurmonolithVersion"/monolith-gnu-linux-x86_64 + chmod +x /opt/monolith-gnu-linux-x86_64 + echo "$CurmonolithVersion" > /opt/monolith-Version +fi \ No newline at end of file -- 2.49.1 From 06de3b3c5b223dc2f230f9f74bcaec8bc1061247 Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Mon, 6 Jan 2025 18:56:12 +0100 Subject: [PATCH 4/9] CT Linkwarden: Added update scripts --- CT-Files/linkwarden/Scripts/Init.sh | 4 +++- CT-Files/linkwarden/Scripts/PTKAppUpdate.sh | 3 ++- .../linkwarden/Scripts/Update-linkwarden.sh | 22 +++++++++++++++++++ .../linkwarden/Scripts/Update-monolith.sh | 2 +- 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 CT-Files/linkwarden/Scripts/Update-linkwarden.sh diff --git a/CT-Files/linkwarden/Scripts/Init.sh b/CT-Files/linkwarden/Scripts/Init.sh index fb6b2b8..e2545fb 100644 --- a/CT-Files/linkwarden/Scripts/Init.sh +++ b/CT-Files/linkwarden/Scripts/Init.sh @@ -6,6 +6,7 @@ curl -L -o /opt/monolith-gnu-linux-x86_64 https://github.com/Y2Z/monolith/relea chmod +x /opt/monolith-gnu-linux-x86_64 echo "$CurmonolithVersion" > /opt/monolith-Version ln -s /opt/monolith-gnu-linux-x86_64 /usr/local/bin/monolith +mv /opt/Setup/Scripts/Update-monolith.sh /opt/Update-monolith.sh #Install linkwarden @@ -29,4 +30,5 @@ apt clean cd $startpath cp /opt/node/linkwarden/.env.sample /opt/node/linkwarden/.env chown node: -R /opt/node/linkwarden -su -c "cd /opt/node/linkwarden; npx playwright install chromium" node \ No newline at end of file +su -c "cd /opt/node/linkwarden; npx playwright install chromium" node +mv /opt/Setup/Scripts/Update-linkwarden.sh /opt/Update-linkwarden.sh \ No newline at end of file diff --git a/CT-Files/linkwarden/Scripts/PTKAppUpdate.sh b/CT-Files/linkwarden/Scripts/PTKAppUpdate.sh index 5184b77..f54c650 100644 --- a/CT-Files/linkwarden/Scripts/PTKAppUpdate.sh +++ b/CT-Files/linkwarden/Scripts/PTKAppUpdate.sh @@ -1,3 +1,4 @@ #!/bin/sh # Update script for updating apps with ProxmoxHelper/ProxMoxToolKit -ash /opt/Update-monlith.sh \ No newline at end of file +bash /opt/Update-monolith.sh +bash /opt/Update-linkwarden.sh \ No newline at end of file diff --git a/CT-Files/linkwarden/Scripts/Update-linkwarden.sh b/CT-Files/linkwarden/Scripts/Update-linkwarden.sh new file mode 100644 index 0000000..cbf0891 --- /dev/null +++ b/CT-Files/linkwarden/Scripts/Update-linkwarden.sh @@ -0,0 +1,22 @@ +#!/bin/bash +CurLinkwardenVersion=$(curl -s https://api.github.com/repos/Y2Z/monolith/releases/latest | grep 'tag_name.*' | cut -d : -f 2,3 | tr -d \" |tr -d , |tr -d " " |tr -d : ) + +if test "$CurLinkwardenVersion" = "$(cat /opt/linkwarden-Version)" ; then + echo 'Linkwarden is up-to-date' + exit +else + echo 'Updating Linkwarden' +sudo -u node bash << EOF + /usr/bin/pm2 stop Linkwarden + cd /opt/node/linkwarden + git pull + /usr/bin/yarn install + /usr/bin/yarn prisma generate + /usr/bin/yarn build + /usr/bin/yarn cache clean + /usr/bin/yarn prisma migrate deploy + /usr/bin/pm2 start Linkwarden + npx playwright install chromium +EOF + echo "$CurLinkwardenVersion" > /opt/linkwarden-Version +fi \ No newline at end of file diff --git a/CT-Files/linkwarden/Scripts/Update-monolith.sh b/CT-Files/linkwarden/Scripts/Update-monolith.sh index cbada03..4f3c324 100644 --- a/CT-Files/linkwarden/Scripts/Update-monolith.sh +++ b/CT-Files/linkwarden/Scripts/Update-monolith.sh @@ -2,7 +2,7 @@ CurmonolithVersion=$(curl -s https://api.github.com/repos/Y2Z/monolith/releases/latest | grep 'tag_name.*' | cut -d : -f 2,3 | tr -d \" |tr -d , |tr -d " " |tr -d : ) if test "$CurmonolithVersion" = "$(cat /opt/monolith-Version)" ; then - echo ' echo 'Updating Monolith'.sh up-to-date' + echo 'Monolith up-to-date' exit else echo 'Updating Monolith' -- 2.49.1 From f9ace95cda80d3eb698a5192327fb48e683839ce Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Mon, 6 Jan 2025 20:38:38 +0100 Subject: [PATCH 5/9] CT Linkwarden: Fixed linkwarden version url --- CT-Files/hass/Scripts/Init.sh | 23 +------------------ .../linkwarden/Scripts/Update-linkwarden.sh | 2 +- 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/CT-Files/hass/Scripts/Init.sh b/CT-Files/hass/Scripts/Init.sh index 0edcef1..b000bcd 100644 --- a/CT-Files/hass/Scripts/Init.sh +++ b/CT-Files/hass/Scripts/Init.sh @@ -8,28 +8,7 @@ adduser -h /opt/HomeAssistant/data -D -G hass -s /bin/sh hass chown -R hass:hass /opt/HomeAssistant sudo -u hass python3 -m venv /opt/HomeAssistant/srv -#Fix broken Pyton module (It will not install with pyton 3.12 on a Musl system) -wget https://codeload.github.com/rhasspy/webrtc-noise-gain/tar.gz/refs/tags/v1.2.3 -O /tmp/webrtc-noise-gain.tar.gz || exit 1 -tar -C /tmp -xzf /tmp/webrtc-noise-gain.tar.gz -patch /tmp/webrtc-noise-gain-1.2.3/webrtc-audio-processing/webrtc-audio-processing-1/rtc_base/system/file_wrapper.h << EOF ---- -+++ -@@ -13,6 +13,7 @@ - - #include - #include -+#include - - #include - - -EOF -chown hass: -R /tmp/webrtc-noise-gain-1.2.3 -sudo -u hass sh -c '. /opt/HomeAssistant/srv/bin/activate && pip install /tmp/webrtc-noise-gain-1.2.3' -rm -rf /tmp/webrtc-noise-gain.tar.gz /tmp/webrtc-noise-gain-1.2.3 -##End of fix (Remove when pyton module updates) - -sudo -u hass sh -c '. /opt/HomeAssistant/srv/bin/activate && pip install --upgrade pip && pip3 install wheel mutagen numpy mysqlclient && pip3 install homeassistant' +sudo -u hass sh -c '. /opt/HomeAssistant/srv/bin/activate && pip install --upgrade pip && pip3 install wheel mysqlclient && pip3 install homeassistant' #Install Home Assistant Community Store wget https://github.com/hacs/integration/releases/latest/download/hacs.zip -O /tmp/hacs.zip diff --git a/CT-Files/linkwarden/Scripts/Update-linkwarden.sh b/CT-Files/linkwarden/Scripts/Update-linkwarden.sh index cbf0891..b7b18ea 100644 --- a/CT-Files/linkwarden/Scripts/Update-linkwarden.sh +++ b/CT-Files/linkwarden/Scripts/Update-linkwarden.sh @@ -1,5 +1,5 @@ #!/bin/bash -CurLinkwardenVersion=$(curl -s https://api.github.com/repos/Y2Z/monolith/releases/latest | grep 'tag_name.*' | cut -d : -f 2,3 | tr -d \" |tr -d , |tr -d " " |tr -d : ) +CurLinkwardenVersion=$(curl -s https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep 'tag_name.*' | cut -d : -f 2,3 | tr -d \" |tr -d , |tr -d " " |tr -d : ) if test "$CurLinkwardenVersion" = "$(cat /opt/linkwarden-Version)" ; then echo 'Linkwarden is up-to-date' -- 2.49.1 From 0489103d06d8ee2b4430d27c5d58128542490828 Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Tue, 7 Jan 2025 00:24:04 +0100 Subject: [PATCH 6/9] CT imgbuilder: Added `umoci` package to support building Fedora images --- CT-Build/Debian.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/CT-Build/Debian.yaml b/CT-Build/Debian.yaml index 6a87e90..83005d0 100644 --- a/CT-Build/Debian.yaml +++ b/CT-Build/Debian.yaml @@ -1306,6 +1306,7 @@ packages: - fuse2fs - xz-utils - fuse + - umoci - rsync - debootstrap - gpg -- 2.49.1 From a25b2ab81fa53374aeb4c885ef429cd2565199ea Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Thu, 9 Jan 2025 19:11:23 +0100 Subject: [PATCH 7/9] CT Z2mqtt: Updated zigbee2mqtt install methode --- CT-Build/Alpine.yaml | 27 +-------------------------- CT-Files/hass/Scripts/Init.sh | 2 +- CT-Files/z2mqtt/Scripts/Init.sh | 13 +++++++------ Readme.md | 6 +++--- 4 files changed, 12 insertions(+), 36 deletions(-) diff --git a/CT-Build/Alpine.yaml b/CT-Build/Alpine.yaml index b3bacbd..bc65ccb 100644 --- a/CT-Build/Alpine.yaml +++ b/CT-Build/Alpine.yaml @@ -344,7 +344,7 @@ files: variants: - mqtt -#FileForMqtt +#FileForHass - path: /opt/Setup generator: copy source: CT-Files/hass @@ -508,31 +508,6 @@ packages: variants: - mqtt -#PKGS for Hass - - packages: - - git - - python3 - - py3-virtualenv - - py3-pip - - python3-dev - - ca-certificates - - libffi-dev - - openssl-dev - - nmap - - iputils - - build-base - - tzdata - - sudo - - jpeg-dev - - zlib-dev - - bash - - mariadb-dev - - eudev-dev - - ffmpeg-dev - - ffmpeg - action: install - variants: - - hass #PKGS for MailBackup - packages: diff --git a/CT-Files/hass/Scripts/Init.sh b/CT-Files/hass/Scripts/Init.sh index b000bcd..09c807c 100644 --- a/CT-Files/hass/Scripts/Init.sh +++ b/CT-Files/hass/Scripts/Init.sh @@ -8,7 +8,7 @@ adduser -h /opt/HomeAssistant/data -D -G hass -s /bin/sh hass chown -R hass:hass /opt/HomeAssistant sudo -u hass python3 -m venv /opt/HomeAssistant/srv -sudo -u hass sh -c '. /opt/HomeAssistant/srv/bin/activate && pip install --upgrade pip && pip3 install wheel mysqlclient && pip3 install homeassistant' +sudo -u hass sh -c '. /opt/HomeAssistant/srv/bin/activate && pip install --upgrade pip && pip3 install wheel isal zlib-ng mysqlclient && pip3 install homeassistant' #Install Home Assistant Community Store wget https://github.com/hacs/integration/releases/latest/download/hacs.zip -O /tmp/hacs.zip diff --git a/CT-Files/z2mqtt/Scripts/Init.sh b/CT-Files/z2mqtt/Scripts/Init.sh index 97fbab5..d921b91 100644 --- a/CT-Files/z2mqtt/Scripts/Init.sh +++ b/CT-Files/z2mqtt/Scripts/Init.sh @@ -1,14 +1,15 @@ #!/bin/ash +npm install -g pnpm #Run folowing commands as 'node' user sudo -u node ash << EOF #Install zigbee2mqtt -git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/node/zigbee2mqtt -npm --prefix /opt/node/zigbee2mqtt ci -npm --prefix /opt/node/zigbee2mqtt run build +git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/node/zigbee2mqtt +pnpm -C /opt/node/zigbee2mqtt i --frozen-lockfile +pnpm -C /opt/node/zigbee2mqtt run build ##Update config -sed -i -e '/port:/c\ port: \/dev\/ttyACM-Zigbee' /opt/node/zigbee2mqtt/data/configuration.yaml -printf "frontend:\n port: 5002" >> /opt/node/zigbee2mqtt/data/configuration.yaml +cp /opt/node/zigbee2mqtt/data/configuration.example.yaml /opt/node/zigbee2mqtt/data/configuration.yaml +sed -i -e '/# port:/c\# port: \/dev\/ttyACM-Zigbee' /opt/node/zigbee2mqtt/data/configuration.yaml #Install Z-Wave JS UI git clone https://github.com/zwave-js/zwave-js-ui /opt/node/ZwaveJsUi @@ -17,7 +18,7 @@ npm --prefix /opt/node/ZwaveJsUi run build #Save PM2 statup config pm2 install pm2-logrotate -pm2 start npm --name zigbee2mqtt --cwd /opt/node/zigbee2mqtt -- start +pm2 start pnpm --name zigbee2mqtt --cwd /opt/node/zigbee2mqtt -- start pm2 start npm --name ZwaveJsUi --cwd /opt/node/ZwaveJsUi -- start pm2 save pm2 kill diff --git a/Readme.md b/Readme.md index e528ccf..1cc2c3b 100644 --- a/Readme.md +++ b/Readme.md @@ -47,8 +47,8 @@ This can be done on a privileged Debian CT (make sure to enable the Fuse, Nestin | nodejs | Alpine | Basic nodejs install with pm2 | | nextcloud | Alpine | Nextcloud | | mqtt | Alpine | Mosquitto mqtt broker | -| hass `(Broken, Requires python 3.12)` | Alpine | HomeAssistant instance with HACS and mysql support | -| mailbackup `(Broken, Requires python 3.12)` | Alpine | Contains mail archive tools (MailBackup-sys) | +| hass `(Broken, Requires python 3.13)` | Alpine | HomeAssistant instance with HACS and mysql support | +| mailbackup | Alpine | Contains mail archive tools (MailBackup-sys) | | heimdall | Alpine | Heimdall, A application dashboard/launcher | | vouchproxy | Alpine | Vouch-proxy, A SSO solution for Nginx | | freshrss | Alpine | FreshRSS, a self-hosted RSS feed aggregator | @@ -204,7 +204,7 @@ lxc.cgroup2.devices.allow: c 188:* rwm lxc.mount.entry: /dev/ttyACM-Zigbee dev/ttyACM-Zigbee none bind,optional,create=file lxc.mount.entry: /dev/ttyACM-Zwave dev/ttyACM-Zwave none bind,optional,create=file ``` -* Zigbee2mqtt Available on http://``:5002 +* Zigbee2mqtt Available on http://``:8080 * Z-wave JS UI Available on http://``:8091 * in the Z-wave JS UI web ui set the Zwave serial port to /dev/ttyACM-Zwave * If a `Cannot lock port` error shows, please reboot the CT, if that does not fix it try rebooting the Proxmox server -- 2.49.1 From 6e59bf3e4d2fa9a96d8df600a718aa12682acfae Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Thu, 9 Jan 2025 19:20:48 +0100 Subject: [PATCH 8/9] Fixed accidentally removed package list for hass --- CT-Build/Alpine.yaml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/CT-Build/Alpine.yaml b/CT-Build/Alpine.yaml index bc65ccb..6dbae41 100644 --- a/CT-Build/Alpine.yaml +++ b/CT-Build/Alpine.yaml @@ -508,6 +508,31 @@ packages: variants: - mqtt +#PKGS for Hass + - packages: + - git + - python3 + - py3-virtualenv + - py3-pip + - python3-dev + - ca-certificates + - libffi-dev + - openssl-dev + - nmap + - iputils + - build-base + - tzdata + - sudo + - jpeg-dev + - zlib-dev + - bash + - mariadb-dev + - eudev-dev + - ffmpeg-dev + - ffmpeg + action: install + variants: + - hass #PKGS for MailBackup - packages: -- 2.49.1 From 371db590690fe35c8a006aeca40165632a10f7ca Mon Sep 17 00:00:00 2001 From: Bram Prieshof Date: Thu, 9 Jan 2025 20:41:30 +0100 Subject: [PATCH 9/9] Added linkwarden to the readme --- Readme.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Readme.md b/Readme.md index 1cc2c3b..52c4d72 100644 --- a/Readme.md +++ b/Readme.md @@ -36,6 +36,7 @@ This can be done on a privileged Debian CT (make sure to enable the Fuse, Nestin | fileshelter | Debian | FileShelter file shareing software | | esphome | Debian | ESPHome software to manage wifi-MCUs| | postgresql | Debian | PostgreSQL server with pgAdmin| +| linkwarden | Debian | inkwarden is an collaborative bookmark manager to collect, organize and preserve webpages.| | elkarbackupALP `(Deprecated, Requires PHP 7.4)`| Alpine | ElkarBackup rsyncsnapshot server | | gitea | Alpine | Gitea server | | nginx | Alpine | Nginx server for reverse-proxy use | @@ -279,6 +280,11 @@ lxc.mount.entry: /dev/ttyACM-Zwave dev/ttyACM-Zwave none bind,optional,create=fi * Run the FistRun script in the container `ash /opt/Setup/Scripts/FirstRun.sh` * After this pgAdmin is available on http://``:80, +## linkwarden +* Edit and run the FistRun script in the container `ash /opt/Setup/Scripts/FirstRun.sh` +* After this pgAdmin is available on http://``:80, + + ## uptimekuma * Available on http://``:80 -- 2.49.1