diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 0f4d212..388533a 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -7,7 +7,7 @@ // When ran in a Proxmox CT, expose a folder mountpoint and symlink to it MOUNTPOINT/build/template/cache and tell Proxmox this use this folder for LXC images "label": "BuildIMG", "type": "shell", - "command": " export XZ_DEFAULTS='-T 0'; sudo ./distrobuilder build-lxc CT-Build/${input:Distro}.yaml -o image.variant=${input:BuildVariant} ;sudo chown $SUDO_USER:$SUDO_USER -R *.tar.xz ;rm -f meta.tar.xz; mv rootfs.tar.xz bin/${input:Distro}-${input:BuildVariant}.tar.xz", + "command": " export XZ_DEFAULTS='-T 0'; sudo ./distrobuilder build-lxc CT-Build/${input:Distro}.yaml -o image.variant=${input:BuildVariant} ;sudo chown $SUDO_USER:$SUDO_USER -R *.tar.xz ;rm -f meta.tar.xz; mv -f rootfs.tar.xz bin/${input:Distro}-${input:BuildVariant}.tar.xz", "problemMatcher": [], "group": { "kind": "build", diff --git a/CT-Build/Alpine.Jenkinsfile b/CT-Build/Alpine.Jenkinsfile index a4e3226..a9d3982 100644 --- a/CT-Build/Alpine.Jenkinsfile +++ b/CT-Build/Alpine.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": "gitea"},{"Variant": "nginx"},{"Variant": "ddns"},{"Variant": "transfersh"},{"Variant": "iscsi"},{"Variant": "z2mqtt"},{"Variant": "nodered"},{"Variant": "nodejs"},{"Variant": "nextcloud"},{"Variant": "mqtt"},{"Variant": "hass"},{"Variant": "mailbackup"},{"Variant": "elkarbackupALP"},{"Variant": "heimdall"},{"Variant": "vouchproxy"}]}') + pipelineSubmitContent: '{"Variants": [{"Variant": "minimal"},{"Variant": "default"},{"Variant": "gitea"},{"Variant": "nginx"},{"Variant": "ddns"},{"Variant": "transfersh"},{"Variant": "iscsi"},{"Variant": "z2mqtt"},{"Variant": "nodered"},{"Variant": "nodejs"},{"Variant": "nextcloud"},{"Variant": "mqtt"},{"Variant": "hass"},{"Variant": "mailbackup"},{"Variant": "elkarbackupALP"},{"Variant": "heimdall"},{"Variant": "vouchproxy"},{"Variant": "freshrss"}]}') } options { skipDefaultCheckout() diff --git a/CT-Build/Alpine.yaml b/CT-Build/Alpine.yaml index a088f94..c7bec0b 100644 --- a/CT-Build/Alpine.yaml +++ b/CT-Build/Alpine.yaml @@ -368,6 +368,13 @@ files: variants: - vouchproxy + #FileForFreshrss +- path: /opt/Setup + generator: copy + source: CT-Files/freshrss + variants: + - freshrss + packages: manager: apk update: true @@ -389,6 +396,7 @@ packages: - mailbackup - elkarbackupALP - heimdall + - freshrss #PKGS for Default - packages: @@ -598,6 +606,39 @@ packages: variants: - vouchproxy +#PKGS for FreshRSS + - packages: + - git + - php82 + - php82-fpm + - php82-curl + - php82-gmp + - php82-intl + - php82-mbstring + - php82-xml + - php82-zip + - php82-ctype + - php82-dom + - php82-fileinfo + - php82-iconv + - php82-json + - php82-opcache + - php82-openssl + - php82-phar + - php82-session + - php82-simplexml + - php82-xmlreader + - php82-xmlwriter + - php82-xml + - php82-tokenizer + - php82-zlib + - php82-pdo_mysql + #- php82-pdo_sqlite + action: install + variants: + - freshrss + + repositories: - name: /etc/apk/repositories url: |- @@ -670,6 +711,7 @@ actions: - mailbackup - elkarbackupALP - heimdall + - freshrss #Run provided init script - trigger: post-files @@ -691,6 +733,7 @@ actions: - elkarbackupALP - heimdall - vouchproxy + - freshrss #Move App update script for ProxmoxHelper/ProxMoxToolKit, if CT has this script - trigger: post-files diff --git a/CT-Files/freshrss/Configs/crontab b/CT-Files/freshrss/Configs/crontab new file mode 100644 index 0000000..3576610 --- /dev/null +++ b/CT-Files/freshrss/Configs/crontab @@ -0,0 +1 @@ +27,57 * * * * php82 /opt/freshrss/app/actualize_script.php 2>> /proc/1/fd/2 > /tmp/FreshRSS.log \ No newline at end of file diff --git a/CT-Files/freshrss/Configs/nginx.conf b/CT-Files/freshrss/Configs/nginx.conf new file mode 100644 index 0000000..01a0098 --- /dev/null +++ b/CT-Files/freshrss/Configs/nginx.conf @@ -0,0 +1,52 @@ +user nginx; +worker_processes auto; +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + +events { + worker_connections 1024; +} + +http { + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + server_tokens off; + client_body_buffer_size 10K; + client_header_buffer_size 1k; + client_max_body_size 64m; + large_client_header_buffers 4 4k; + server_names_hash_bucket_size 64; + root /usr/share/nginx/html; + include /etc/nginx/mime.types; + default_type application/octet-stream; + access_log off; + error_log /var/log/nginx/error.log; + #Server config for FreshRSS + server { + listen 80 default_server; + listen [::]:80 default_server; + server_name _; + root /opt/freshrss/p/; + index index.php index.html; + + location / { + try_files $uri $uri/ index.php; + + } + location ~ \.php$ { + include fastcgi_params; + fastcgi_pass unix:/run/php-fpm82/php-fpm.sock; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + set $path_info $fastcgi_path_info; + fastcgi_param PATH_INFO $path_info; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } + location ~ /\.ht { + deny all; + } + } +} \ No newline at end of file diff --git a/CT-Files/freshrss/Configs/php.conf b/CT-Files/freshrss/Configs/php.conf new file mode 100644 index 0000000..a785505 --- /dev/null +++ b/CT-Files/freshrss/Configs/php.conf @@ -0,0 +1,39 @@ +[freshrss] +user = nginx +group = nginx +listen = /run/php-fpm82/php-fpm.sock +listen.owner = nginx +listen.group = nginx +php_admin_value[disable_functions] = exec,passthru,system +php_admin_value[error_log] = /var/log/php-fpm.error.log +php_admin_value [date.timezone] = Europe/Amsterdam + +; OPCACHE SETTINGS +php_admin_value[opcache.memory_consumption] = 256 +php_admin_value[opcache.enable] = 0 +php_admin_value[opcache.interned_strings_buffer] = 32 +php_admin_value[opcache.max_accelerated_files] = 50000 +php_admin_value[opcache.max_wasted_percentage] = 5 +php_admin_value[opcache.revalidate_freq] = 0 +php_admin_value[opcache.validate_timestamps] = 1 + +; PERFORMANCE LIMITS +php_admin_value[max_input_vars] = 5000 +php_admin_value[upload_max_filesize] = 64M +php_admin_value[post_max_size] = 64M +php_admin_value[max_input_time] = 15 + +; SECURITY +php_admin_value[cgi.fix_pathinfo] = 0 +php_admin_value[allow_url_fopen] = 1 +php_admin_value[file_uploads] = On +php_admin_value[open_basedir] = /opt/freshrss:/run/php-fpm82/php-fpm.sock:/tmp +php_admin_value[session.use_strict_mode] = 1 +php_admin_value[session.cookie_httponly] = 1 + +pm = dynamic +pm.max_children = 5 +pm.start_servers = 2 +pm.min_spare_servers = 1 +pm.max_spare_servers = 3 +chdir = / \ No newline at end of file diff --git a/CT-Files/freshrss/Configs/phpTimezone.ini b/CT-Files/freshrss/Configs/phpTimezone.ini new file mode 100644 index 0000000..cb46e97 --- /dev/null +++ b/CT-Files/freshrss/Configs/phpTimezone.ini @@ -0,0 +1,2 @@ +[Date] +date.timezone = Europe/Amsterdam \ No newline at end of file diff --git a/CT-Files/freshrss/Scripts/Init.sh b/CT-Files/freshrss/Scripts/Init.sh new file mode 100644 index 0000000..10aa6b9 --- /dev/null +++ b/CT-Files/freshrss/Scripts/Init.sh @@ -0,0 +1,24 @@ +#!/bin/ash + +#Configure Nginx +rm -rf /etc/nginx/conf.d +mv /opt/Setup/Configs/nginx.conf /etc/nginx/nginx.conf + +#Configure Php-Fpm +rm -rf /etc/php82/php-fpm.d/* +mv /opt/Setup/Configs/php.conf /etc/php82/php-fpm.d/freshrss.conf +mv /opt/Setup/Configs/phpTimezone.ini /etc/php82/conf.d/04_date_timezone.ini + +#Configure Cron +mv /opt/Setup/Configs/crontab /etc/crontabs/nginx + +#Install freshrss +mkdir -p /opt/freshrss +wget https://github.com/FreshRSS/FreshRSS/tarball/latest -O /tmp/freshrss.tar.gz +tar -C /opt/freshrss -xzf /tmp/freshrss.tar.gz --strip 1 +chown -R nginx:nginx /opt/freshrss +rm /tmp/freshrss.tar.gz + +#Enable services on boot +rc-update add nginx +rc-update add php-fpm82 \ No newline at end of file diff --git a/Readme.md b/Readme.md index ff84f80..747a128 100644 --- a/Readme.md +++ b/Readme.md @@ -50,6 +50,7 @@ This can be done on a privileged Debian CT (make sure to enable the Fuse, Nestin | 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 | ## TODO **Begin original list** @@ -172,11 +173,16 @@ exit KERNEL=="ttyUSB[0-9]*", MODE="0666" KERNEL=="ttyACM[0-9]*", MODE="0666" ``` -#### Add for Sonoff Zigbee 3.0 USB (CC2652P + CP2102N) +#### Add for Sonoff Zigbee 3.0 Plus USB ZBDongel-P (CC2652P + CP2102N) ``` SUBSYSTEM=="tty", ACTION=="change", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="ttyACM-Zigbee" SUBSYSTEM=="tty", ACTION=="add", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", SYMLINK+="ttyACM-Zigbee" ``` +#### Add for Sonoff Zigbee 3.0 Plus USB ZBDongel-E (EFR32MG21) +``` +SUBSYSTEM=="tty", ACTION=="change", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d4", SYMLINK+="ttyACM-Zigbee" +SUBSYSTEM=="tty", ACTION=="add", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="55d4", SYMLINK+="ttyACM-Zigbee" +``` #### Add for Zigbee CC2531 USB ``` SUBSYSTEM=="tty", ACTION=="change", ATTRS{idVendor}=="0451", ATTRS{idProduct}=="16a8", SYMLINK+="ttyACM-Zigbee" @@ -246,6 +252,9 @@ lxc.mount.entry: /dev/ttyACM-Zwave dev/ttyACM-Zwave none bind,optional,create=fi * Default port 9090 * A script to setup another instance is located here: `/opt/AddVouchInstance.sh` +## freshrss +* Available on http://``:80 + ## elkarbackup **Alpine version recommended** 1. Edit the parameters in the FistRun script in the container `vi /opt/Setup/Scripts/FirstRun.sh`