diff --git a/README.md b/README.md
index 7f69d0892..f4d233089 100644
--- a/README.md
+++ b/README.md
@@ -27,12 +27,22 @@ A Free Software Media System that puts you in control of managing and streaming
- Forked from : https://github.com/petersendev/hassio-addons
- Modifications : add smb and local disks mount
-### [Transmission NAS](transmission/)
+### [Transmission NAS](transmission_nas/)
The torrent client for Hass.io with OpenVPN support.
- Based on latest transmission
- Forked from : https://github.com/Alexwijn/hassio-addon-transmission
- Modifications : add smb and local disks mount
+### [Transmission](transmission/)
+The torrent client for Hass.io.
+- Based on linuxserver image
+
+### [nextcloud](nextcloud/)
+A Nextcloud container, brought to you by LinuxServer.io.
+- Based on linuxserver image
+- Forked from : https://github.com/haberda/hassio_addons
+- Modifications : update based on images numbering instead of "latest"
+
### [Doublecommander NAS](doublecommander/)
A free cross platform open source file manager with two panels side by side.
- Based on latest linuxserver image
diff --git a/nextcloud/Dockerfile b/nextcloud/Dockerfile
new file mode 100644
index 000000000..2650a7b78
--- /dev/null
+++ b/nextcloud/Dockerfile
@@ -0,0 +1,20 @@
+ARG BUILD_FROM
+
+FROM ${BUILD_FROM}
+
+ENV NEXTCLOUD_PATH="/data/config/www/nextcloud"
+
+# modify/copy files
+RUN sed -i "s|data|share/nextcloud|g" /etc/cont-init.d/*
+
+RUN sed -i "s|config|data/config|g" /etc/cont-init.d/*
+
+RUN sed -i "s|data|share/nextcloud|g" /etc/services.d/nginx/*
+
+RUN sed -i "s|config|data/config|g" /etc/services.d/nginx/*
+
+COPY root/ /
+
+RUN ["chmod", "+x", "/defaults/nextcloud-perms.sh"]
+
+VOLUME ["/share", "/ssl", "/data", "/media"]
diff --git a/nextcloud/README.md b/nextcloud/README.md
new file mode 100644
index 000000000..b97933945
--- /dev/null
+++ b/nextcloud/README.md
@@ -0,0 +1,32 @@
+[](https://nextcloud.com/)
+
+# Nextcloud
+
+Nextcloud Home Assistant add-on
+
+# How to use this add-on
+
+Install the add-on, choose your desired port, start.
+
+After the add-on is started proceed to: https://[ip]:[port] and follow the setup process.
+
+# How to add trusted domain
+Nextcloud requires a whitelist of trusted domains in order to access Nextcloud externally, or even internally from an address that is different from the domain it is initially assessed from. Normally this requires editing of a config file. If you have access to the add-on data storage (i.e. Supervised Installation) then the recommended method is to follow official documentation to add your domain.
+
+If you are running HASSOS and have no access to edit this file you can add your domain from the web interface through a console app that allows access to the 'occ' command line.
+
+To do this, log into the Nextcloud web interface as an admin user, click the top right user image icon to expand the menu. Select the Apps to go to the app installation page. On the app installation page install an app called 'OCC Web'.
+
+Once installed return to the main page and launch OCCWeb.
+
+When the console is displayed type:
+
+> config:system:get trusted_domains
+
+Warning: overwriting the domain you are currently using will make Nextcloud inaccessible and the add-on will have to be deleted and reinstalled. This will list the current trusted domains. The domains are numbered from 0 so if you have two domains that display the first is domain 0, the second is domain 1. To add another domain:
+
+> config:system:set trusted_domains 2 --value=my.domain.com
+
+Where the number 2 is the now new third domain position in the config file, and 'my.domain.com' is your domain. Type the first command again to see whether the new domain has indeed been added. If it has, you are done!
+
+Based on the linuxserver image
diff --git a/nextcloud/build.json b/nextcloud/build.json
new file mode 100644
index 000000000..68ef72dea
--- /dev/null
+++ b/nextcloud/build.json
@@ -0,0 +1,10 @@
+{
+ "squash": false,
+ "build_from": {
+ "aarch64": "linuxserver/nextcloud:arm64v8-20.0.3-ls110",
+ "amd64": "linuxserver/nextcloud-20.0.3-ls110",
+ "armhf": "linuxserver/nextcloud:arm32v7-20.0.3-ls110",
+ "armv7": "linuxserver/nextcloud:arm32v7-20.0.3-ls110"
+ },
+ "args": {}
+}
diff --git a/nextcloud/config.json b/nextcloud/config.json
new file mode 100644
index 000000000..376c875ce
--- /dev/null
+++ b/nextcloud/config.json
@@ -0,0 +1,32 @@
+{
+ "name": "Nextcloud",
+ "url": "https://github.com/alexbelgium/hassio_addons",
+ "version": "20.0.3-ls110",
+ "slug": "nextcloud",
+ "ingress": false,
+ "ingress_port": 0,
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7"
+ ],
+ "description": "Nextcloud for Home Assistant",
+ "startup": "system",
+ "boot": "manual",
+ "auto_uart": true,
+ "map": [
+ "share:rw",
+ "media:rw",
+ "ssl:rw"
+ ],
+ "options":{
+ },
+ "schema": {
+ },
+ "ports": {
+ "443/tcp": 8099,
+ "80/tcp": null
+ },
+ "webui": "https://[HOST]:[PORT:443]",
+ "panel_icon": "mdi:cloud"
+}
diff --git a/nextcloud/icon.png b/nextcloud/icon.png
new file mode 100644
index 000000000..e39902e1b
Binary files /dev/null and b/nextcloud/icon.png differ
diff --git a/nextcloud/logo.png b/nextcloud/logo.png
new file mode 100644
index 000000000..e39902e1b
Binary files /dev/null and b/nextcloud/logo.png differ
diff --git a/nextcloud/root/defaults/config.php b/nextcloud/root/defaults/config.php
new file mode 100644
index 000000000..367cad15d
--- /dev/null
+++ b/nextcloud/root/defaults/config.php
@@ -0,0 +1,6 @@
+ '\OC\Memcache\APCu',
+ 'datadirectory' => '/share/nextcloud',
+ );
+
diff --git a/nextcloud/root/defaults/default b/nextcloud/root/defaults/default
new file mode 100644
index 000000000..f17b71216
--- /dev/null
+++ b/nextcloud/root/defaults/default
@@ -0,0 +1,121 @@
+upstream php-handler {
+ server 127.0.0.1:9000;
+}
+server {
+ listen 80;
+ listen [::]:80;
+ server_name _;
+ return 301 https://$host$request_uri;
+}
+server {
+ listen 443 ssl http2;
+ listen [::]:443 ssl http2;
+ server_name _;
+ ssl_certificate /ssl/nextcloud/keys/cert.crt;
+ ssl_certificate_key /ssl/nextcloud/keys/cert.key;
+
+ # Add headers to serve security related headers
+ # Before enabling Strict-Transport-Security headers please read into this
+ # topic first.
+ #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
+ #
+ # WARNING: Only add the preload option once you read about
+ # the consequences in https://hstspreload.org/. This option
+ # will add the domain to a hardcoded list that is shipped
+ # in all major browsers and getting removed from this list
+ # could take several months.
+
+ add_header X-Content-Type-Options nosniff;
+ add_header X-XSS-Protection "1; mode=block";
+ add_header X-Robots-Tag none;
+ add_header X-Download-Options noopen;
+ add_header X-Frame-Options "SAMEORIGIN";
+ add_header X-Permitted-Cross-Domain-Policies none;
+ add_header Referrer-Policy no-referrer;
+ fastcgi_hide_header X-Powered-By;
+ root /data/config/www/nextcloud/;
+ # display real ip in nginx logs when connected through reverse proxy via docker network
+ set_real_ip_from 172.0.0.0/8;
+ real_ip_header X-Forwarded-For;
+ location = /robots.txt {
+ allow all;
+ log_not_found off;
+ access_log off;
+ }
+ location = /.well-known/carddav {
+ return 301 $scheme://$host:$server_port/remote.php/dav;
+ }
+ location = /.well-known/caldav {
+ return 301 $scheme://$host:$server_port/remote.php/dav;
+ }
+ location = /.well-known/webfinger {
+ return 301 $scheme://$host:$server_port/public.php?service=webfinger;
+ }
+ location = /.well-known/host-meta {
+ return 301 $scheme://$host:$server_port/public.php?service=host-meta;
+ }
+ location = /.well-known/host-meta.json {
+ return 301 $scheme://$host:$server_port/public.php?service=host-meta-json;
+ }
+ client_max_body_size 10G;
+ fastcgi_buffers 64 4K;
+ gzip on;
+ gzip_vary on;
+ gzip_comp_level 4;
+ gzip_min_length 256;
+ gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
+ gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
+ location / {
+ rewrite ^ /index.php;
+ }
+ location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
+ deny all;
+ }
+ location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
+ deny all;
+ }
+ location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy)\.php(?:$|\/) {
+ fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
+ set $path_info $fastcgi_path_info;
+ try_files $fastcgi_script_name =404;
+ include /etc/nginx/fastcgi_params;
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+ fastcgi_param PATH_INFO $path_info;
+ fastcgi_param HTTPS on;
+ fastcgi_param modHeadersAvailable true;
+ fastcgi_param front_controller_active true;
+ fastcgi_pass php-handler;
+ fastcgi_intercept_errors on;
+ fastcgi_request_buffering off;
+ }
+ location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
+ try_files $uri/ =404;
+ index index.php;
+ }
+ location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
+ try_files $uri /index.php$request_uri;
+ add_header Cache-Control "public, max-age=15778463";
+ # Add headers to serve security related headers
+ # Before enabling Strict-Transport-Security headers please read into this
+ # topic first.
+ #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
+ #
+ # WARNING: Only add the preload option once you read about
+ # the consequences in https://hstspreload.org/. This option
+ # will add the domain to a hardcoded list that is shipped
+ # in all major browsers and getting removed from this list
+ # could take several months.
+ add_header X-Content-Type-Options nosniff;
+ add_header X-XSS-Protection "1; mode=block";
+ add_header X-Robots-Tag none;
+ add_header X-Download-Options noopen;
+ add_header X-Frame-Options "SAMEORIGIN";
+ add_header X-Permitted-Cross-Domain-Policies none;
+ add_header Referrer-Policy no-referrer;
+ access_log off;
+ }
+ location ~ \.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {
+ try_files $uri /index.php$request_uri;
+ access_log off;
+ }
+}
diff --git a/nextcloud/root/defaults/index.html b/nextcloud/root/defaults/index.html
new file mode 100644
index 000000000..8351def0e
--- /dev/null
+++ b/nextcloud/root/defaults/index.html
@@ -0,0 +1,34 @@
+
+
+ Welcome to our server
+
+
+
+
+
Welcome to our server
+
The website is currently being setup under this address.
+
For help and support, please contact: me@example.com
+
+
+
diff --git a/nextcloud/root/defaults/nextcloud-perms.sh b/nextcloud/root/defaults/nextcloud-perms.sh
new file mode 100644
index 000000000..cf2f0b3b4
--- /dev/null
+++ b/nextcloud/root/defaults/nextcloud-perms.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+
+ocpath="${NEXTCLOUD_PATH}"
+htuser='abc'
+htgroup='abc'
+rootuser='root'
+
+printf "Creating possible missing Directories\n"
+mkdir -p $ocpath/data
+mkdir -p $ocpath/assets
+mkdir -p $ocpath/updater
+mkdir -p $ocpath/apps
+mkdir -p $ocpath/assets
+mkdir -p $ocpath/config
+mkdir -p $ocpath/data
+mkdir -p $ocpath/themes
+mkdir -p /data/config/nextcloud/config
+mkdir -p /data/config/nextcloud/data
+mkdir -p /data/config/www/nextcloud/occ
+mkdir -p /share/nextcloud
+mkdir -p /ssl/nextcloud/keys
+
+printf "chmod Files and Directories\n"
+#chmod -R 777 ${ocpath}
+find ${ocpath}/ -type f -exec chmod 0640 {} \;
+find ${ocpath}/ -type d -exec chmod 0750 {} \;
+
+#find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640
+#find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750
+
+printf "chown Directories\n"
+chown -R ${rootuser}:${htgroup} ${ocpath}/
+chown -R ${htuser}:${htgroup} ${ocpath}/apps/
+chown -R ${htuser}:${htgroup} ${ocpath}/assets/
+chown -R ${htuser}:${htgroup} ${ocpath}/config/
+chown -R ${htuser}:${htgroup} ${ocpath}/data/
+chown -R ${htuser}:${htgroup} ${ocpath}/themes/
+chown -R ${htuser}:${htgroup} ${ocpath}/updater/
+chown -R ${htuser}:${htgroup} /share/nextcloud
+chown -R ${htuser}:${htgroup} /ssl/nextcloud/keys
+
+chmod +x ${ocpath}/occ
+
+printf "chmod/chown .htaccess\n"
+if [ -f ${ocpath}/.htaccess ]
+ then
+ chmod 0644 ${ocpath}/.htaccess
+ chown ${rootuser}:${htgroup} ${ocpath}/.htaccess
+fi
+if [ -f ${ocpath}/data/.htaccess ]
+ then
+ chmod 0644 ${ocpath}/data/.htaccess
+ chown ${rootuser}:${htgroup} ${ocpath}/data/.htaccess
+fi
diff --git a/nextcloud/root/defaults/nginx.conf b/nextcloud/root/defaults/nginx.conf
new file mode 100644
index 000000000..9949edc82
--- /dev/null
+++ b/nextcloud/root/defaults/nginx.conf
@@ -0,0 +1,102 @@
+## Version 2018/08/16 - Changelog: https://github.com/linuxserver/docker-baseimage-alpine-nginx/commits/master/root/defaults/nginx.conf
+
+user abc;
+worker_processes 4;
+pid /run/nginx.pid;
+include /etc/nginx/modules/*.conf;
+
+events {
+ worker_connections 768;
+ # multi_accept on;
+}
+
+http {
+
+ ##
+ # Basic Settings
+ ##
+
+ sendfile on;
+ tcp_nopush on;
+ tcp_nodelay on;
+ keepalive_timeout 300;
+ types_hash_max_size 2048;
+ fastcgi_read_timeout 86400;
+ # server_tokens off;
+
+ # server_names_hash_bucket_size 64;
+ # server_name_in_redirect off;
+
+ client_max_body_size 0;
+
+ include /etc/nginx/mime.types;
+ default_type application/octet-stream;
+
+ ##
+ # Logging Settings
+ ##
+
+ access_log /data/config/log/nginx/access.log;
+ error_log /data/config/log/nginx/error.log;
+
+ ##
+ # Gzip Settings
+ ##
+
+ gzip on;
+ gzip_disable "msie6";
+
+ # gzip_vary on;
+ # gzip_proxied any;
+ # gzip_comp_level 6;
+ # gzip_buffers 16 8k;
+ # gzip_http_version 1.1;
+ # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
+
+ ##
+ # nginx-naxsi config
+ ##
+ # Uncomment it if you installed nginx-naxsi
+ ##
+
+ #include /etc/nginx/naxsi_core.rules;
+
+ ##
+ # nginx-passenger config
+ ##
+ # Uncomment it if you installed nginx-passenger
+ ##
+
+ #passenger_root /usr;
+ #passenger_ruby /usr/bin/ruby;
+
+ ##
+ # Virtual Host Configs
+ ##
+ include /etc/nginx/conf.d/*.conf;
+ include /data/config/nginx/site-confs/*;
+
+}
+
+#mail {
+# # See sample authentication script at:
+# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
+#
+# # auth_http localhost/auth.php;
+# # pop3_capabilities "TOP" "USER";
+# # imap_capabilities "IMAP4rev1" "UIDPLUS";
+#
+# server {
+# listen localhost:110;
+# protocol pop3;
+# proxy on;
+# }
+#
+# server {
+# listen localhost:143;
+# protocol imap;
+# proxy on;
+# }
+#}
+daemon off;
+
diff --git a/nextcloud/root/defaults/root b/nextcloud/root/defaults/root
new file mode 100644
index 000000000..7563168d1
--- /dev/null
+++ b/nextcloud/root/defaults/root
@@ -0,0 +1,9 @@
+# do daily/weekly/monthly maintenance
+# min hour day month weekday command
+*/15 * * * * run-parts /etc/periodic/15min
+0 * * * * run-parts /etc/periodic/hourly
+0 2 * * * run-parts /etc/periodic/daily
+0 3 * * 6 run-parts /etc/periodic/weekly
+0 5 1 * * run-parts /etc/periodic/monthly
+# nextcloud cron
+*/5 * * * * s6-setuidgid abc php7 -f /data/config/www/nextcloud/cron.php
diff --git a/nextcloud/root/etc/cont-init.d/10-adduser b/nextcloud/root/etc/cont-init.d/10-adduser
new file mode 100644
index 000000000..1013098f3
--- /dev/null
+++ b/nextcloud/root/etc/cont-init.d/10-adduser
@@ -0,0 +1,39 @@
+#!/usr/bin/with-contenv bash
+
+PUID=${PUID:-911}
+PGID=${PGID:-911}
+
+groupmod -o -g "$PGID" abc
+usermod -o -u "$PUID" abc
+mkdir -p /data/config
+mkdir -p /share/nextcloud
+echo '
+-------------------------------------
+ _ ()
+ | | ___ _ __
+ | | / __| | | / \
+ | | \__ \ | | | () |
+ |_| |___/ |_| \__/
+
+
+Brought to you by linuxserver.io
+-------------------------------------'
+if [[ -f /donate.txt ]]; then
+ echo '
+To support the app dev(s) visit:'
+ cat /donate.txt
+fi
+echo '
+To support LSIO projects visit:
+https://www.linuxserver.io/donate/
+-------------------------------------
+GID/UID
+-------------------------------------'
+echo "
+User uid: $(id -u abc)
+User gid: $(id -g abc)
+-------------------------------------
+"
+chown abc:abc /app
+chown abc:abc /data/config
+chown abc:abc /defaults
diff --git a/nextcloud/root/etc/cont-init.d/30-keygen b/nextcloud/root/etc/cont-init.d/30-keygen
new file mode 100644
index 000000000..66ba5f6ce
--- /dev/null
+++ b/nextcloud/root/etc/cont-init.d/30-keygen
@@ -0,0 +1,11 @@
+#!/usr/bin/with-contenv bash
+/defaults/nextcloud-perms.sh
+SUBJECT="/C=US/ST=CA/L=Carlsbad/O=Linuxserver.io/OU=LSIO Server/CN=*"
+if [[ -f /ssl/nextcloud/keys/cert.key && -f /ssl/nextcloud/keys/cert.crt ]]; then
+echo "using keys found in /ssl/nextcloud/keys"
+else
+echo "generating self-signed keys in /ssl/nextcloud/keys, you can replace these with your own keys if required"
+openssl req -new -x509 -days 3650 -nodes -out /ssl/nextcloud/keys/cert.crt -keyout /ssl/nextcloud/keys/cert.key -subj "$SUBJECT"
+fi
+
+
diff --git a/nextcloud/root/etc/cont-init.d/40-config b/nextcloud/root/etc/cont-init.d/40-config
new file mode 100644
index 000000000..a0f0660e3
--- /dev/null
+++ b/nextcloud/root/etc/cont-init.d/40-config
@@ -0,0 +1,8 @@
+#!/usr/bin/with-contenv bash
+
+#Â permissions
+chown abc:abc \
+ /data/config/nextcloud/config \
+ /data/config/nextcloud/data
+chown -R abc:abc \
+ /var/lib/nginx
diff --git a/nextcloud/root/etc/cont-init.d/50-install b/nextcloud/root/etc/cont-init.d/50-install
new file mode 100644
index 000000000..3f9473245
--- /dev/null
+++ b/nextcloud/root/etc/cont-init.d/50-install
@@ -0,0 +1,21 @@
+#!/usr/bin/with-contenv bash
+
+#Â create folders
+mkdir -p \
+ "${NEXTCLOUD_PATH}" \
+ /data/config/crontabs
+
+#Â install app
+if [ ! -e "${NEXTCLOUD_PATH}/index.php" ]; then
+ tar xf /app/nextcloud.tar.bz2 -C \
+ "${NEXTCLOUD_PATH}" --strip-components=1
+ chown abc:abc -R \
+ "${NEXTCLOUD_PATH}"
+ chmod +x "${NEXTCLOUD_PATH}/occ"
+fi
+
+#Â set cronjob
+[[ ! -f /data/config/crontabs/root ]] && \
+ cp /defaults/root /data/config/crontabs/root
+cp /data/config/crontabs/root /etc/crontabs/root
+
diff --git a/nextcloud/root/etc/cont-init.d/60-memcache b/nextcloud/root/etc/cont-init.d/60-memcache
new file mode 100644
index 000000000..91b1feea8
--- /dev/null
+++ b/nextcloud/root/etc/cont-init.d/60-memcache
@@ -0,0 +1,9 @@
+#!/usr/bin/with-contenv bash
+
+# copy config
+[[ ! -f /data/config/www/nextcloud/config/config.php ]] && \
+ cp /defaults/config.php /data/config/www/nextcloud/config/config.php
+
+#Â permissions
+chown abc:abc \
+ /data/config/www/nextcloud/config/config.php
diff --git a/nextcloud/root/etc/services.d/cron/run b/nextcloud/root/etc/services.d/cron/run
new file mode 100644
index 000000000..a1b27f4a7
--- /dev/null
+++ b/nextcloud/root/etc/services.d/cron/run
@@ -0,0 +1,3 @@
+#!/usr/bin/with-contenv bash
+
+/usr/sbin/crond -f -S -l 0 -c /etc/crontabs
diff --git a/transmission/Dockerfile b/transmission/Dockerfile
index 12187699c..193ff10cb 100644
--- a/transmission/Dockerfile
+++ b/transmission/Dockerfile
@@ -1,59 +1,7 @@
-ARG BUILD_FROM=hassioaddons/base:8.0.1
-# hadolint ignore=DL3006
-FROM ${BUILD_FROM}
+ARG BUILD_FROM
+FROM $BUILD_FROM
-# Copy root filesystem
-COPY rootfs /
+# MOFIFY DATA PATH
+RUN sed -i "s|config|data|g" /etc/services.d/transmission/run
-# Setup base
-RUN apk add --no-cache \
- coreutils \
- nginx \
- transmission-daemon \
- openvpn
-# Small hack needed for ingress support
-#
-# Transmission always uses "transmission" as a subdirectory in the URL, so the web interface can for instance be found at:
-#
-# http:///transmission/web/
-#
-# The same goes for the RPC API, which is exposed under /transmission/rpc. When using ingress, this is not the case however
-# and "transmission" directory is not part of the URL. So transmission is basically served under the root (/), e.g.:
-#
-# http://10.0.10.110:8123/api/hassio_ingress/rQEi5X4zJFTmZ82ghplDjsx2AoK3r2lqx0zZHHjZ69Q/
-#
-# As the web UI uses a relative path when resolving the RPC endpoint, it basically becomes:
-#
-# http://10.0.10.110:8123/api/hassio_ingress/rQEi5X4zJFTmZ82ghplDjsx2AoK3r2lqx0zZHHjZ69Q/../rpc
-#
-# which obviously is:
-#
-# http://10.0.10.110:8123/api/hassio_ingress
-#
-# This will not work. The sed statement below changes the way the RPC endpoint is determined by keeping the regular endpoint
-# when accessing transmission as usual, but stripping the relative part when using ingress.
-RUN sed -i 's|'"'"'\.\./rpc'"'"'|window.location.pathname.endsWith("/web/") ? "../rpc" : "rpc"|' /usr/share/transmission/web/javascript/remote.js
-
-# Build arugments
-ARG BUILD_ARCH
-ARG BUILD_DATE
-ARG BUILD_REF
-ARG BUILD_VERSION
-
-# Labels
-LABEL \
- io.hass.name="Transmission" \
- io.hass.description="The torrent client for Hass.io with OpenVPN support" \
- io.hass.arch="${BUILD_ARCH}" \
- io.hass.type="addon" \
- io.hass.version=${BUILD_VERSION} \
- maintainer="Pierrick Rouxel " \
- org.label-schema.description="The torrent client for Hass.io" \
- org.label-schema.build-date=${BUILD_DATE} \
- org.label-schema.name="Transmission" \
- org.label-schema.schema-version="1.0" \
- org.label-schema.url="https://github.com/pierrickrouxel" \
- org.label-schema.usage="https://github.com/pierrickrouxel/hassio-addon-transmission/tree/master/README.md" \
- org.label-schema.vcs-ref=${BUILD_REF} \
- org.label-schema.vcs-url="https://github.com/pierrickrouxel" \
- org.label-schema.vendor="Community Hass.io Addons"
+VOLUME [ "/data" ]
diff --git a/transmission/README.md b/transmission/README.md
new file mode 100644
index 000000000..00d20ca88
--- /dev/null
+++ b/transmission/README.md
@@ -0,0 +1,27 @@
+# Hassio Add-ons by alexbelgium: Transmission
+
+## About
+
+Transmission is designed for easy, powerful use. Transmission has the features you want from a BitTorrent client: encryption, a web interface, peer exchange, magnet links, DHT, µTP, UPnP and NAT-PMP port forwarding, webseed support, watch directories, tracker editing, global and per-torrent speed limits, and more.
+
+This addon is based on the [docker image](https://github.com/linuxserver/transmission) from linuxserver.io.
+
+## Installation
+
+The installation of this add-on is pretty straightforward and not different in
+comparison to installing any other Hass.io add-on.
+
+1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance.
+1. Install this add-on.
+1. Click the `Save` button to store your configuration.
+1. Start the add-on.
+1. Check the logs of the add-on to see if everything went well.
+1. Carefully configure the add-on to your preferences, see the official documentation for for that.
+
+
+## Configuration
+
+Webui can be found at `:9091`.
+
+
+[repository]: https://github.com/alexbelgium/hassio-addons
diff --git a/transmission/build.json b/transmission/build.json
index 00a28bf95..87b607e48 100644
--- a/transmission/build.json
+++ b/transmission/build.json
@@ -1,11 +1,11 @@
{
- "squash": false,
"build_from": {
- "aarch64": "hassioaddons/base-aarch64:8.0.1",
- "amd64": "hassioaddons/base-amd64:8.0.1",
- "armhf": "hassioaddons/base-armhf:8.0.1",
- "armv7": "hassioaddons/base-armv7:8.0.1",
- "i386": "hassioaddons/base-i386:8.0.1"
+ "armv7": "linuxserver/transmission:arm32v7-3.00-r0-ls69",
+ "armhf": "linuxserver/transmission:arm32v7-3.00-r0-ls69",
+ "aarch64": "linuxserver/code-server:arm64v8-3.00-r0-ls69",
+ "amd64": "linuxserver/code-server:amd64-3.00-r0-ls69"
},
+ "squash": false,
"args": {}
}
+
diff --git a/transmission/config.json b/transmission/config.json
index d34d48e4f..bfca6a7a6 100644
--- a/transmission/config.json
+++ b/transmission/config.json
@@ -1,67 +1,47 @@
{
- "name": "Transmission NAS",
- "version": "1.2",
- "slug": "transmission",
- "description": "The torrent client for Hass.io with OpenVPN support",
- "url": "https://github.com/pierrickrouxel/hassio-addon-transmission",
- "webui": "http://[HOST]:[PORT:9091]/transmission/web/",
- "startup": "services",
- "ingress": "true",
- "ingress_port": 8099,
- "panel_icon": "mdi:progress-download",
- "panel_title": "Transmission",
- "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"],
- "map": [
- "config:rw",
- "share:rw",
- "media:rw",
- "ssl"
- ],
- "boot": "auto",
+ "name": "Transmission",
+ "version": "3.00-r0-ls69",
+ "slug": "transmission",
+ "description": "The torrent client for Hass.io",
+ "url": "https://hub.docker.com/alexbelgium/transmission",
+ "startup": "services",
+ "arch": [
+ "aarch64",
+ "amd64",
+ "armv7",
+ "armhf"
+ ],
"ports": {
- "9091/tcp": null,
+ "9091/tcp": 9091,
"51413/tcp": 51413,
"51413/udp": 51413
},
"ports_description": {
- "9091/tcp": "Web UI port (Not required for Hass.io Ingress)",
+ "9091/tcp": "Web UI port",
"51413/tcp": "Peer port (setup port forwarding to this port)",
"51413/udp": "Peer port (setup port forwarding to this port)"
},
- "privileged": [
- "NET_ADMIN"
- ],
- "devices": [
- "/dev/net/tun:/dev/net/tun:rwm"
- ],
- "privileged": ["SYS_ADMIN", "DAC_READ_SEARCH"],
- "full_access": true,
- "hassio_api": true,
- "homeassistant_api": false,
- "host_network": false,
- "options": {
- "log_level": "info",
- "authentication_required": false,
- "username": "",
- "password": "",
- "localdisks": ["sda1"],
- "openvpn_enabled": false,
- "openvpn_config": "",
- "openvpn_username": "",
- "openvpn_password": ""
- },
- "schema": {
- "log_level": "match(^(trace|debug|info|notice|warning|error|fatal)$)",
- "authentication_required": "bool",
- "username": "str",
- "password": "str",
- "localdisks": ["str"],
- "openvpn_enabled": "bool",
- "openvpn_config": "str",
- "openvpn_username": "str",
- "openvpn_password": "str"
- },
- "environment": {
- "LOG_FORMAT": "{LEVEL}: {MESSAGE}"
- }
+ "map": [
+ "config:rw",
+ "share:rw",
+ "media:rw",
+ "ssl"
+ ],
+ "webui": "http://[HOST]:[PORT:8099]",
+ "boot": "auto",
+ "environment": {
+ "PUID": 0,
+ "PGID": 0
+ },
+ "options": {
+ "PUID": 0,
+ "PGID": 0,
+ "TRANSMISSION_WEB_HOME": "/combustion-release/"
+ },
+ "schema": {
+ "PUID": "int",
+ "PGID": "int",
+ "TRANSMISSION_WEB_HOME": "str?",
+ "TZ": "str?"
}
+}
diff --git a/transmission/DOCS.md b/transmission_nas/DOCS.md
similarity index 100%
rename from transmission/DOCS.md
rename to transmission_nas/DOCS.md
diff --git a/transmission_nas/Dockerfile b/transmission_nas/Dockerfile
new file mode 100644
index 000000000..12187699c
--- /dev/null
+++ b/transmission_nas/Dockerfile
@@ -0,0 +1,59 @@
+ARG BUILD_FROM=hassioaddons/base:8.0.1
+# hadolint ignore=DL3006
+FROM ${BUILD_FROM}
+
+# Copy root filesystem
+COPY rootfs /
+
+# Setup base
+RUN apk add --no-cache \
+ coreutils \
+ nginx \
+ transmission-daemon \
+ openvpn
+# Small hack needed for ingress support
+#
+# Transmission always uses "transmission" as a subdirectory in the URL, so the web interface can for instance be found at:
+#
+# http:///transmission/web/
+#
+# The same goes for the RPC API, which is exposed under /transmission/rpc. When using ingress, this is not the case however
+# and "transmission" directory is not part of the URL. So transmission is basically served under the root (/), e.g.:
+#
+# http://10.0.10.110:8123/api/hassio_ingress/rQEi5X4zJFTmZ82ghplDjsx2AoK3r2lqx0zZHHjZ69Q/
+#
+# As the web UI uses a relative path when resolving the RPC endpoint, it basically becomes:
+#
+# http://10.0.10.110:8123/api/hassio_ingress/rQEi5X4zJFTmZ82ghplDjsx2AoK3r2lqx0zZHHjZ69Q/../rpc
+#
+# which obviously is:
+#
+# http://10.0.10.110:8123/api/hassio_ingress
+#
+# This will not work. The sed statement below changes the way the RPC endpoint is determined by keeping the regular endpoint
+# when accessing transmission as usual, but stripping the relative part when using ingress.
+RUN sed -i 's|'"'"'\.\./rpc'"'"'|window.location.pathname.endsWith("/web/") ? "../rpc" : "rpc"|' /usr/share/transmission/web/javascript/remote.js
+
+# Build arugments
+ARG BUILD_ARCH
+ARG BUILD_DATE
+ARG BUILD_REF
+ARG BUILD_VERSION
+
+# Labels
+LABEL \
+ io.hass.name="Transmission" \
+ io.hass.description="The torrent client for Hass.io with OpenVPN support" \
+ io.hass.arch="${BUILD_ARCH}" \
+ io.hass.type="addon" \
+ io.hass.version=${BUILD_VERSION} \
+ maintainer="Pierrick Rouxel " \
+ org.label-schema.description="The torrent client for Hass.io" \
+ org.label-schema.build-date=${BUILD_DATE} \
+ org.label-schema.name="Transmission" \
+ org.label-schema.schema-version="1.0" \
+ org.label-schema.url="https://github.com/pierrickrouxel" \
+ org.label-schema.usage="https://github.com/pierrickrouxel/hassio-addon-transmission/tree/master/README.md" \
+ org.label-schema.vcs-ref=${BUILD_REF} \
+ org.label-schema.vcs-url="https://github.com/pierrickrouxel" \
+ org.label-schema.vendor="Community Hass.io Addons"
diff --git a/transmission_nas/build.json b/transmission_nas/build.json
new file mode 100644
index 000000000..00a28bf95
--- /dev/null
+++ b/transmission_nas/build.json
@@ -0,0 +1,11 @@
+{
+ "squash": false,
+ "build_from": {
+ "aarch64": "hassioaddons/base-aarch64:8.0.1",
+ "amd64": "hassioaddons/base-amd64:8.0.1",
+ "armhf": "hassioaddons/base-armhf:8.0.1",
+ "armv7": "hassioaddons/base-armv7:8.0.1",
+ "i386": "hassioaddons/base-i386:8.0.1"
+ },
+ "args": {}
+}
diff --git a/transmission_nas/config.json b/transmission_nas/config.json
new file mode 100644
index 000000000..397a1552f
--- /dev/null
+++ b/transmission_nas/config.json
@@ -0,0 +1,67 @@
+{
+ "name": "Transmission NAS",
+ "version": "1.2",
+ "slug": "transmission_nas",
+ "description": "The torrent client for Hass.io with OpenVPN support",
+ "url": "https://github.com/pierrickrouxel/hassio-addon-transmission",
+ "webui": "http://[HOST]:[PORT:9091]/transmission/web/",
+ "startup": "services",
+ "ingress": "true",
+ "ingress_port": 8099,
+ "panel_icon": "mdi:progress-download",
+ "panel_title": "Transmission",
+ "arch": ["armhf", "armv7", "aarch64", "amd64", "i386"],
+ "map": [
+ "config:rw",
+ "share:rw",
+ "media:rw",
+ "ssl"
+ ],
+ "boot": "auto",
+ "ports": {
+ "9091/tcp": null,
+ "51413/tcp": 51413,
+ "51413/udp": 51413
+ },
+ "ports_description": {
+ "9091/tcp": "Web UI port (Not required for Hass.io Ingress)",
+ "51413/tcp": "Peer port (setup port forwarding to this port)",
+ "51413/udp": "Peer port (setup port forwarding to this port)"
+ },
+ "privileged": [
+ "NET_ADMIN"
+ ],
+ "devices": [
+ "/dev/net/tun:/dev/net/tun:rwm"
+ ],
+ "privileged": ["SYS_ADMIN", "DAC_READ_SEARCH"],
+ "full_access": true,
+ "hassio_api": true,
+ "homeassistant_api": false,
+ "host_network": false,
+ "options": {
+ "log_level": "info",
+ "authentication_required": false,
+ "username": "",
+ "password": "",
+ "localdisks": ["sda1"],
+ "openvpn_enabled": false,
+ "openvpn_config": "",
+ "openvpn_username": "",
+ "openvpn_password": ""
+ },
+ "schema": {
+ "log_level": "match(^(trace|debug|info|notice|warning|error|fatal)$)",
+ "authentication_required": "bool",
+ "username": "str",
+ "password": "str",
+ "localdisks": ["str"],
+ "openvpn_enabled": "bool",
+ "openvpn_config": "str",
+ "openvpn_username": "str",
+ "openvpn_password": "str"
+ },
+ "environment": {
+ "LOG_FORMAT": "{LEVEL}: {MESSAGE}"
+ }
+ }
diff --git a/transmission_nas/icon.png b/transmission_nas/icon.png
new file mode 100644
index 000000000..29a6a3cdc
Binary files /dev/null and b/transmission_nas/icon.png differ
diff --git a/transmission_nas/logo.png b/transmission_nas/logo.png
new file mode 100644
index 000000000..524beb6b2
Binary files /dev/null and b/transmission_nas/logo.png differ
diff --git a/transmission/rootfs/etc/cont-init.d/10-requirements.sh b/transmission_nas/rootfs/etc/cont-init.d/10-requirements.sh
similarity index 100%
rename from transmission/rootfs/etc/cont-init.d/10-requirements.sh
rename to transmission_nas/rootfs/etc/cont-init.d/10-requirements.sh
diff --git a/transmission/rootfs/etc/cont-init.d/20-transmission-configuration.sh b/transmission_nas/rootfs/etc/cont-init.d/20-transmission-configuration.sh
similarity index 100%
rename from transmission/rootfs/etc/cont-init.d/20-transmission-configuration.sh
rename to transmission_nas/rootfs/etc/cont-init.d/20-transmission-configuration.sh
diff --git a/transmission/rootfs/etc/cont-init.d/21-openvpn-configuration.sh b/transmission_nas/rootfs/etc/cont-init.d/21-openvpn-configuration.sh
similarity index 100%
rename from transmission/rootfs/etc/cont-init.d/21-openvpn-configuration.sh
rename to transmission_nas/rootfs/etc/cont-init.d/21-openvpn-configuration.sh
diff --git a/transmission/rootfs/etc/cont-init.d/30-nginx.sh b/transmission_nas/rootfs/etc/cont-init.d/30-nginx.sh
similarity index 100%
rename from transmission/rootfs/etc/cont-init.d/30-nginx.sh
rename to transmission_nas/rootfs/etc/cont-init.d/30-nginx.sh
diff --git a/transmission/rootfs/etc/cont-init.d/50-mounts.sh b/transmission_nas/rootfs/etc/cont-init.d/50-mounts.sh
similarity index 100%
rename from transmission/rootfs/etc/cont-init.d/50-mounts.sh
rename to transmission_nas/rootfs/etc/cont-init.d/50-mounts.sh
diff --git a/transmission/rootfs/etc/nginx/includes/mime.types b/transmission_nas/rootfs/etc/nginx/includes/mime.types
similarity index 100%
rename from transmission/rootfs/etc/nginx/includes/mime.types
rename to transmission_nas/rootfs/etc/nginx/includes/mime.types
diff --git a/transmission/rootfs/etc/nginx/includes/proxy_params.conf b/transmission_nas/rootfs/etc/nginx/includes/proxy_params.conf
similarity index 100%
rename from transmission/rootfs/etc/nginx/includes/proxy_params.conf
rename to transmission_nas/rootfs/etc/nginx/includes/proxy_params.conf
diff --git a/transmission/rootfs/etc/nginx/includes/resolver.conf b/transmission_nas/rootfs/etc/nginx/includes/resolver.conf
similarity index 100%
rename from transmission/rootfs/etc/nginx/includes/resolver.conf
rename to transmission_nas/rootfs/etc/nginx/includes/resolver.conf
diff --git a/transmission/rootfs/etc/nginx/includes/server_params.conf b/transmission_nas/rootfs/etc/nginx/includes/server_params.conf
similarity index 100%
rename from transmission/rootfs/etc/nginx/includes/server_params.conf
rename to transmission_nas/rootfs/etc/nginx/includes/server_params.conf
diff --git a/transmission/rootfs/etc/nginx/includes/ssl_params.conf b/transmission_nas/rootfs/etc/nginx/includes/ssl_params.conf
similarity index 100%
rename from transmission/rootfs/etc/nginx/includes/ssl_params.conf
rename to transmission_nas/rootfs/etc/nginx/includes/ssl_params.conf
diff --git a/transmission/rootfs/etc/nginx/includes/upstream.conf b/transmission_nas/rootfs/etc/nginx/includes/upstream.conf
similarity index 100%
rename from transmission/rootfs/etc/nginx/includes/upstream.conf
rename to transmission_nas/rootfs/etc/nginx/includes/upstream.conf
diff --git a/transmission/rootfs/etc/nginx/nginx.conf b/transmission_nas/rootfs/etc/nginx/nginx.conf
similarity index 100%
rename from transmission/rootfs/etc/nginx/nginx.conf
rename to transmission_nas/rootfs/etc/nginx/nginx.conf
diff --git a/transmission/rootfs/etc/nginx/servers/ingress.conf b/transmission_nas/rootfs/etc/nginx/servers/ingress.conf
similarity index 100%
rename from transmission/rootfs/etc/nginx/servers/ingress.conf
rename to transmission_nas/rootfs/etc/nginx/servers/ingress.conf
diff --git a/transmission/rootfs/etc/openvpn/up-transmission.sh b/transmission_nas/rootfs/etc/openvpn/up-transmission.sh
similarity index 100%
rename from transmission/rootfs/etc/openvpn/up-transmission.sh
rename to transmission_nas/rootfs/etc/openvpn/up-transmission.sh
diff --git a/transmission/rootfs/etc/services.d/nginx/finish b/transmission_nas/rootfs/etc/services.d/nginx/finish
similarity index 100%
rename from transmission/rootfs/etc/services.d/nginx/finish
rename to transmission_nas/rootfs/etc/services.d/nginx/finish
diff --git a/transmission/rootfs/etc/services.d/nginx/run b/transmission_nas/rootfs/etc/services.d/nginx/run
similarity index 100%
rename from transmission/rootfs/etc/services.d/nginx/run
rename to transmission_nas/rootfs/etc/services.d/nginx/run
diff --git a/transmission/rootfs/etc/services.d/transmission/finish b/transmission_nas/rootfs/etc/services.d/transmission/finish
similarity index 100%
rename from transmission/rootfs/etc/services.d/transmission/finish
rename to transmission_nas/rootfs/etc/services.d/transmission/finish
diff --git a/transmission/rootfs/etc/services.d/transmission/run b/transmission_nas/rootfs/etc/services.d/transmission/run
similarity index 100%
rename from transmission/rootfs/etc/services.d/transmission/run
rename to transmission_nas/rootfs/etc/services.d/transmission/run